/*============================================================================ 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