more general string<->value functions
This commit is contained in:
+15
-53
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user