From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a03384.html | 1902 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1902 insertions(+) create mode 100644 docs/doxygen/nel/a03384.html (limited to 'docs/doxygen/nel/a03384.html') diff --git a/docs/doxygen/nel/a03384.html b/docs/doxygen/nel/a03384.html new file mode 100644 index 00000000..450ae7ad --- /dev/null +++ b/docs/doxygen/nel/a03384.html @@ -0,0 +1,1902 @@ + + +NeL: NLMISC::CSheetId class Reference + + + +
+

NLMISC::CSheetId Class Reference

#include <sheet_id.h> +

+


Detailed Description

+CSheetId

+

Author:
Stephane Coutelas

+Nevrax France

+
Date:
2002
+ +

+ +

+Definition at line 47 of file sheet_id.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

uint32 asInt () const
void build (uint32 shortId, uint8 type)
bool build (const std::string &sheetName)
 CSheetId (const std::string &sheetName)
 CSheetId (uint32 sheetRef=0)
uint32 getShortId () const
uint8 getType () const
bool operator!= (const CSheetId &sheetRef) const
bool operator< (const CSheetId &sheetRef) const
CSheetIdoperator= (uint32 sheetRef)
CSheetIdoperator= (const std::string &sheetName)
CSheetIdoperator= (const CSheetId &sheetId)
bool operator== (const CSheetId &sheetRef) const
void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
std::string toString () const

Static Public Member Functions

void buildIdVector (std::vector< CSheetId > &result, std::vector< std::string > &resultFilenames, const std::string &fileExtension)
void buildIdVector (std::vector< CSheetId > &result, const std::string &fileExtension)
void buildIdVector (std::vector< CSheetId > &result, std::vector< std::string > &resultFilenames, uint8 type)
void buildIdVector (std::vector< CSheetId > &result, uint8 type)
void buildIdVector (std::vector< CSheetId > &result)
void display (uint8 type)
void display ()
const std::string & fileExtensionFromType (uint8 type)
void init (bool removeUnknownSheet=true)
uint32 typeFromFileExtension (const std::string &fileExtension)
void uninit ()

Static Public Attributes

const CSheetId Unknown
 Unknow CSheetId is similar as an NULL pointer.


Static Private Member Functions

void cbFileChange (const std::string &filename)
void loadSheetAlias ()
void loadSheetId ()

Private Attributes

TSheetId _Id

Static Private Attributes

CChar _AllStrings
std::vector< std::string > _FileExtensions
bool _Initialised = false
bool _RemoveUnknownSheet = true
std::map< std::string, uint32_SheetAliasToId
std::map< uint32, std::string > _SheetIdToAlias
CStaticMap< uint32, CChar_SheetIdToName
CStaticMap< CChar, uint32,
+ CCharComp
_SheetNameToId
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + +
NLMISC::CSheetId::CSheetId uint32  sheetRef = 0  )  [inline, explicit]
+
+ + + + + +
+   + + +

+Constructor +

+Definition at line 57 of file sheet_id.h. +

+References NLMISC::CSheetId::TSheetId::Id, and uint32. +

+Referenced by loadSheetAlias(). +

+

00057 { _Id.Id = sheetRef; }
+
+

+ + + + +
+ + + + + + + + + + +
NLMISC::CSheetId::CSheetId const std::string &  sheetName  )  [explicit]
+
+ + + + + +
+   + + +

+Constructor +

+Definition at line 66 of file sheet_id.cpp. +

+References build(), and nlwarning. +

+

00067 {
+00068         if (!build(sheetName))
+00069         {
+00070                 nlwarning("SHEETID: The sheet '%s' is not in sheet_id.bin, setting it to Unknown",sheetName.c_str());
+00071                 *this = Unknown;
+00072         }
+00073 
+00074 } // CSheetId //
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
uint32 NLMISC::CSheetId::asInt  )  const [inline]
+
+ + + + + +
+   + + +

+Return the **whole** sheet id (id+type) +

+Definition at line 83 of file sheet_id.h. +

+References NLMISC::CSheetId::TSheetId::Id, and uint32. +

+Referenced by NLMISC::CHashBySheetId::operator()(), operator<(), and operator=(). +

+

00083 { return _Id.Id; }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CSheetId::build uint32  shortId,
uint8  type
+
+ + + + + +
+   + + +

