00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _CACCESSORIMPLEMENTATION
00024 #define _CACCESSORIMPLEMENTATION
00025 #include "libMRML/include/uses-declarations.h"
00026 #include "libMRML/include/CMagic.h"
00027 #include <string>
00028 #include "libMRML/include/TID.h"
00029 #include <iostream>
00030 #include <fstream>
00031 #include <map>
00032
00033 #ifdef HAS_HASH_MAP
00034 #include <hash_map>
00035 #else
00036 #define hash_map map
00037 #endif
00038
00039 #include "libMRML/include/CAccessor.h"
00040 #include "libMRML/include/CAccessorElement.h"
00041
00047 class string_string_map:public map<string,string>{
00048 };
00049
00055 class string_TID_map:public map<string,TID>{
00056 };
00057
00063 class TID_string_map:public map<TID,string>{
00064 };
00070 class TID_CAccessorElement_map:public map<TID,CAccessorElement>{
00071 };
00072
00090 class CAccessorImplementation:public CAccessor{
00091
00092 protected:
00093
00097 string_TID_map mURLToID;
00098
00100 TID_CAccessorElement_map mIDToAccessorElement;
00102
00103 public:
00109 virtual operator bool()const=0;
00110
00116 virtual string IDToURL(TID inID)const;
00122 virtual pair<bool,CAccessorElement> IDToAccessorElement(TID inID)const;
00123
00129 virtual pair<bool,TID> URLToID(const string& inURL)const;
00130
00139 void getAllIDs(list<TID>&)const;
00142 void getAllAccessorElements(list<CAccessorElement>&)const;
00147 void getRandomIDs(list<TID>&,
00148 list<TID>::size_type)const;
00157 void getRandomAccessorElements(list<CAccessorElement>& outResult,
00158 list<CAccessorElement>::size_type inSize)const;
00160 int size()const;
00162
00163 };
00164
00165 #endif