From 2568bad3cc1ae70350f5ad31e97b4c13194e437e Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Wed, 1 Feb 2012 13:43:47 +0000 Subject: sprintf() begone! Replaced with StringUtils' Printf() git-svn-id: http://mc-server.googlecode.com/svn/trunk@216 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- iniFile/iniFile.cpp | 121 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 100 insertions(+), 21 deletions(-) (limited to 'iniFile/iniFile.cpp') diff --git a/iniFile/iniFile.cpp b/iniFile/iniFile.cpp index d1c15df16..2f99c0c17 100644 --- a/iniFile/iniFile.cpp +++ b/iniFile/iniFile.cpp @@ -38,11 +38,13 @@ using namespace std; #endif #ifndef _WIN32 -#define sprintf_s(buffer, buffer_size, stringbuffer, ...) (sprintf(buffer, stringbuffer, __VA_ARGS__)) -#define vsprintf_s(buffer, stringbuffer, ...) (vsprintf(buffer, stringbuffer, __VA_ARGS__)) #define sscanf_s(buffer, stringbuffer, ...) (sscanf(buffer, stringbuffer, __VA_ARGS__)) #endif + + + + cIniFile::cIniFile( const string iniPath) { Path( iniPath); @@ -115,6 +117,10 @@ bool cIniFile::ReadFile() return false; } + + + + bool cIniFile::WriteFile() { unsigned commentID, keyID, valueID; @@ -148,6 +154,10 @@ bool cIniFile::WriteFile() return true; } + + + + long cIniFile::FindKey( const string & keyname) const { for ( unsigned keyID = 0; keyID < names.size(); ++keyID) @@ -156,6 +166,10 @@ long cIniFile::FindKey( const string & keyname) const return noID; } + + + + long cIniFile::FindValue( unsigned const keyID, const string & valuename) const { if ( !keys.size() || keyID >= keys.size()) @@ -167,6 +181,10 @@ long cIniFile::FindValue( unsigned const keyID, const string & valuename) const return noID; } + + + + unsigned cIniFile::AddKeyName( const string & keyname) { names.resize( names.size() + 1, keyname); @@ -174,6 +192,10 @@ unsigned cIniFile::AddKeyName( const string & keyname) return names.size() - 1; } + + + + string cIniFile::KeyName( unsigned const keyID) const { if ( keyID < names.size()) @@ -182,6 +204,10 @@ string cIniFile::KeyName( unsigned const keyID) const return ""; } + + + + unsigned cIniFile::NumValues( unsigned const keyID) { if ( keyID < keys.size()) @@ -189,6 +215,10 @@ unsigned cIniFile::NumValues( unsigned const keyID) return 0; } + + + + unsigned cIniFile::NumValues( const string & keyname) { long keyID = FindKey( keyname); @@ -197,6 +227,10 @@ unsigned cIniFile::NumValues( const string & keyname) return keys[keyID].names.size(); } + + + + string cIniFile::ValueName( unsigned const keyID, unsigned const valueID) const { if ( keyID < keys.size() && valueID < keys[keyID].names.size()) @@ -204,6 +238,10 @@ string cIniFile::ValueName( unsigned const keyID, unsigned const valueID) const return ""; } + + + + string cIniFile::ValueName( const string & keyname, unsigned const valueID) const { long keyID = FindKey( keyname); @@ -212,6 +250,10 @@ string cIniFile::ValueName( const string & keyname, unsigned const valueID) cons return ValueName( keyID, valueID); } + + + + bool cIniFile::SetValue( unsigned const keyID, unsigned const valueID, const string & value) { if ( keyID < keys.size() && valueID < keys[keyID].names.size()) @@ -220,6 +262,10 @@ bool cIniFile::SetValue( unsigned const keyID, unsigned const valueID, const str return false; } + + + + bool cIniFile::SetValue( const string & keyname, const string & valuename, const string & value, bool const create) { long keyID = FindKey( keyname); @@ -250,33 +296,48 @@ bool cIniFile::SetValue( const string & keyname, const string & valuename, const return true; } + + + + bool cIniFile::SetValueI( const string & keyname, const string & valuename, int const value, bool const create) { - char svalue[MAX_VALUEDATA]; - - sprintf_s( svalue, MAX_VALUEDATA, "%d", value); - return SetValue( keyname, valuename, svalue, create); + AString Data; + Printf(Data, "%d", value); + return SetValue( keyname, valuename, Data, create); } + + + + bool cIniFile::SetValueF( const string & keyname, const string & valuename, double const value, bool const create) { - char svalue[MAX_VALUEDATA]; - - sprintf_s( svalue, MAX_VALUEDATA, "%f", value); - return SetValue( keyname, valuename, svalue, create); + AString Data; + Printf(Data, "%f", value); + return SetValue( keyname, valuename, Data, create); } + + + + bool cIniFile::SetValueV( const string & keyname, const string & valuename, char *format, ...) { va_list args; - char value[MAX_VALUEDATA]; va_start( args, format); - vsprintf_s( value, format, args); + + AString Data; + AppendVPrintf(Data, format, args); va_end( args); - return SetValue( keyname, valuename, value ); + return SetValue( keyname, valuename, Data); } + + + + string cIniFile::GetValue( unsigned const keyID, unsigned const valueID, const string & defValue) const { if ( keyID < keys.size() && valueID < keys[keyID].names.size()) @@ -284,6 +345,10 @@ string cIniFile::GetValue( unsigned const keyID, unsigned const valueID, const s return defValue; } + + + + string cIniFile::GetValue( const string & keyname, const string & valuename, const string & defValue) const { long keyID = FindKey( keyname); @@ -297,22 +362,32 @@ string cIniFile::GetValue( const string & keyname, const string & valuename, con return keys[keyID].values[valueID]; } + + + + int cIniFile::GetValueI(const string & keyname, const string & valuename, int const defValue) const { - char svalue[MAX_VALUEDATA]; - - sprintf_s( svalue, MAX_VALUEDATA, "%d", defValue); - return atoi( GetValue( keyname, valuename, svalue).c_str()); + AString Data; + Printf(Data, "%d", defValue); + return atoi( GetValue( keyname, valuename, Data).c_str()); } + + + + double cIniFile::GetValueF(const string & keyname, const string & valuename, double const defValue) const { - char svalue[MAX_VALUEDATA]; - - sprintf_s( svalue, MAX_VALUEDATA, "%f", defValue); - return atof( GetValue( keyname, valuename, svalue).c_str()); + AString Data; + Printf(Data, "%f", defValue); + return atof( GetValue( keyname, valuename, Data).c_str()); } + + + + // 16 variables may be a bit of over kill, but hey, it's only code. unsigned cIniFile::GetValueV( const string & keyname, const string & valuename, char *format, void *v1, void *v2, void *v3, void *v4, @@ -342,6 +417,10 @@ unsigned cIniFile::GetValueV( const string & keyname, const string & valuename, return nVals; } + + + + bool cIniFile::DeleteValueByID( const unsigned keyID, const unsigned valueID ) { if ( keyID < keys.size() && valueID < keys[keyID].names.size()) -- cgit v1.2.3