+ +

+Definition at line 620 of file sheet_id.cpp. +

+References NLMISC::CSheetId::TSheetId::IdInfos, type, uint32, and uint8. +

+

00621 {
+00622         _Id.IdInfos.Id= shortId;
+00623         _Id.IdInfos.Type= type;
+00624 }
+
+

+ + + + +
+ + + + + + + + + + +
bool NLMISC::CSheetId::build const std::string &  sheetName  ) 
+
+ + + + + +
+   + + +

+ +

+Definition at line 81 of file sheet_id.cpp. +

+References _Initialised, _SheetAliasToId, _SheetNameToId, NLMISC::CStaticMap< CChar, uint32, CCharComp >::end(), NLMISC::CStaticMap< CChar, uint32, CCharComp >::find(), NLMISC::CSheetId::TSheetId::Id, nlassert, NLMISC::CSheetId::CChar::Ptr, and NLMISC::strlwr(). +

+Referenced by CSheetId(). +

+

00082 {
+00083         nlassert(_Initialised);
+00084 
+00085         map<string,uint32>::const_iterator itIdAlias;
+00086         
+00087         itIdAlias = _SheetAliasToId.find( strlwr(sheetName) );
+00088         if( itIdAlias != _SheetAliasToId.end() )
+00089         {
+00090                 _Id.Id = (*itIdAlias).second;
+00091                 return true;
+00092         }
+00093         
+00094 
+00095         CStaticMap<CChar,uint32,CCharComp>::const_iterator itId;
+00096         CChar c;
+00097         c.Ptr = new char [sheetName.size()+1];
+00098         strcpy(c.Ptr, sheetName.c_str());
+00099         strlwr(c.Ptr);
+00100 
+00101         itId = _SheetNameToId.find (c);
+00102         delete [] c.Ptr;
+00103         if( itId != _SheetNameToId.end() )
+00104         {
+00105                 _Id.Id = (*itId).second;
+00106                 return true;
+00107         }
+00108         return false;           
+00109         
+00110 }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
void NLMISC::CSheetId::buildIdVector std::vector< CSheetId > &  result,
std::vector< std::string > &  resultFilenames,
const std::string &  fileExtension
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 577 of file sheet_id.cpp. +

+References buildIdVector(), type, typeFromFileExtension(), uint32, and uint8. +

+

00578 {
+00579         uint32 type=typeFromFileExtension(fileExtension);
+00580         if (type!=(uint32)~0)
+00581                 buildIdVector(result,resultFilenames, (uint8)type);
+00582 
+00583 } // buildIdVector //
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CSheetId::buildIdVector std::vector< CSheetId > &  result,
const std::string &  fileExtension
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 565 of file sheet_id.cpp. +

+References buildIdVector(), type, typeFromFileExtension(), uint32, and uint8. +

+

00566 {
+00567         uint32 type=typeFromFileExtension(fileExtension);
+00568         if (type!=(uint32)~0)
+00569                 buildIdVector(result,(uint8)type);
+00570 
+00571 } // buildIdVector //
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
void NLMISC::CSheetId::buildIdVector std::vector< CSheetId > &  result,
std::vector< std::string > &  resultFilenames,
uint8  type
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 540 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< uint32, CChar >::end(), NLMISC::CSheetId::TSheetId::Id, NLMISC::CSheetId::TSheetId::IdInfos, nlassert, type, and uint8. +

+

00541 {
+00542         nlassert(_Initialised);
+00543 
+00544         CStaticMap<uint32,CChar>::const_iterator itStr;
+00545         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00546         {
+00547                 // work out the type value for this entry in the map
+00548                 TSheetId sheetId;
+00549                 sheetId.Id=(*itStr).first;
+00550  
+00551                 // decide whether or not to use the entry
+00552                 if (type==sheetId.IdInfos.Type)
+00553                 {
+00554                         result.push_back( (CSheetId)sheetId.Id );
+00555                         resultFilenames.push_back( (*itStr).second.Ptr );
+00556                 }
+00557         }
+00558 
+00559 } // buildIdVector //
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + +
void NLMISC::CSheetId::buildIdVector std::vector< CSheetId > &  result,
uint8  type
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 516 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< uint32, CChar >::end(), NLMISC::CSheetId::TSheetId::Id, NLMISC::CSheetId::TSheetId::IdInfos, nlassert, type, and uint8. +

