00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CACCESSOR
00026 #define _CACCESSOR
00027 #include "libMRML/include/uses-declarations.h"
00028 #include <string>
00029 #include <list>
00030 #include "libMRML/include/TID.h"
00031
00032 #ifdef GIFT_MULTI_THREAD
00033 #include <pthread.h>
00034 #endif
00035
00036 #include "libMRML/include/CMutex.h"
00037 #include "libMRML/include/CAccessorElement.h"
00038 class CXMLElement;
00039
00055 class CAccessor{
00056 protected:
00062 virtual void dummy()const;
00063
00064 public:
00070 virtual operator bool()const=0;
00071
00077 virtual string IDToURL(TID inID)const=0;
00083 virtual pair<bool,CAccessorElement> IDToAccessorElement(TID inID)const=0;
00084
00090 virtual pair<bool,TID> URLToID(const string& inURL)const=0;
00091
00100 virtual void getAllIDs(list<TID>&)const=0;
00103 virtual void getAllAccessorElements(list<CAccessorElement>&)const=0;
00108 virtual void getRandomIDs(list<TID>&,
00109 list<TID>::size_type)const=0;
00118 virtual void getRandomAccessorElements(list<CAccessorElement>& outResult,
00119 list<CAccessorElement>::size_type inSize)const=0;
00121 virtual int size()const=0;
00123
00137 virtual CXMLElement* prepareDatabase();
00142 virtual bool isPreparedDatabase()const;
00144
00145 virtual ~CAccessor();
00146 };
00147
00148 #endif