| /*============================================================================ |
| KWSys - Kitware System Library |
| Copyright 2000-2009 Kitware, Inc., Insight Software Consortium |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| #ifndef @KWSYS_NAMESPACE@_Registry_hxx |
| #define @KWSYS_NAMESPACE@_Registry_hxx |
| |
| #include <@KWSYS_NAMESPACE@/Configure.h> |
| |
| #include <@KWSYS_NAMESPACE@/stl/string> |
| |
| namespace @KWSYS_NAMESPACE@ |
| { |
| |
| class RegistryHelper; |
| |
| /** \class Registry |
| * \brief Portable registry class |
| * |
| * This class abstracts the storing of data that can be restored |
| * when the program executes again. On Win32 platform it is |
| * implemented using the registry and on unix as a file in |
| * the user's home directory. |
| */ |
| class @KWSYS_NAMESPACE@_EXPORT Registry |
| { |
| public: |
| enum RegistryType |
| { |
| #ifdef _WIN32 |
| WIN32_REGISTRY, |
| #endif |
| FILE_REGISTRY |
| }; |
| |
| #ifdef _WIN32 |
| Registry(RegistryType registryType = WIN32_REGISTRY); |
| #else |
| Registry(RegistryType registryType = FILE_REGISTRY); |
| #endif |
| |
| virtual ~Registry(); |
| |
| //! Read a value from the registry. |
| bool ReadValue(const char *subkey, const char *key, const char **value); |
| |
| //! Delete a key from the registry. |
| bool DeleteKey(const char *subkey, const char *key); |
| |
| //! Delete a value from a given key. |
| bool DeleteValue(const char *subkey, const char *key); |
| |
| //! Set value in a given key. |
| bool SetValue(const char *subkey, const char *key, |
| const char *value); |
| |
| //! Open the registry at toplevel/subkey. |
| bool Open(const char *toplevel, const char *subkey, |
| int readonly); |
| |
| //! Close the registry. |
| bool Close(); |
| |
| //! Read from local or global scope. On Windows this mean from local machine |
| // or local user. On unix this will read from $HOME/.Projectrc or |
| // /etc/Project |
| void GlobalScopeOn() { this->SetGlobalScope(1); } |
| void GlobalScopeOff() { this->SetGlobalScope(0); } |
| void SetGlobalScope(bool b); |
| bool GetGlobalScope(); |
| |
| // Set or get the toplevel registry key. |
| void SetTopLevel(const char* tl); |
| const char* GetTopLevel(); |
| |
| // Return true if registry opened |
| bool GetOpened() { return m_Opened; } |
| |
| // Should the registry be locked? |
| bool GetLocked() { return m_Locked; } |
| |
| enum { |
| READONLY, |
| READWRITE |
| }; |
| |
| // Return true if the character is space. |
| int IsSpace(char c); |
| |
| private: |
| RegistryHelper* Helper; |
| |
| bool m_Opened; |
| |
| bool m_Locked; |
| }; // End Class: Registry |
| |
| } // namespace @KWSYS_NAMESPACE@ |
| |
| #endif |