+

00517 {
+00518         nlassert(_Initialised);
+00519 
+00520         CStaticMap<uint32,CChar>::const_iterator itStr;
+00521         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00522         {
+00523                 // work out the type value for this entry in the map
+00524                 TSheetId sheetId;
+00525                 sheetId.Id=(*itStr).first;
+00526  
+00527                 // decide whether or not to use the entry
+00528                 if (type==sheetId.IdInfos.Type)
+00529                 {
+00530                         result.push_back( (CSheetId)sheetId.Id );
+00531                 }
+00532         }
+00533 
+00534 } // buildIdVector //
+
+

+ + + + +
+ + + + + + + + + + +
void NLMISC::CSheetId::buildIdVector std::vector< CSheetId > &  result  )  [static]
+
+ + + + + +
+   + + +

+Generate a vector of all the sheet ids of a given type This operation is non-destructive, the new entries are appended to the result vector note: fileExtension *not* include the '.' eg "bla" and *not* ".bla" +

+Definition at line 499 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< uint32, CChar >::end(), and nlassert. +

+Referenced by buildIdVector(), and loadForm(). +

+

00500 {
+00501         nlassert(_Initialised);
+00502 
+00503         CStaticMap<uint32,CChar>::const_iterator itStr;
+00504         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00505         {
+00506                 result.push_back( (CSheetId)(*itStr).first );
+00507         }
+00508 
+00509 } // buildIdVector //
+
+

+ + + + +
+ + + + + + + + + + +
void NLMISC::CSheetId::cbFileChange const std::string &  filename  )  [static, private]
+
+ + + + + +
+   + + +

+ +

+Definition at line 55 of file sheet_id.cpp. +

+References loadSheetId(), and nlinfo. +

+Referenced by init(). +

+

00056 {
+00057         nlinfo ("SHEETID: %s changed, reload it", filename.c_str());
+00058 
+00059         loadSheetId();
+00060 }
+
+

+ + + + +
+ + + + + + + + + + +
void NLMISC::CSheetId::display uint8  type  )  [static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 472 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< uint32, CChar >::end(), NLMISC::CSheetId::TSheetId::Id, NLMISC::CSheetId::TSheetId::IdInfos, nlassert, nlinfo, type, and uint8. +

+

00473 {
+00474         nlassert(_Initialised);
+00475 
+00476         CStaticMap<uint32,CChar>::const_iterator itStr;
+00477         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00478         {
+00479                 // work out the type value for this entry in the map
+00480                 TSheetId sheetId;
+00481                 sheetId.Id=(*itStr).first;
+00482  
+00483                 // decide whether or not to dsiplay the entry
+00484                 if (type==sheetId.IdInfos.Type)
+00485                 {
+00486                         //nlinfo("%d %s",(*itStr).first,(*itStr).second.c_str());
+00487                         nlinfo("SHEETID: (%08x %d) %s",(*itStr).first,(*itStr).first,(*itStr).second.Ptr);
+00488                 }
+00489         }
+00490 
+00491 } // display //
+
+

+ + + + +
+ + + + + + + + + +
void NLMISC::CSheetId::display  )  [static]
+
+ + + + + +
+   + + +

+Display the list of valid sheet ids with their associated file names if (type != -1) then restrict list to given type +

+Definition at line 453 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< uint32, CChar >::end(), nlassert, and nlinfo. +

+

00454 {
+00455         nlassert(_Initialised);
+00456 
+00457         CStaticMap<uint32,CChar>::const_iterator itStr;
+00458         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00459         {
+00460                 //nlinfo("%d %s",(*itStr).first,(*itStr).second.c_str());
+00461                 nlinfo("SHEETID: (%08x %d) %s",(*itStr).first,(*itStr).first,(*itStr).second.Ptr);
+00462         }
+00463 
+00464 } // display //
+
+

+ + + + +
+ + + + + + + + + + +
const std::string & NLMISC::CSheetId::fileExtensionFromType uint8  type  )  [static]
+
+ + + + + +
+   + + +

+Convert between file extensions and numeric sheet types note: fileExtension *not* include the '.' eg "bla" and *not* ".bla" +

+Definition at line 607 of file sheet_id.cpp. +

