00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _CACCESSOR
00024 #define _CACCESSOR
00025 #include "libMRML/include/uses-declarations.h"
00026 #include <string>
00027 #include <list>
00028 #include "libMRML/include/TID.h"
00029
00030 #ifdef GIFT_MULTI_THREAD
00031 #include <pthread.h>
00032 #endif
00033
00034 #include "libMRML/include/CMutex.h"
00035 #include "libMRML/include/CAccessorElement.h"
00036 class CXMLElement;
00037
00053 class CAccessor{
00054 protected:
00060 virtual void dummy()const;
00061
00062 public:
00068 virtual operator bool()const=0;
00069
00075 virtual string IDToURL(TID inID)const=0;
00081 virtual pair<bool,CAccessorElement> IDToAccessorElement(TID inID)const=0;
00082
00088 virtual pair<bool,TID> URLToID(const string& inURL)const=0;
00089
00098 virtual void getAllIDs(list<TID>&)const=0;
00101 virtual void getAllAccessorElements(list<CAccessorElement>&)const=0;
00106 virtual void getRandomIDs(list<TID>&,
00107 list<TID>::size_type)const=0;
00116 virtual void getRandomAccessorElements(list<CAccessorElement>& outResult,
00117 list<CAccessorElement>::size_type inSize)const=0;
00119 virtual int size()const=0;
00121
00135 virtual CXMLElement* prepareDatabase();
00140 virtual bool isPreparedDatabase()const;
00142
00143 virtual ~CAccessor();
00144 };
00145
00146 #endif