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
+16 -54
View File
@@ -124,67 +124,29 @@ bool IniFile::GetValue( const CString &keyname, const CString &valuename, CStrin
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 )
{
keys[keyname][valuename] = value;
return true;
}
bool IniFile::SetValue( const CString &keyname, const CString &valuename, int value )
{
return SetValue( keyname, valuename, ssprintf("%d",value) );
}
#define TYPE(T) \
bool IniFile::GetValue( const CString &keyname, const CString &valuename, T &value ) const \
{ \
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 )
{
return SetValue( keyname, valuename, ssprintf("%u",value) );
}
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) );
}
TYPE(int);
TYPE(unsigned);
TYPE(float);
TYPE(bool);
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
//
+11
View File
@@ -352,6 +352,17 @@ void FixSlashesInPlace( CString &sPath );
CString FixSlashes( CString sPath );
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 function for reading/writing scores