+References _FileExtensions, _Initialised, nlassert, type, and uint8. +

+

00608 {
+00609         nlassert(_Initialised);
+00610         nlassert(type<256);
+00611 
+00612         return _FileExtensions[type];
+00613 
+00614 } // fileExtensionFromType //
+
+

+ + + + +
+ + + + + + + + + +
uint32 NLMISC::CSheetId::getShortId  )  const [inline]
+
+ + + + + +
+   + + +

+Return the sheet sub id (sub part of the sheetid) +

+Definition at line 93 of file sheet_id.h. +

+References NLMISC::CSheetId::TSheetId::IdInfos, and uint32. +

+

00093 { return _Id.IdInfos.Id; }
+
+

+ + + + +
+ + + + + + + + + + +
uint8 NLMISC::CSheetId::getType void   )  const [inline]
+
+ + + + + +
+   + + +

+Return the sheet type (sub part of the sheetid) +

+Definition at line 88 of file sheet_id.h. +

+References NLMISC::CSheetId::TSheetId::IdInfos, and uint8. +

+

00088 { return _Id.IdInfos.Type; }
+
+

+ + + + +
+ + + + + + + + + + +
void NLMISC::CSheetId::init bool  removeUnknownSheet = true  )  [static]
+
+ + + + + +
+   + + +

+Load the association sheet ref / sheet name +

+Definition at line 304 of file sheet_id.cpp. +

+References _Initialised, _RemoveUnknownSheet, cbFileChange(), loadSheetAlias(), and loadSheetId(). +

+Referenced by loadForm(). +

+

00305 {
+00306         // allow multiple calls to init in case libraries depending on sheetid call this init from their own
+00307         if (_Initialised)
+00308                 return;
+00309 
+00310         CFile::addFileChangeCallback ("sheet_id.bin", cbFileChange);
+00311 
+00312         _RemoveUnknownSheet = removeUnknownSheet;
+00313 
+00314         loadSheetId ();
+00315         _Initialised=true;
+00316         loadSheetAlias ();
+00317 
+00318 
+00319 } // init //
+
+

+ + + + +
+ + + + + + + + + +
void NLMISC::CSheetId::loadSheetAlias  )  [static, private]
+
+ + + + + +
+   + + +

+ +

+Definition at line 236 of file sheet_id.cpp. +

+References _RemoveUnknownSheet, _SheetAliasToId, _SheetIdToAlias, CSheetId(), file, nlinfo, NLMISC::strlwr(), uint, and uint32. +

+Referenced by init(). +

+

00237 {
+00238         // Open the sheet id to sheet alias association
+00239         CIFile file;
+00240         if(file.open(CPath::lookup("alias.packed_sheets", false, false)))
+00241         {
+00242                 // clear entries
+00243                 _SheetIdToAlias.clear ();
+00244                 _SheetAliasToId.clear ();
+00245 
+00246                 // Get the map.
+00247                 uint32 nbEntries;
+00248                 file.serial (nbEntries);
+00249                 file.setVersionException (false, false);
+00250                 uint ver = 1;
+00251                 file.serialVersion(ver);
+00252                 file.serialCont(_SheetIdToAlias);
+00253 
+00254                 // Close the file.
+00255                 file.close();
+00256 
+00257                 if (_RemoveUnknownSheet)
+00258                 {
+00259                   //uint32 nbfiles = _SheetIdToAlias.size();
+00260 
+00261                         // now we remove all files that not available
+00262                         map<uint32,string>::iterator itStr2;
+00263                         for( itStr2 = _SheetIdToAlias.begin(); itStr2 != _SheetIdToAlias.end(); )
+00264                         {
+00265                                 if (CPath::exists (CSheetId((*itStr2).first).toString()))
+00266                                 {
+00267                                         ++itStr2;
+00268                                 }
+00269                                 else
+00270                                 {
+00271                                         map<uint32,string>::iterator olditStr = itStr2;
+00272                                         itStr2++;
+00273                                         _SheetIdToAlias.erase (olditStr);
+00274                                 }
+00275                         }
+00276                 }
+00277 
+00278                 // build the invert map
+00279                 map<uint32,string>::iterator itStr;
+00280                 for( itStr = _SheetIdToAlias.begin(); itStr != _SheetIdToAlias.end(); ++itStr )
+00281                 {
+00282                         // add entry to the inverse map
+00283                         if( !(*itStr).second.empty() )
+00284                         {
+00285                                 _SheetAliasToId.insert( make_pair(strlwr((*itStr).second),(*itStr).first) );
+00286                         }
+00287                         else
+00288                         {
+00289                                 //nlwarning("<CSheetId::loadSheetAlias> The sheet %s doesn't have alias",CSheetId((*itStr).first).toString().c_str());
+00290                         }
+00291                 }
+00292         }
+00293         else
+00294         {
+00295                 nlinfo("SHEETID: Can't open the file alias.packed_sheets");
+00296         }
+00297 }
+
+

