Added: Additional constructor for CSheetId with default type, in case the user did not put the type with the sheet name

This commit is contained in:
kaetemi 2012-06-02 15:21:03 +02:00
parent ea6ede03ba
commit a2c2d78fe8
2 changed files with 15 additions and 10 deletions

View file

@ -60,6 +60,12 @@ public :
*/ */
explicit CSheetId( const std::string& sheetName ); explicit CSheetId( const std::string& sheetName );
/**
* Constructor, uses defaultType as extension when sheetName
* contains no file extension.
*/
explicit CSheetId( const std::string& sheetName, const std::string &defaultType );
// build from a string and returns true if the build succeed // build from a string and returns true if the build succeed
bool buildSheetId(const std::string& sheetName); bool buildSheetId(const std::string& sheetName);

View file

@ -106,6 +106,14 @@ CSheetId::CSheetId( const string& sheetName )
} // CSheetId // } // CSheetId //
CSheetId::CSheetId( const std::string& sheetName, const std::string &defaultType )
{
if (CFile::getExtension(sheetName) == "" && defaultType != "")
*this = CSheetId(sheetName + "." + defaultType);
else
*this = CSheetId(sheetName);
}
//----------------------------------------------- //-----------------------------------------------
// Build // Build
@ -522,16 +530,7 @@ void CSheetId::serialString(NLMISC::IStream &f, const std::string &defaultType)
{ {
std::string sheetName; std::string sheetName;
f.serial(sheetName); f.serial(sheetName);
if (CFile::getExtension(sheetName) == "" && defaultType != "") *this = CSheetId(sheetName, defaultType);
sheetName += std::string(".") + defaultType;
if (!buildSheetId(sheetName))
{
if(sheetName.empty())
nlwarning("SHEETID: Try to create an CSheetId with empty name. TODO: check why.");
else
nlwarning("SHEETID: The sheet '%s' is not in sheet_id.bin, setting it to Unknown",sheetName.c_str());
*this = Unknown;
}
} }
else else
{ {