![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: remoteConfigurationMapper.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 *********************************************************************/ 00008 00009 #ifndef DtRemoteConfigurationMapper_H_ 00010 #define DtRemoteConfigurationMapper_H_ 00011 00014 00016 #include "vrfutil/rdrWritr.h" 00017 00018 #include <list> 00019 #include <map> 00020 #include <string> 00021 00022 class DT_DLL_vrfutil DtRemoteConfigurationMapEntry; 00023 class DtObjectType; 00024 class DtEntityIdentifier; 00025 00028 #include "vrfutil/vrfutilDefines.h" 00029 class DT_DLL_vrfutil DtRemoteConfigurationMapper : public DtReaderWriter 00030 { 00031 public: 00032 00035 typedef std::list< std::pair<DtObjectType,DtRemoteConfigurationMapEntry*> > ObjTypeList; 00036 typedef ObjTypeList::iterator ObjTypeIterator; 00037 typedef ObjTypeList::const_iterator const_ObjTypeIterator; 00039 00042 typedef std::map<DtEntityIdentifier,DtRemoteConfigurationMapEntry*> EntIdMap; 00043 typedef EntIdMap::iterator EntIdIterator; 00044 typedef EntIdMap::const_iterator const_EntIdIterator; 00046 00049 typedef std::map<std::string,DtRemoteConfigurationMapEntry*> MarkingTextMap; 00050 typedef MarkingTextMap::iterator MarkingTextIterator; 00051 typedef MarkingTextMap::const_iterator const_MarkingTextIterator; 00053 00055 typedef DtRemoteConfigurationMapEntry* (*CreatorFcn)(); 00056 00057 public: 00059 DtRemoteConfigurationMapper(); 00060 00062 DtRemoteConfigurationMapper(const DtString& name, 00063 DtReaderWriterRegistry* parentRegistry = NULL, 00064 bool readonly = false); 00065 00067 DtRemoteConfigurationMapper(const DtSymbolString& name, 00068 DtReaderWriterRegistry* parentRegistry = NULL, 00069 bool readonly = false); 00070 00072 DtRemoteConfigurationMapper(const DtString& name, 00073 const DtRemoteConfigurationMapper& orig, 00074 DtReaderWriterRegistry* parentRegistry = NULL); 00075 00077 DtRemoteConfigurationMapper(const DtSymbolString& name, 00078 const DtRemoteConfigurationMapper& orig, 00079 DtReaderWriterRegistry* parentRegistry = NULL); 00080 00082 DtRemoteConfigurationMapper& operator=(const DtRemoteConfigurationMapper& orig); 00083 00085 virtual ~DtRemoteConfigurationMapper(); 00086 00087 public: 00088 00097 virtual bool add(DtRemoteConfigurationMapEntry* pEntry); 00098 00100 virtual void clear(); 00101 00103 virtual unsigned count() const; 00104 00106 virtual void copyLists(const DtRemoteConfigurationMapper& orig); 00107 00109 DtRemoteConfigurationMapper::EntIdMap& entityIdentifierMap(); 00110 const DtRemoteConfigurationMapper::EntIdMap& entityIdentifierMap() const; 00111 00113 virtual DtRemoteConfigurationMapEntry* find(const DtEntityIdentifier& id); 00114 virtual const DtRemoteConfigurationMapEntry* find(const DtEntityIdentifier& id) const; 00115 00117 virtual DtRemoteConfigurationMapEntry* find(const DtObjectType& objType); 00118 virtual const DtRemoteConfigurationMapEntry* find(const DtObjectType& objType) const; 00119 00121 virtual DtRemoteConfigurationMapEntry* find(const char* pMarkingText); 00122 virtual const DtRemoteConfigurationMapEntry* find(const char* pMarkingText) const; 00123 00125 DtRemoteConfigurationMapper::ObjTypeList& objectTypeList(); 00126 const DtRemoteConfigurationMapper::ObjTypeList& objectTypeList() const; 00127 00129 DtRemoteConfigurationMapper::MarkingTextMap& markingTextMap(); 00130 const DtRemoteConfigurationMapper::MarkingTextMap& markingTextMap() const; 00131 00133 virtual bool readFile(const DtFilename& fname, const DtFilename& searchPath, 00134 const DtVariableBindingsList& variableBindings); 00135 00141 virtual void remove(DtRemoteConfigurationMapEntry* pEntry, 00142 bool bDelete=true); 00143 00146 DtRemoteConfigurationMapper::CreatorFcn creatorFcn() const; 00147 void setCreatorFcn(DtRemoteConfigurationMapper::CreatorFcn fcn); 00149 00150 protected: 00152 virtual bool addByEntityId(DtRemoteConfigurationMapEntry* pEntry); 00153 00155 virtual bool addByObjectType(DtRemoteConfigurationMapEntry* pEntry); 00156 00158 virtual bool addByMarkingText(DtRemoteConfigurationMapEntry* pEntry); 00159 00164 virtual bool addByOther(DtRemoteConfigurationMapEntry* pEntry); 00165 00166 virtual const DtRemoteConfigurationMapEntry* findBestMatch(const DtObjectType& objtype) const; 00167 00169 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00170 const DtVariableBindingsList& variableBindings); 00171 00173 virtual void putData(FILE *fp, int indentLevel = 0); 00174 00176 virtual void removeByEntityId(DtRemoteConfigurationMapEntry* pEntry, 00177 bool bDelete=true); 00178 00180 virtual void removeByObjectType(DtRemoteConfigurationMapEntry* pEntry, 00181 bool bDelete=true); 00182 00184 virtual void removeByMarkingText(DtRemoteConfigurationMapEntry* pEntry, 00185 bool bDelete=true); 00186 00191 virtual void removeByOther(DtRemoteConfigurationMapEntry* pEntry, 00192 bool bDelete=true); 00193 00194 protected: 00195 EntIdMap myEntityIdMap; 00196 00197 CreatorFcn myEntryCreatorFcn; 00198 00199 ObjTypeList myObjTypeList; 00200 00201 MarkingTextMap myMarkingTextMap; 00202 }; 00203 00204 inline DtRemoteConfigurationMapper::CreatorFcn DtRemoteConfigurationMapper::creatorFcn() const{return (myEntryCreatorFcn);} 00205 inline void DtRemoteConfigurationMapper::setCreatorFcn(DtRemoteConfigurationMapper::CreatorFcn fcn){myEntryCreatorFcn = fcn;} 00206 00207 inline DtRemoteConfigurationMapper::EntIdMap& DtRemoteConfigurationMapper::entityIdentifierMap() 00208 { 00209 return (myEntityIdMap); 00210 } 00211 00212 inline const DtRemoteConfigurationMapper::EntIdMap& DtRemoteConfigurationMapper::entityIdentifierMap() const 00213 { 00214 return (myEntityIdMap); 00215 } 00216 00217 inline DtRemoteConfigurationMapper::ObjTypeList& DtRemoteConfigurationMapper::objectTypeList() 00218 { 00219 return (myObjTypeList); 00220 } 00221 00222 inline const DtRemoteConfigurationMapper::ObjTypeList& DtRemoteConfigurationMapper::objectTypeList() const 00223 { 00224 return (myObjTypeList); 00225 } 00226 00227 inline DtRemoteConfigurationMapper::MarkingTextMap& DtRemoteConfigurationMapper::markingTextMap() 00228 { 00229 return (myMarkingTextMap); 00230 } 00231 00232 inline const DtRemoteConfigurationMapper::MarkingTextMap& DtRemoteConfigurationMapper::markingTextMap() const 00233 { 00234 return (myMarkingTextMap); 00235 } 00236 00237 #endif /* DtRemoteConfigurationMapper_H_ */