#include <string_mapper.h>
Nevrax France
Definition at line 112 of file string_mapper.h.
Public Member Functions | |
TSStringId | add (const std::string &str) |
Globaly map a string into a unique Id. | |
void | clear () |
CStaticStringMapper () | |
TSStringId | emptyId () |
Return the global id for the empty string (helper function). | |
const char * | get (TSStringId stringId) |
Globaly unmap a string. | |
uint32 | getCount () |
void | memoryCompress () |
void | memoryUncompress () |
void | serial (NLMISC::IStream &f, std::vector< TSStringId > &strIdVect) throw (EStream) |
void | serial (NLMISC::IStream &f, TSStringId &strId) throw (EStream) |
~CStaticStringMapper () | |
Private Attributes | |
char * | _AllStrings |
uint32 | _IdCounter |
std::vector< char * > | _IdToStr |
bool | _MemoryCompressed |
std::map< TSStringId, std::string > | _TempIdTable |
std::map< std::string, TSStringId > | _TempStringTable |
|
Definition at line 125 of file string_mapper.h. References _IdCounter, and add().
00126 { 00127 _IdCounter = 0; 00128 _AllStrings = NULL; 00129 _MemoryCompressed = false; 00130 add(""); 00131 } |
|
Definition at line 133 of file string_mapper.h. References clear().
00134 { 00135 clear(); 00136 } |
|
Globaly map a string into a unique Id.
Definition at line 99 of file string_mapper.cpp. References _IdCounter, _TempIdTable, _TempStringTable, nlassert, and NLMISC::TSStringId. Referenced by clear(), and CStaticStringMapper().
00100 { 00101 nlassert(!_MemoryCompressed); 00102 std::map<std::string, TSStringId>::iterator it = _TempStringTable.find(str); 00103 if (it == _TempStringTable.end()) 00104 { 00105 _TempStringTable.insert(pair<string,TSStringId>::pair(str,_IdCounter)); 00106 _TempIdTable.insert(pair<TSStringId,string>::pair(_IdCounter,str)); 00107 _IdCounter++; 00108 return _IdCounter-1; 00109 } 00110 else 00111 { 00112 return it->second; 00113 } 00114 } |
|
Definition at line 185 of file string_mapper.cpp. References _IdCounter, _IdToStr, _TempIdTable, _TempStringTable, add(), and NLMISC::contReset(). Referenced by ~CStaticStringMapper().
00186 { 00187 contReset(_TempStringTable); 00188 contReset(_TempIdTable); 00189 delete [] _AllStrings; 00190 contReset(_IdToStr); 00191 00192 _IdCounter = 0; 00193 _AllStrings = NULL; 00194 _MemoryCompressed = false; 00195 add(""); 00196 } |
|
Return the global id for the empty string (helper function).
Definition at line 147 of file string_mapper.h. References NLMISC::TSStringId.
00147 { return 0; }
|
|
Globaly unmap a string.
Definition at line 167 of file string_mapper.cpp. References _IdToStr, _TempIdTable, nlassert, and NLMISC::TSStringId. Referenced by NLMISC::CPath::getFileList(), NLMISC::CPath::memoryCompress(), and NLMISC::CPath::remapExtension().
00168 { 00169 if (_MemoryCompressed) 00170 { 00171 nlassert(stringId < _IdToStr.size()); 00172 return _IdToStr[stringId]; 00173 } 00174 else 00175 { 00176 std::map<TSStringId, std::string>::iterator it = _TempIdTable.find(stringId); 00177 if (it != _TempIdTable.end()) 00178 return it->second.c_str(); 00179 else 00180 return NULL; 00181 } 00182 } |
|
Definition at line 151 of file string_mapper.h. References _IdCounter, and uint32.
00151 { return _IdCounter; } |
|
Definition at line 135 of file string_mapper.cpp. References _IdToStr, _TempIdTable, _TempStringTable, NLMISC::contReset(), uint, and uint32.
00136 { 00137 _MemoryCompressed = true; 00138 std::map<TSStringId, std::string>::iterator it = _TempIdTable.begin(); 00139 00140 uint nTotalSize = 0; 00141 uint32 nNbStrings = 0; 00142 while (it != _TempIdTable.end()) 00143 { 00144 nTotalSize += it->second.size() + 1; 00145 nNbStrings++; 00146 it++; 00147 } 00148 00149 _AllStrings = new char[nTotalSize]; 00150 _IdToStr.resize(nNbStrings); 00151 nNbStrings = 0; 00152 nTotalSize = 0; 00153 it = _TempIdTable.begin(); 00154 while (it != _TempIdTable.end()) 00155 { 00156 strcpy(_AllStrings + nTotalSize, it->second.c_str()); 00157 _IdToStr[nNbStrings] = _AllStrings + nTotalSize; 00158 nTotalSize += it->second.size() + 1; 00159 nNbStrings++; 00160 it++; 00161 } 00162 contReset(_TempStringTable); 00163 contReset(_TempIdTable); 00164 } |
|
Definition at line 117 of file string_mapper.cpp. References _IdToStr, _TempIdTable, _TempStringTable, NLMISC::contReset(), NLMISC::TSStringId, and uint.
00118 { 00119 std::map<std::string, TSStringId> tempStringTable; 00120 std::map<TSStringId, std::string> tempIdTable; 00121 for(uint k = 0; k < _IdToStr.size(); ++k) 00122 { 00123 tempStringTable[_IdToStr[k]] = (TSStringId) k; 00124 tempIdTable[(TSStringId) k] = _IdToStr[k]; 00125 } 00126 delete [] _AllStrings; 00127 _AllStrings = NULL; 00128 contReset(_IdToStr); 00129 _TempStringTable.swap(tempStringTable); 00130 _TempIdTable.swap(tempIdTable); 00131 _MemoryCompressed = false; 00132 } |
|
Definition at line 215 of file string_mapper.cpp. References uint.
00216 { 00217 std::vector<std::string> vsTmp; 00218 std::string sTmp; 00219 // Serialize class components. 00220 if (f.isReading()) 00221 { 00222 f.serialCont(vsTmp); // FXs played only when attacking and according to the power. 00223 strIdVect.resize(vsTmp.size()); 00224 for(uint i = 0; i < vsTmp.size(); ++i) 00225 strIdVect[i] = add(vsTmp[i]); 00226 } 00227 else 00228 { 00229 vsTmp.resize(strIdVect.size()); 00230 for (uint i = 0; i < vsTmp.size(); ++i) 00231 vsTmp[i] = get(strIdVect[i]); 00232 f.serialCont(vsTmp); // FXs played only when attacking and according to the power. 00233 00234 } 00235 } |
|
Definition at line 199 of file string_mapper.cpp. References NLMISC::TSStringId.
|
|
Definition at line 119 of file string_mapper.h. |
|
Definition at line 118 of file string_mapper.h. Referenced by add(), clear(), CStaticStringMapper(), and getCount(). |
|
Definition at line 120 of file string_mapper.h. Referenced by clear(), get(), memoryCompress(), and memoryUncompress(). |
|
Definition at line 121 of file string_mapper.h. |
|
Definition at line 116 of file string_mapper.h. Referenced by add(), clear(), get(), memoryCompress(), and memoryUncompress(). |
|
Definition at line 115 of file string_mapper.h. Referenced by add(), clear(), memoryCompress(), and memoryUncompress(). |