![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtSharedCigiSettings.h,v $ $Revision: 1.23 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtSharedCigiSettings_H_ 00014 #define DtSharedCigiSettings_H_ 00015 00016 #include <vrvCigi/vrvCigi.h> 00017 #include <vrvCore/DtSharedSettings.h> 00018 #include <vrvCore/DtSettingsBackup.h> 00019 00020 #include <makArchives/DtCigiSettingsRecord.h> 00021 00022 #include <string> 00023 #include <map> 00024 00025 namespace makVrv 00026 { 00027 class DtCigiSettingsBackup; 00028 00036 class DT_DLL_VRVCIGI DtSharedCigiSettings : public DtSharedSettings 00037 { 00038 public: 00039 typedef std::pair<makArchives::DtCigiSettingsRecord*, DtCigiSettingsBackup*> DtCigiSettingsPair; 00040 typedef std::map<std::string, DtCigiSettingsPair> StringToSettingsMap; 00041 00044 friend class DtReadSettingsLock<DtSharedCigiSettings>; 00045 friend class DtWriteSettingsLock<DtSharedCigiSettings>; 00046 friend class DtSharedSettingsManager; 00047 00051 static std::string className(); 00052 00054 virtual ~DtSharedCigiSettings(); 00055 00057 virtual void addCigiSettings(const std::string& settingsName); 00058 00061 virtual void setCigiSettings(const std::string& settingsName, 00062 const makArchives::DtCigiSettingsRecord& record); 00063 00065 virtual void removeCigiSettings(const std::string& settingsName); 00066 00068 virtual void setCurrentSettingsName(const std::string& settingsName); 00069 00071 virtual const makArchives::DtCigiSettingsRecord* currentSettings() const; 00072 00074 virtual const std::string& currentSettingsName() const; 00075 00078 virtual makArchives::DtCigiSettingsRecord* findCigiSettingsByName( 00079 const std::string& settingsName); 00080 00082 virtual const makArchives::DtCigiSettingsRecord* findCigiSettingsByName( 00083 const std::string& settingsName) const; 00084 00086 virtual bool definitionInUse(const std::string& def) const; 00087 00091 virtual const std::string& mapEntityModelDefinition(int entType) const; 00092 00096 virtual const std::string& mapEntityModelSchemaName(int entType) const; 00097 00099 virtual StringToSettingsMap::const_iterator begin() const; 00100 virtual StringToSettingsMap::const_iterator end() const; 00101 00103 virtual unsigned int settingsCount() const; 00104 00107 virtual const std::string& findDatabaseFilename(int databaseNumber); 00108 00111 virtual const std::string& findAnimationName(int animationId); 00112 00115 virtual const std::vector<std::string>& componentStrings( 00116 makArchives::DtCigiComponentClass compClass) const; 00117 00119 virtual const DtSettingsBackup* settingsBackup(const std::string& name) const; 00120 virtual DtSettingsBackup* settingsBackup(const std::string& name); 00121 00122 public: 00124 virtual void addModelStateMapping(int cigiId, int stateId); 00125 00127 virtual void removeModelStateMapping(int cigiId); 00128 00130 virtual void setArtPartMapping(int entType, int cigiId, int disId); 00131 00133 virtual void removeArtPartMapping(int entType, int cigiId); 00134 00136 virtual void addDatabaseMapping(int databaseNumber, const std::string& filename); 00137 00139 virtual void removeDatabaseMapping(int databaseNumber); 00140 00142 virtual void addComponentIdMapping(makArchives::DtCigiComponentClass compClass, 00143 int compId, const std::string& compName); 00144 00147 virtual void removeComponentIdMapping(makArchives::DtCigiComponentClass compClass, 00148 int compId); 00149 00151 virtual void addAnimationMapping(int animationId, const std::string& animationName); 00152 00154 virtual void removeAnimationMapping(int animationId); 00155 00156 public: 00157 00159 virtual void setEntityTypeModelMapping(int entType, 00160 const std::string& modelName, const std::string& schemaName); 00161 00163 virtual void removeEntityTypeModelMapping(int entType); 00164 00166 virtual bool remapEntityType(int oldType, int newType); 00167 00170 virtual bool renameModelDefinition(const std::string& oldName, const std::string& newName, std::vector<std::string>& mappersChanged); 00171 00172 protected: 00173 00175 DtSharedCigiSettings(DtSharedSettingsManager& manager); 00176 00177 protected: 00179 std::string myEmptyMapping; 00180 00181 StringToSettingsMap mySettingsByName; 00182 std::string myCurrentSettingsName; 00183 makArchives::DtCigiSettingsRecord* myCurrentSettings; 00184 std::vector<std::string> myEntityComponentStrings; 00185 std::vector<std::string> myViewComponentStrings; 00186 std::vector<std::string> mySystemComponentStrings; 00187 }; 00188 00191 class DT_DLL_VRVCIGI DtCigiSettingsBackup : public DtSettingsBackup 00192 { 00193 public: 00194 DtCigiSettingsBackup(makArchives::DtCigiSettingsRecord*, const std::string& name); 00195 00196 virtual ~DtCigiSettingsBackup(); 00197 00198 const makArchives::DtCigiSettingsRecord& restoredCigiSettings() const 00199 { 00200 return myRestoredCigiSettings; 00201 } 00202 00203 const makArchives::DtCigiSettingsRecord* cigiSettings() const 00204 { 00205 return myCigiSettings; 00206 } 00207 00208 void setCigiSettings(makArchives::DtCigiSettingsRecord* r) 00209 { 00210 myCigiSettings = r; 00211 } 00212 00213 protected: 00216 virtual void restore(const DtSettingsBackup* from); 00217 00220 virtual std::string backupClassType() const; 00221 00224 virtual DtSettingsBackup* create() const; 00225 00228 virtual void write(boost::archive::xml_oarchive& ar); 00229 00232 virtual void read(boost::archive::xml_iarchive& ar); 00233 00235 virtual std::string backupName() const; 00236 00237 protected: 00238 makArchives::DtCigiSettingsRecord* myCigiSettings; 00239 makArchives::DtCigiSettingsRecord myRestoredCigiSettings; 00240 std::string myName; 00241 }; 00242 } 00243 00244 #endif 00245