00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _CACHIERARCHY
00025 #define _CACHIERARCHY
00026 #include "libGIFTAcHierarchy/include/uses-declarations.h"
00027 #include <list>
00028 #include <map>
00029 #include "libMRML/include/CAccessorImplementation.h"
00030
00031 class CXMLElement;
00032 #include "libMRML/include/CIDRelevanceLevelPairList.h"
00033 #include "libMRML/include/CMutex.h"
00050 class CAcHierarchy:public CAccessorImplementation{
00051 protected:
00053 CMutex mMutexHierarchy;
00055 bool isOK;
00067 typedef list<TID> CPath;
00072 typedef list<TID> CChildren;
00076 CPath mNodeStack;
00081 typedef map<CPath,CChildren> CGraph;
00087 CGraph mEdges;
00094 void init(string inFileName);
00099 void addEdge(const CPath& inFather,
00100 TID inSon);
00101
00102 public:
00115 CAcHierarchy(const CXMLElement& inConfiguration);
00121 CIDRelevanceLevelPairList* getChildren(const CPath& inID)const;
00125 void addElement(TID inID,
00126 string inLocation,
00127 string inThumbnail);
00133 void push(TID inNode);
00140 void popNodeAndRegisterEdge();
00144 operator bool()const;
00145 };
00146
00147 #endif