+ + + + +
+ + + + + + + + + +
void NLMISC::CSheetId::loadSheetId  )  [static, private]
+
+ + + + + +
+   + + +

+ +

+Definition at line 112 of file sheet_id.cpp. +

+References _AllStrings, _FileExtensions, _RemoveUnknownSheet, _SheetIdToName, _SheetNameToId, NLMISC::CStaticMap< CChar, uint32, CCharComp >::add(), NLMISC::CStaticMap< uint32, CChar >::add(), NLMISC::CStaticMap< uint32, CChar >::begin(), NLMISC::CStaticMap< CChar, uint32, CCharComp >::clear(), NLMISC::CStaticMap< uint32, CChar >::clear(), NLMISC::contReset(), NLMISC::CStaticMap< uint32, CChar >::end(), NLMISC::CStaticMap< CChar, uint32, CCharComp >::endAdd(), file, NLMISC::CSheetId::TSheetId::Id, NLMISC::CSheetId::TSheetId::IdInfos, nlerror, nlinfo, NLMISC::CSheetId::CChar::Ptr, NLMISC::CStaticMap< CChar, uint32, CCharComp >::reserve(), NLMISC::CStaticMap< uint32, CChar >::reserve(), NLMISC::CStaticMap< uint32, CChar >::size(), NLMISC::strlwr(), type, uint32, and uint8. +

+Referenced by cbFileChange(), and init(). +

+

