Thread: [Zinf-commits] zinf/base/win32/src win32prefs.cpp,1.6,1.7
Brought to you by:
kgk,
mayhemchaos
From: <tim...@us...> - 2003-07-23 20:19:22
|
Update of /cvsroot/zinf/zinf/base/win32/src In directory sc8-pr-cvs1:/tmp/cvs-serv18800/src Modified Files: win32prefs.cpp Log Message: Added C++-style GetPrefString() functions Index: win32prefs.cpp =================================================================== RCS file: /cvsroot/zinf/zinf/base/win32/src/win32prefs.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** win32prefs.cpp 15 Mar 2003 01:01:48 -0000 1.6 --- win32prefs.cpp 23 Jul 2003 20:19:17 -0000 1.7 *************** *** 22,25 **** --- 22,32 ---- ____________________________________________________________________________*/ + // The debugger can't handle symbols more than 255 characters long. + // STL often creates symbols longer than that. + // When symbols are longer than 255 characters, the warning is disabled. + #ifdef WIN32 + #pragma warning(disable:4786) + #endif + #include <stdio.h> #include <assert.h> *************** *** 371,374 **** --- 378,416 ---- return new Win32Prefs(componentName); } + + + Error + Win32Prefs::GetPrefString(const std::string& pref, + std::string& buffer) + { + // Call the c-style version with a stack buffer; if that's + // too small, allocate a temporary buffer instead and retry + char buf[20], *p = buf; + size_t bufSize = sizeof(buf) / sizeof(buf[0]); + + Error ret = GetPrefString(pref.c_str(), p, &bufSize); + if (kError_BufferTooSmall == ret) + { + p = new char[bufSize]; + ret = GetPrefString(pref.c_str(), p, &bufSize); + } + buffer = p; + + // If we had to allocate a temporary buffer, free it + if (p != buf) + { + delete [] p; + } + + return ret; + } + + Error + Win32Prefs::SetPrefString(const std::string& pref, + const std::string& buf) + { + return SetPrefString(pref.c_str(), buf.c_str()); + } + Error |