#ifndef HORUS_GRAPHICALMODEL_H #define HORUS_GRAPHICALMODEL_H #include "VarNode.h" #include "Shared.h" using namespace std; struct VariableInfo { VariableInfo (string l, const States& sts) { label = l; states = sts; } string label; States states; }; class GraphicalModel { public: virtual ~GraphicalModel (void) {}; virtual VarNode* getVariableNode (VarId) const = 0; virtual VarNodes getVariableNodes (void) const = 0; virtual void printGraphicalModel (void) const = 0; static void addVariableInformation (VarId vid, string label, const States& states) { assert (varsInfo_.find (vid) == varsInfo_.end()); varsInfo_.insert (make_pair (vid, VariableInfo (label, states))); } static VariableInfo getVariableInformation (VarId vid) { assert (varsInfo_.find (vid) != varsInfo_.end()); return varsInfo_.find (vid)->second; } static bool variablesHaveInformation (void) { return varsInfo_.size() != 0; } static void clearVariablesInformation (void) { varsInfo_.clear(); } private: static unordered_map varsInfo_; }; #endif // HORUS_GRAPHICALMODEL_H