00113 {
+00114         // Open the sheet id to sheet file name association
+00115         CIFile file;
+00116         std::string path = CPath::lookup("sheet_id.bin", false, false);
+00117         if(!path.empty() && file.open(path))
+00118         {
+00119                 // clear entries
+00120                 _FileExtensions.clear ();
+00121                 _SheetIdToName.clear ();
+00122                 _SheetNameToId.clear ();
+00123 
+00124                 // reserve space for the vector of file extensions
+00125                 _FileExtensions.resize(256);
+00126 
+00127                 // Get the map from the file
+00128                 map<uint32,string> tempMap;
+00129                 contReset(tempMap);
+00130                 file.serialCont(tempMap);
+00131                 file.close();
+00132                 
+00133                 if (_RemoveUnknownSheet)
+00134                 {
+00135                         uint32 removednbfiles = 0;
+00136                         uint32 nbfiles = tempMap.size();
+00137                         
+00138                         // now we remove all files that not available
+00139                         map<uint32,string>::iterator itStr2;
+00140                         for( itStr2 = tempMap.begin(); itStr2 != tempMap.end(); )
+00141                         {
+00142                                 if (CPath::exists ((*itStr2).second))
+00143                                 {
+00144                                         ++itStr2;
+00145                                 }
+00146                                 else
+00147                                 {
+00148                                         map<uint32,string>::iterator olditStr = itStr2;
+00149                                         //nldebug ("Removing file '%s' from CSheetId because the file not exists", (*olditStr).second.c_str ());
+00150                                         itStr2++;
+00151                                         tempMap.erase (olditStr);
+00152                                         removednbfiles++;
+00153                                 }
+00154                         }
+00155                         nlinfo ("SHEETID: Removed %d files on %d from CSheetId because these files doesn't exists", removednbfiles, nbfiles);
+00156                 }               
+00157 
+00158                 // Convert the map to one big string and 1 static map (id to name)
+00159                 {
+00160                         // Get the number and size of all strings
+00161                         vector<CChar> tempVec; // Used to initialise the first map
+00162                         uint32 nNb = 0;
+00163                         uint32 nSize = 0;
+00164                         map<uint32,string>::const_iterator it = tempMap.begin();
+00165                         while (it != tempMap.end())
+00166                         {
+00167                                 nSize += it->second.size()+1;
+00168                                 nNb++;
+00169                                 it++;
+00170                         }
+00171 
+00172                         // Make the big string (composed of all strings) and a vector referencing each string
+00173                         tempVec.resize(nNb);
+00174                         _AllStrings.Ptr = new char[nSize];
+00175                         it = tempMap.begin();
+00176                         nSize = 0;
+00177                         nNb = 0;
+00178                         while (it != tempMap.end())
+00179                         {
+00180                                 tempVec[nNb].Ptr = _AllStrings.Ptr+nSize;
+00181                                 strcpy(_AllStrings.Ptr+nSize, it->second.c_str());
+00182                                 strlwr(_AllStrings.Ptr+nSize);
+00183                                 nSize += it->second.size()+1;
+00184                                 nNb++;
+00185                                 it++;
+00186                         }
+00187 
+00188                         // Finally build the static map (id to name)
+00189                         _SheetIdToName.reserve(tempVec.size());
+00190                         it = tempMap.begin();
+00191                         nNb = 0;
+00192                         while (it != tempMap.end())
+00193                         {
+00194                                 _SheetIdToName.add(pair<uint32, CChar>::pair(it->first, CChar(tempVec[nNb])));
+00195 
+00196                                 nNb++;
+00197                                 it++;
+00198                         }
+00199 
+00200                         // The vector of all small string is not needed anymore we have all the info in
+00201                         // the static map and with the pointer AllStrings referencing the beginning.
+00202                 }
+00203 
+00204                 // Build the invert map (Name to Id) & file extension vector
+00205                 {
+00206                         uint32 nSize = _SheetIdToName.size();
+00207                         _SheetNameToId.reserve(nSize);
+00208                         CStaticMap<uint32,CChar>::iterator itStr;
+00209                         for( itStr = _SheetIdToName.begin(); itStr != _SheetIdToName.end(); ++itStr )
+00210                         {
+00211                                 // add entry to the inverse map
+00212                                 _SheetNameToId.add( make_pair((*itStr).second, (*itStr).first) );
+00213 
+00214                                 // work out the type value for this entry in the map
+00215                                 TSheetId sheetId;
+00216                                 sheetId.Id=(*itStr).first;
+00217                                 uint8 type=     sheetId.IdInfos.Type;
+00218  
+00219                                 // check whether we need to add an entry to the file extensions vector
+00220                                 if (_FileExtensions[type].empty())
+00221                                 {
+00222                                         // find the file extension part of the given file name
+00223                                         _FileExtensions[type]=strlwr(CFile::getExtension((*itStr).second.Ptr));
+00224                                 }
+00225                                 nSize--;
+00226                         }
+00227                         _SheetNameToId.endAdd();
+00228                 }
+00229         }
+00230         else
+00231         {
+00232                 nlerror("<CSheetId::init> Can't open the file sheet_id.bin");
+00233         }
+00234 }
+
+

+ + + + +
+ + + + + + + + + + +
bool NLMISC::CSheetId::operator!= const CSheetId sheetRef  )  const [inline]
+
+ + + + + +
+   + + +

+Operator != +

+Definition at line 123 of file sheet_id.h. +

+References _Id, and NLMISC::CSheetId::TSheetId::Id. +

+

00123 { return (_Id.Id != sheetRef._Id.Id) ; }
+
+

+ + + + +
+ + + + + + + + + + +
bool NLMISC::CSheetId::operator< const CSheetId sheetRef  )  const
+
+ + + + + +
+   + + +

+Operator< +

+Definition at line 409 of file sheet_id.cpp. +

+References _Initialised, asInt(), NLMISC::CSheetId::TSheetId::Id, and nlassert. +

+

00410 {
+00411         nlassert(_Initialised);
+00412 
+00413         if (_Id.Id < sheetRef.asInt())
+00414         {
+00415                 return true;
+00416         }
+00417                         
+00418         return false;
+00419 
+00420 } // operator< //
+
+

+ + + + +
+ + + + + + + + + + +
CSheetId & NLMISC::CSheetId::operator= uint32  sheetRef  ) 
+
+ + + + + +
+   + + +

+Operator= +

+Definition at line 393 of file sheet_id.cpp. +

