more general string<->value functions

This commit is contained in:
Glenn Maynard
2004-12-07 01:43:06 +00:00
parent d9cfe446ce
commit c37a82ed40
3 changed files with 82 additions and 54 deletions
+15 -53
View File
@@ -124,67 +124,29 @@ bool IniFile::GetValue( const CString &keyname, const CString &valuename, CStrin
return true; return true;
} }
bool IniFile::GetValue(const CString &keyname, const CString &valuename, int& value) const
{
CString sValue;
if( !GetValue(keyname,valuename,sValue) )
return false;
sscanf( sValue.c_str(), "%d", &value );
return true;
}
bool IniFile::GetValue(const CString &keyname, const CString &valuename, unsigned &value) const
{
CString sValue;
if( !GetValue(keyname,valuename,sValue) )
return false;
sscanf( sValue.c_str(), "%u", &value );
return true;
}
bool IniFile::GetValue(const CString &keyname, const CString &valuename, float& value) const
{
CString sValue;
if( !GetValue(keyname,valuename,sValue) )
return false;
value = strtof( sValue, NULL );
return true;
}
bool IniFile::GetValue( const CString &keyname, const CString &valuename, bool& value ) const
{
CString sValue;
if( !GetValue(keyname,valuename,sValue) )
return false;
value = atoi(sValue) != 0;
return true;
}
bool IniFile::SetValue( const CString &keyname, const CString &valuename, const CString &value ) bool IniFile::SetValue( const CString &keyname, const CString &valuename, const CString &value )
{ {
keys[keyname][valuename] = value; keys[keyname][valuename] = value;
return true; return true;
} }
bool IniFile::SetValue( const CString &keyname, const CString &valuename, int value ) #define TYPE(T) \
{ bool IniFile::GetValue( const CString &keyname, const CString &valuename, T &value ) const \
return SetValue( keyname, valuename, ssprintf("%d",value) ); { \
CString sValue; \
if( !GetValue(keyname,valuename,sValue) ) \
return false; \
return FromString( sValue, value ); \
} \
bool IniFile::SetValue( const CString &keyname, const CString &valuename, T value ) \
{ \
return SetValue( keyname, valuename, ToString(value) ); \
} }
bool IniFile::SetValue( const CString &keyname, const CString &valuename, unsigned value ) TYPE(int);
{ TYPE(unsigned);
return SetValue( keyname, valuename, ssprintf("%u",value) ); TYPE(float);
} TYPE(bool);
bool IniFile::SetValue( const CString &keyname, const CString &valuename, float value )
{
return SetValue( keyname, valuename, ssprintf("%f",value) );
}
bool IniFile::SetValue( const CString &keyname, const CString &valuename, bool value )
{
return SetValue( keyname, valuename, ssprintf("%d",value) );
}
bool IniFile::DeleteValue(const CString &keyname, const CString &valuename) bool IniFile::DeleteValue(const CString &keyname, const CString &valuename)
{ {
+55
View File
@@ -1282,6 +1282,61 @@ void CollapsePath( CString &sPath, bool bRemoveLeadingDot )
} }
bool FromString( const CString &sValue, int &out )
{
if( sscanf( sValue.c_str(), "%d", &out ) == 1 )
return true;
out = 0;
return false;
}
bool FromString( const CString &sValue, unsigned &out )
{
if( sscanf( sValue.c_str(), "%u", &out ) == 1 )
return true;
out = 0;
return false;
}
bool FromString( const CString &sValue, float &out )
{
const char *endptr = sValue.data() + sValue.size();
out = strtof( sValue, (char **) &endptr );
return endptr != sValue.data();
}
bool FromString( const CString &sValue, bool &out )
{
if( sValue.size() == 0 )
return false;
out = (atoi(sValue) != 0);
return true;
}
CString ToString( int value )
{
return ssprintf( "%i", value );
}
CString ToString( unsigned value )
{
return ssprintf( "%u", value );
}
CString ToString( float value )
{
return ssprintf( "%f", value );
}
CString ToString( bool value )
{
return ssprintf( "%i", value );
}
// //
// Helper function for reading/writing scores // Helper function for reading/writing scores
// //
+11
View File
@@ -352,6 +352,17 @@ void FixSlashesInPlace( CString &sPath );
CString FixSlashes( CString sPath ); CString FixSlashes( CString sPath );
void CollapsePath( CString &sPath, bool bRemoveLeadingDot=false ); void CollapsePath( CString &sPath, bool bRemoveLeadingDot=false );
bool FromString( const CString &sValue, int &out );
bool FromString( const CString &sValue, unsigned &out );
bool FromString( const CString &sValue, float &out );
bool FromString( const CString &sValue, bool &out );
CString ToString( int value );
CString ToString( unsigned value );
CString ToString( float value );
CString ToString( bool value );
// helper file functions used by Bookkeeper and ProfileManager // helper file functions used by Bookkeeper and ProfileManager
// //
// Helper function for reading/writing scores // Helper function for reading/writing scores