diff --git a/stepmania/src/IniFile.cpp b/stepmania/src/IniFile.cpp index dc6bf615e4..2b8dc0f493 100644 --- a/stepmania/src/IniFile.cpp +++ b/stepmania/src/IniFile.cpp @@ -120,22 +120,6 @@ bool IniFile::WriteFile( RageFileBasic &f ) const return true; } -bool IniFile::GetValue( const RString &keyname, const RString &valuename, RString& value ) const -{ - const XNode* pNode = GetChild( keyname ); - if( pNode == NULL ) - return false; - return pNode->GetAttrValue( valuename, value ); -} - -void IniFile::SetValue( const RString &keyname, const RString &valuename, const RString &value ) -{ - XNode* pNode = GetChild( keyname ); - if( pNode == NULL ) - pNode = AppendChild( keyname ); - pNode->AppendAttr( valuename, value ); -} - bool IniFile::DeleteValue(const RString &keyname, const RString &valuename) { XNode* pNode = GetChild( keyname ); @@ -145,25 +129,6 @@ bool IniFile::DeleteValue(const RString &keyname, const RString &valuename) } -#define TYPE(T) \ - bool IniFile::GetValue( const RString &keyname, const RString &valuename, T &value ) const \ - { \ - RString sValue; \ - if( !GetValue(keyname,valuename,sValue) ) \ - return false; \ - return FromString( sValue, value ); \ - } \ - void IniFile::SetValue( const RString &keyname, const RString &valuename, T value ) \ - { \ - SetValue( keyname, valuename, ToString(value) ); \ - } - -TYPE(int); -TYPE(unsigned); -TYPE(float); -TYPE(bool); - - bool IniFile::DeleteKey(const RString &keyname) { XNode* pNode = GetChild( keyname ); diff --git a/stepmania/src/IniFile.h b/stepmania/src/IniFile.h index a50404cddf..52c51a744e 100644 --- a/stepmania/src/IniFile.h +++ b/stepmania/src/IniFile.h @@ -22,17 +22,22 @@ public: bool WriteFile( const RString &sPath ) const; bool WriteFile( RageFileBasic &sFile ) const; - bool GetValue( const RString &key, const RString &valuename, RString& value ) const; - bool GetValue( const RString &key, const RString &valuename, int& value ) const; - bool GetValue( const RString &key, const RString &valuename, unsigned& value ) const; - bool GetValue( const RString &key, const RString &valuename, float& value ) const; - bool GetValue( const RString &key, const RString &valuename, bool& value ) const; - - void SetValue( const RString &key, const RString &valuename, const RString &value ); - void SetValue( const RString &key, const RString &valuename, int value ); - void SetValue( const RString &key, const RString &valuename, unsigned value ); - void SetValue( const RString &key, const RString &valuename, float value ); - void SetValue( const RString &key, const RString &valuename, bool value ); + template + bool GetValue( const RString &sKey, const RString &sValueName, T& value ) const + { + const XNode* pNode = GetChild( sKey ); + if( pNode == NULL ) + return false; + return pNode->GetAttrValue( sValueName, value ); + } + template + void SetValue( const RString &sKey, const RString &sValueName, const T &value ) + { + XNode* pNode = GetChild( sKey ); + if( pNode == NULL ) + pNode = AppendChild( sKey ); + pNode->AppendAttr( sValueName, value ); + } bool DeleteKey( const RString &keyname ); bool DeleteValue( const RString &keyname, const RString &valuename );