+References _Initialised, NLMISC::CSheetId::TSheetId::Id, nlassert, and uint32. +

+

00394 {
+00395         nlassert(_Initialised);
+00396 
+00397         _Id.Id = sheetRef;
+00398         
+00399         return *this;
+00400 
+00401 } // operator= //
+
+

+ + + + +
+ + + + + + + + + + +
CSheetId & NLMISC::CSheetId::operator= const std::string &  sheetName  ) 
+
+ + + + + +
+   + + +

+Operator= +

+Definition at line 356 of file sheet_id.cpp. +

+References _Initialised, _SheetAliasToId, _SheetNameToId, NLMISC::CStaticMap< CChar, uint32, CCharComp >::end(), NLMISC::CStaticMap< CChar, uint32, CCharComp >::find(), NLMISC::CSheetId::TSheetId::Id, nlassert, NLMISC::CSheetId::CChar::Ptr, and NLMISC::strlwr(). +

+

00357 {
+00358         nlassert(_Initialised);
+00359 
+00360         map<string,uint32>::const_iterator itIdAlias;
+00361         
+00362         itIdAlias = _SheetAliasToId.find( strlwr(sheetName) );
+00363         if( itIdAlias != _SheetAliasToId.end() )
+00364         {
+00365                 _Id.Id = (*itIdAlias).second;
+00366                 return *this;
+00367         }
+00368         
+00369 
+00370         CStaticMap<CChar,uint32,CCharComp>::const_iterator itId;
+00371         CChar c;
+00372         c.Ptr = new char [sheetName.size()+1];
+00373         strcpy(c.Ptr, sheetName.c_str());
+00374         strlwr(c.Ptr);
+00375 
+00376         itId = _SheetNameToId.find (c);
+00377         delete [] c.Ptr;
+00378         if( itId != _SheetNameToId.end() )
+00379         {
+00380                 _Id.Id = (*itId).second;
+00381                 return *this;
+00382         }
+00383         *this = Unknown;
+00384         return *this;
+00385 
+00386 } // operator= //
+
+

+ + + + +
+ + + + + + + + + + +
CSheetId & NLMISC::CSheetId::operator= const CSheetId sheetId  ) 
+
+ + + + + +
+   + + +

+Operator= +

+Definition at line 335 of file sheet_id.cpp. +

+References _Initialised, asInt(), NLMISC::CSheetId::TSheetId::Id, and nlassert. +

+

00336 {
+00337         nlassert(_Initialised);
+00338 
+00339         if(this == &sheetId)
+00340         {
+00341                 return *this;
+00342         }
+00343 
+00344         _Id.Id = sheetId.asInt();
+00345 
+00346     return *this;
+00347 
+00348 
+00349 } // operator= //
+
+

+ + + + +
+ + + + + + + + + + +
bool NLMISC::CSheetId::operator== const CSheetId sheetRef  )  const [inline]
+
+ + + + + +
+   + + +

+Operator== +

+Definition at line 118 of file sheet_id.h. +

+References _Id, and NLMISC::CSheetId::TSheetId::Id. +

+

00118 { return ( _Id.Id == sheetRef._Id.Id) ; }
+
+

+ + + + +
+ + + + + + + + + + +
void NLMISC::CSheetId::serial NLMISC::IStream f  )  throw (NLMISC::EStream) [inline]
+
+ + + + + +
+   + + +

+Serial +

+Definition at line 137 of file sheet_id.h. +

+References NLMISC::CSheetId::TSheetId::Id. +

+

00138         {
+00139                 f.serial( _Id.Id );
+00140         }
+
+

+ + + + +
+ + + + + + + + + +
string NLMISC::CSheetId::toString  )  const
+
+ + + + + +
+   + + +

+Return the sheet id as a string If the sheet id is not found, the returned string is "<Sheet %d not found in sheet_id.bin>" with the id in d +

+Definition at line 428 of file sheet_id.cpp. +

+References _Initialised, _SheetIdToName, NLMISC::CStaticMap< uint32, CChar >::end(), NLMISC::CStaticMap< uint32, CChar >::find(), NLMISC::CSheetId::TSheetId::Id, nlassert, and NLMISC::toString(). +

+

