00001 #ifndef VariableContainer_H 00002 #define VariableContainer_H 00003 00004 #include <string> 00005 #include <map> 00006 #include "SymbolSet.h" 00007 #include "MObject.h" 00008 #include "IVariableValue.h" 00009 #include "IVariable.h" 00010 #include "MathLib.h" 00011 00012 00013 using namespace std; 00014 using namespace momdp; 00015 00016 namespace momdp 00017 { 00018 00019 template <typename T> class SymbolSetIterator; 00020 00021 class ValueSet 00022 { 00023 public: 00024 ValueSet() 00025 { 00026 00027 } 00028 map<string, SharedPointer<IVariableValue> > vals; 00029 string name; 00030 }; 00031 00032 class VariableContainer : public SymbolSet<ValueSet> 00033 { 00034 private: 00035 00036 public: 00037 typedef SymbolSetIterator<ValueSet> iterator; 00038 00039 VariableContainer(void); 00040 virtual ~VariableContainer(void); 00041 00042 00043 vector<SharedPointer<IVariable> > vars; 00044 virtual void sealAndPopulate(); 00045 00046 virtual int indexOf(map<string, SharedPointer<IVariableValue> >& input); 00047 virtual SharedPointer<SparseVector> getInitialProb(); 00048 // Capacity 00049 // int size() inherited... 00050 00051 }; 00052 } 00053 00054 00055 #endif 00056