![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: disDictionary.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 #pragma once 00015 00016 #include <vrfGuiCore/vrfGuiCore.h> 00017 00018 #include <vrfGuiCore/entityMapperKey.h> 00019 #include <vrfGuiCore/orderedKeyList.h> 00020 00021 #include <map> 00022 #include <string> 00023 00024 namespace makVrf 00025 { 00026 class DT_DLL_VRFGUICORE DtDisEntry 00027 { 00028 public: 00029 DtDisEntry(); 00030 DtDisEntry(const std::string&); 00031 virtual ~DtDisEntry(); 00032 00033 public: 00034 virtual DtDisEntry* addDisEntry(int iVal, const std::string& sVal); 00035 virtual DtDisEntry* find(int iVal); 00036 00037 public: 00038 std::map<int, DtDisEntry*> myEntries; 00039 std::string myValue; 00040 }; 00041 00042 class DT_DLL_VRFGUICORE DtDisEntityTypeEntry : public DtEntityMapperKey 00043 { 00044 public: 00045 DtDisEntityTypeEntry(const DtEntityMapperKey& key) : DtEntityMapperKey(key) {}; 00046 DtDisEntityTypeEntry(const DtDisEntityTypeEntry& orig) 00047 : DtEntityMapperKey(orig) 00048 , myStrings(orig.myStrings) 00049 { 00050 } 00051 00052 void addString(const std::string& str); 00053 const std::vector<std::string>& strings() const; 00054 00055 int& operator[](int i) { return DtEntityMapperKey::operator[](i); }; 00056 const int operator[](int i) const { return DtEntityMapperKey::operator[](i); }; 00057 00058 DtDisEntityTypeEntry* clone() 00059 { 00060 return new DtDisEntityTypeEntry(*this); 00061 } 00062 00063 protected: 00064 std::vector<std::string> myStrings; 00065 }; 00066 00067 class DT_DLL_VRFGUICORE DtDisDictionary 00068 { 00069 public: 00070 DtDisDictionary(); 00071 virtual ~DtDisDictionary(); 00072 00073 virtual bool loadFromFile(const std::string& file); 00074 00075 const DtOrderedKeyList<DtDisEntityTypeEntry*>& enumerationList() const; 00076 DtOrderedKeyList<DtDisEntityTypeEntry*>& enumerationList(); 00077 const DtDisEntry& disEntries() const; 00078 DtDisEntry& disEntries(); 00079 00080 const DtDisEntityTypeEntry* findEntry(const DtEntityMapperKey& entKey) const; 00081 DtDisEntityTypeEntry* findEntry(const DtEntityMapperKey& entKey); 00082 std::string findCountry(int c); 00083 00084 static std::map<int, std::string>& countries(); 00085 00086 protected: 00087 virtual void lineProcessed(int line); 00088 00089 protected: 00090 virtual int countLines(const char*); 00091 00092 protected: 00093 DtDisEntry myDisEntries; 00094 DtOrderedKeyList<DtDisEntityTypeEntry*> myEntityKeys; 00095 static std::map<int, std::string> theCountries; 00096 }; 00097 00098 inline const DtDisEntityTypeEntry* DtDisDictionary::findEntry(const DtEntityMapperKey& entKey) const 00099 { 00100 return myEntityKeys.find(entKey); 00101 } 00102 00103 inline DtDisEntityTypeEntry* DtDisDictionary::findEntry(const DtEntityMapperKey& entKey) 00104 { 00105 return myEntityKeys.find(entKey); 00106 } 00107 00108 inline const DtOrderedKeyList<DtDisEntityTypeEntry*>& DtDisDictionary::enumerationList() const 00109 { 00110 return myEntityKeys; 00111 } 00112 00113 inline DtOrderedKeyList<DtDisEntityTypeEntry*>& DtDisDictionary::enumerationList() 00114 { 00115 return myEntityKeys; 00116 } 00117 00118 inline const DtDisEntry& DtDisDictionary::disEntries() const 00119 { 00120 return myDisEntries; 00121 } 00122 00123 inline DtDisEntry& DtDisDictionary::disEntries() 00124 { 00125 return myDisEntries; 00126 } 00127 00128 inline std::string DtDisDictionary::findCountry(int c) 00129 { 00130 std::map<int, std::string>::const_iterator iter = countries().find(c); 00131 00132 if (iter == countries().end()) 00133 { 00134 return ""; 00135 } 00136 else 00137 { 00138 return iter->second; 00139 } 00140 } 00141 00142 inline void DtDisEntityTypeEntry::addString(const std::string& str) 00143 { 00144 myStrings.push_back(str); 00145 } 00146 00147 inline const std::vector<std::string>& DtDisEntityTypeEntry::strings() const 00148 { 00149 return myStrings; 00150 } 00151 }