X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23f681ec4840b44e265e6f71beef5a242306220b..74c481d11721fb42343c6b79996478a2ebacde3a:/include/wx/msw/registry.h diff --git a/include/wx/msw/registry.h b/include/wx/msw/registry.h index 1161e2a285..7798473204 100644 --- a/include/wx/msw/registry.h +++ b/include/wx/msw/registry.h @@ -12,19 +12,10 @@ #ifndef _REGISTRY_H #define _REGISTRY_H -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "registry.h" #endif -// ---------------------------------------------------------------------------- -// mutable hack (see also registry.cpp) -// ---------------------------------------------------------------------------- -#if wxUSE_MUTABLE - #define MUTABLE mutable -#else - #define MUTABLE -#endif - // ---------------------------------------------------------------------------- // types used in this module // ---------------------------------------------------------------------------- @@ -41,7 +32,7 @@ typedef unsigned long ulong; // ---------------------------------------------------------------------------- // class wxRegKey encapsulates window HKEY handle // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxRegKey +class WXDLLIMPEXP_BASE wxRegKey { public: // NB: do _not_ change the values of elements in these enumerations! @@ -85,6 +76,13 @@ public: #endif // Win32/16 }; + // access mode for the key + enum AccessMode + { + Read, // read-only + Write // read and write + }; + // information about standard (predefined) registry keys // number of standard keys static const size_t nStdKeys; @@ -108,7 +106,7 @@ public: wxRegKey(StdKey keyParent, const wxString& strKey); // strKey is the name of key under (previously created) keyParent wxRegKey(const wxRegKey& keyParent, const wxString& strKey); - // + // dtor closes the key ~wxRegKey(); // change key (closes the previously opened key if any) @@ -139,17 +137,19 @@ public: // operations on the key itself // explicitly open the key (will be automatically done by all functions // which need the key to be opened if the key is not opened yet) - bool Open(); + bool Open(AccessMode mode = Write); // create the key: will fail if the key already exists and !bOkIfExists bool Create(bool bOkIfExists = TRUE); // rename a value from old name to new one bool RenameValue(const wxChar *szValueOld, const wxChar *szValueNew); + // rename the key + bool Rename(const wxChar *szNewName); // copy value to another key possibly changing its name (by default it will // remain the same) bool CopyValue(const wxChar *szValue, wxRegKey& keyDst, const wxChar *szNewName = NULL); // copy the entire contents of the key recursively to another location - bool Copy(const wxString& strNewName); + bool Copy(const wxChar *szNewName); // same as Copy() but using a key and not the name bool Copy(wxRegKey& keyDst); // close the key (will be automatically done in dtor) @@ -175,19 +175,32 @@ public: wxRegKey& operator=(long lValue) { SetValue(NULL, lValue); return *this; } - // conversion operators query the default value of the key - operator wxString() const; + // query the default value of the key: implicitly or explicitly + wxString QueryDefaultValue() const; + operator wxString() const { return QueryDefaultValue(); } + + // named values // set the string value bool SetValue(const wxChar *szValue, const wxString& strValue); - // return the string value - bool QueryValue(const wxChar *szValue, wxString& strValue) const; + // retrieve the string value + bool QueryValue(const wxChar *szValue, wxString& strValue) const + { return QueryValue(szValue, strValue, FALSE); } + // retrieve raw string value + bool QueryRawValue(const wxChar *szValue, wxString& strValue) const + { return QueryValue(szValue, strValue, TRUE); } + // retrieve either raw or expanded string value + bool QueryValue(const wxChar *szValue, wxString& strValue, bool raw) const; #ifdef __WIN32__ // set the numeric value bool SetValue(const wxChar *szValue, long lValue); // return the numeric value bool QueryValue(const wxChar *szValue, long *plValue) const; + // set the binary value + bool SetValue(const wxChar *szValue, const wxMemoryBuffer& buf); + // return the binary value + bool QueryValue(const wxChar *szValue, wxMemoryBuffer& buf) const; #endif //Win32 // query existence of a key/value @@ -209,7 +222,17 @@ public: bool GetFirstKey (wxString& strKeyName , long& lIndex); bool GetNextKey (wxString& strKeyName , long& lIndex) const; + // for wxRegConfig usage only: preallocate some memory for the name + void ReserveMemoryForName(size_t bytes) { m_strKey.reserve(bytes); } + private: + // common part of all ctors + void Init() + { + m_hKey = (WXHKEY) NULL; + m_dwLastError = 0; + } + // no copy ctor/assignment operator wxRegKey(const wxRegKey& key); // not implemented wxRegKey& operator=(const wxRegKey& key); // not implemented @@ -218,7 +241,7 @@ private: m_hRootKey; // handle of the top key (i.e. StdKey) wxString m_strKey; // key name (relative to m_hRootKey) - MUTABLE long m_dwLastError; // last error (0 if none) + long m_dwLastError; // last error (0 if none) }; #endif //_REGISTRY_H