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