00429 {
+00430         nlassert(_Initialised);
+00431 
+00432         CStaticMap<uint32,CChar>::const_iterator itStr = _SheetIdToName.find (_Id.Id);
+00433         if( itStr != _SheetIdToName.end() )
+00434         {
+00435                 return string((*itStr).second.Ptr);
+00436         }
+00437         else
+00438         {
+00439                 // This nlwarning is commented out because the loggers are mutexed, therefore
+00440                 // you couldn't use toString() within a nlwarning().
+00441                 //nlwarning("<CSheetId::toString> The sheet %08x is not in sheet_id.bin",_Id.Id);
+00442                 return NLMISC::toString( "<Sheet %d not found in sheet_id.bin>", _Id.Id );
+00443         }
+00444 
+00445 } // toString //
+
+

+ + + + +
+ + + + + + + + + + +
uint32 NLMISC::CSheetId::typeFromFileExtension const std::string &  fileExtension  )  [static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 590 of file sheet_id.cpp. +

+References _FileExtensions, _Initialised, nlassert, NLMISC::strlwr(), and uint32. +

+Referenced by buildIdVector(). +

+

00591 {
+00592         nlassert(_Initialised);
+00593 
+00594         unsigned i;
+00595         for (i=0;i<_FileExtensions.size();i++)
+00596                 if (strlwr(fileExtension)==_FileExtensions[i])
+00597                         return i;
+00598 
+00599         return ~0;
+00600 } // typeFromFileExtension //
+
+

+ + + + +
+ + + + + + + + + +
void NLMISC::CSheetId::uninit  )  [static]
+
+ + + + + +
+   + + +

+Remove all allocated memory +

+Definition at line 326 of file sheet_id.cpp. +

+References _AllStrings, and NLMISC::CSheetId::CChar::Ptr. +

+

00327 {
+00328         delete [] _AllStrings.Ptr;
+00329 } // uninit //
+
+


Field Documentation

+

+ + + + +
+ + +
CSheetId::CChar NLMISC::CSheetId::_AllStrings [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 42 of file sheet_id.cpp. +

+Referenced by loadSheetId(), and uninit().

+

+ + + + +
+ + +
vector< std::string > NLMISC::CSheetId::_FileExtensions [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 49 of file sheet_id.cpp. +

+Referenced by fileExtensionFromType(), loadSheetId(), and typeFromFileExtension().

+

+ + + + +
+ + +
TSheetId NLMISC::CSheetId::_Id [private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 181 of file sheet_id.h. +

+Referenced by operator!=(), and operator==().

+

+ + + + +
+ + +
bool NLMISC::CSheetId::_Initialised = false [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 50 of file sheet_id.cpp. +

+Referenced by build(), buildIdVector(), display(), fileExtensionFromType(), init(), operator<(), operator=(), toString(), and typeFromFileExtension().

+

+ + + + +
+ + +
bool NLMISC::CSheetId::_RemoveUnknownSheet = true [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 51 of file sheet_id.cpp. +

+Referenced by init(), loadSheetAlias(), and loadSheetId().

+

+ + + + +
+ + +
map< std::string, uint32 > NLMISC::CSheetId::_SheetAliasToId [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 48 of file sheet_id.cpp. +

+Referenced by build(), loadSheetAlias(), and operator=().

+

+ + + + +
+ + +
map< uint32, std::string > NLMISC::CSheetId::_SheetIdToAlias [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 47 of file sheet_id.cpp. +

+Referenced by loadSheetAlias().

+

+ + + + +
+ + +
CStaticMap< uint32, CSheetId::CChar > NLMISC::CSheetId::_SheetIdToName [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 43 of file sheet_id.cpp. +

+Referenced by buildIdVector(), display(), loadSheetId(), and toString().

+

+ + + + +
+ + +
CStaticMap< CSheetId::CChar, uint32, CSheetId::CCharComp > NLMISC::CSheetId::_SheetNameToId [static, private] +
+
+ + + + + +
+   + + +

+ +

+Definition at line 44 of file sheet_id.cpp. +

+Referenced by build(), loadSheetId(), and operator=().

+

+ + + + +
+ + +
const CSheetId NLMISC::CSheetId::Unknown [static] +
+
+ + + + + +
+   + + +

+Unknow CSheetId is similar as an NULL pointer. +

+

+


The documentation for this class was generated from the following files: +
Generated on Tue Mar 16 13:33:09 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1