merged optimizations from 2.2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -91,12 +91,12 @@ aStdKeys[] =
|
||||
// ----------------------------------------------------------------------------
|
||||
// macros
|
||||
// ----------------------------------------------------------------------------
|
||||
// @ const_cast<> is not yet supported by all compilers
|
||||
|
||||
// const_cast<> is not yet supported by all compilers
|
||||
#define CONST_CAST ((wxRegKey *)this)->
|
||||
|
||||
#if !USE_MUTABLE
|
||||
#define m_dwLastError CONST_CAST m_dwLastError
|
||||
#endif
|
||||
// and neither is mutable which m_dwLastError should be
|
||||
#define m_dwLastError CONST_CAST m_dwLastError
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// non member functions
|
||||
@@ -186,16 +186,16 @@ wxRegKey::StdKey wxRegKey::GetStdKeyFromHkey(WXHKEY hkey)
|
||||
|
||||
wxRegKey::wxRegKey()
|
||||
{
|
||||
m_hKey = 0;
|
||||
m_hRootKey = (WXHKEY) aStdKeys[HKCR].hkey;
|
||||
m_dwLastError = 0;
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
wxRegKey::wxRegKey(const wxString& strKey) : m_strKey(strKey)
|
||||
{
|
||||
m_hRootKey = (WXHKEY) aStdKeys[ExtractKeyName(m_strKey)].hkey;
|
||||
m_hKey = (WXHKEY) NULL;
|
||||
m_dwLastError = 0;
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
// parent is a predefined (and preopened) key
|
||||
@@ -203,8 +203,8 @@ wxRegKey::wxRegKey(StdKey keyParent, const wxString& strKey) : m_strKey(strKey)
|
||||
{
|
||||
RemoveTrailingSeparator(m_strKey);
|
||||
m_hRootKey = (WXHKEY) aStdKeys[keyParent].hkey;
|
||||
m_hKey = (WXHKEY) NULL;
|
||||
m_dwLastError = 0;
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
// parent is a normal regkey
|
||||
@@ -221,8 +221,8 @@ wxRegKey::wxRegKey(const wxRegKey& keyParent, const wxString& strKey)
|
||||
RemoveTrailingSeparator(m_strKey);
|
||||
|
||||
m_hRootKey = keyParent.m_hRootKey;
|
||||
m_hKey = (WXHKEY) NULL;
|
||||
m_dwLastError = 0;
|
||||
|
||||
Init();
|
||||
}
|
||||
|
||||
// dtor closes the key releasing system resource
|
||||
@@ -260,7 +260,14 @@ void wxRegKey::SetName(const wxRegKey& keyParent, const wxString& strKey)
|
||||
Close();
|
||||
|
||||
// combine our name with parent's to get the full name
|
||||
m_strKey = keyParent.m_strKey;
|
||||
|
||||
// NB: this method is called by wxRegConfig::SetPath() which is a performance
|
||||
// critical function and so it preallocates space for our m_strKey to
|
||||
// gain some speed - this is why we only use += here and not = which
|
||||
// would just free the prealloc'd buffer and would have to realloc it the
|
||||
// next line!
|
||||
m_strKey.clear();
|
||||
m_strKey += keyParent.m_strKey;
|
||||
if ( !strKey.IsEmpty() && strKey[0] != REG_SEPARATOR )
|
||||
m_strKey += REG_SEPARATOR;
|
||||
m_strKey += strKey;
|
||||
@@ -408,16 +415,14 @@ bool wxRegKey::Close()
|
||||
{
|
||||
if ( IsOpened() ) {
|
||||
m_dwLastError = RegCloseKey((HKEY) m_hKey);
|
||||
m_hKey = 0;
|
||||
|
||||
if ( m_dwLastError != ERROR_SUCCESS ) {
|
||||
wxLogSysError(m_dwLastError, _("Can't close registry key '%s'"),
|
||||
GetName().c_str());
|
||||
|
||||
m_hKey = 0;
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
m_hKey = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user