]> git.saurik.com Git - wxWidgets.git/commitdiff
the base class is now called wxConfigBase, wxConfig is #define'd as
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Aug 1998 23:06:42 +0000 (23:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 2 Aug 1998 23:06:42 +0000 (23:06 +0000)
wx{Reg|Ini|File}Config depending on the platform

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/config.h
include/wx/fileconf.h

index ecb4782ebb3fc76cb2242547e83de2610923e6d8..26650fd4f5e9f166493f3d5ab921303beb202651 100644 (file)
@@ -48,8 +48,9 @@
 #endif
 
 /// should we use registry instead of configuration files under Win32?
-// (i.e. whether wxConfig::Create() will create a wxFileConfig (if it's FALSE) or
-// wxRegConfig (if it's true and we're under Win32) or wxIniConfig (Win16))
+// (i.e. whether wxConfigBase::Create() will create a wxFileConfig (if it's
+//  FALSE) or wxRegConfig (if it's true and we're under Win32) or wxIniConfig
+//  (under Win16))
 #ifndef   wxCONFIG_WIN32_NATIVE
   #define wxCONFIG_WIN32_NATIVE          TRUE
 #endif
@@ -71,7 +72,8 @@ extern wxString wxExpandEnvVars(const wxString &sz);
 extern void wxSplitPath(wxArrayString& aParts, const char *sz);
 
 // ----------------------------------------------------------------------------
-// abstract base class wxConfig which defines the interface for derived classes
+// abstract base class wxConfigBase which defines the interface for derived 
+// classes
 //
 // wxConfig organizes the items in a tree-like structure (modeled after the
 // Unix/Dos filesystem). There are groups (directories) and keys (files).
@@ -80,25 +82,25 @@ extern void wxSplitPath(wxArrayString& aParts, const char *sz);
 // Keys are pairs "key_name = value" where value may be of string or integer
 // (long) type (@@@ doubles and other types such as wxDate coming soon).
 // ----------------------------------------------------------------------------
-class wxConfig
+class wxConfigBase
 {
 public:
   // static functions
     // sets the config object, returns the previous pointer
-  static wxConfig *Set(wxConfig *pConfig);
+  static wxConfigBase *Set(wxConfigBase *pConfig);
     // get the config object, creates it on demand
-  static wxConfig *Get() { if ( !ms_pConfig ) Create(); return ms_pConfig; }
+  static wxConfigBase *Get() { if ( !ms_pConfig ) Create(); return ms_pConfig; }
     // create a new config object: this function will create the "best"
     // implementation of wxConfig available for the current platform, see
     // comments near definition wxCONFIG_WIN32_NATIVE for details. It returns
     // the created object and also sets it as ms_pConfig.
-  static wxConfig *Create();
+  static wxConfigBase *Create();
 
   // ctor & virtual dtor
     // environment variable expansion is on by default
-  wxConfig() { m_bExpandEnvVars = TRUE; }
+  wxConfigBase() { m_bExpandEnvVars = TRUE; }
     // empty but ensures that dtor of all derived classes is virtual
-  virtual ~wxConfig() { }
+  virtual ~wxConfigBase() { }
 
   // path management
     // set current path: if the first character is '/', it's the absolute path,
@@ -111,11 +113,11 @@ public:
   // enumeration: all functions here return false when there are no more items.
   // you must pass the same lIndex to GetNext and GetFirst (don't modify it)
     // enumerate subgroups
-  virtual bool GetFirstGroup(wxString& str, long& lIndex) = 0;
-  virtual bool GetNextGroup (wxString& str, long& lIndex) = 0;
+  virtual bool GetFirstGroup(wxString& str, long& lIndex) const = 0;
+  virtual bool GetNextGroup (wxString& str, long& lIndex) const = 0;
     // enumerate entries
-  virtual bool GetFirstEntry(wxString& str, long& lIndex) = 0;
-  virtual bool GetNextEntry (wxString& str, long& lIndex) = 0;
+  virtual bool GetFirstEntry(wxString& str, long& lIndex) const = 0;
+  virtual bool GetNextEntry (wxString& str, long& lIndex) const = 0;
     // get number of entries/subgroups in the current group, with or without
     // it's subgroups
   virtual uint GetNumberOfEntries(bool bRecursive = FALSE) const = 0;
@@ -190,17 +192,17 @@ protected:
   {
   public:
     // ctor/dtor do path changing/restorin
-    PathChanger(const wxConfig *pContainer, const wxString& strEntry);
+    PathChanger(const wxConfigBase *pContainer, const wxString& strEntry);
    ~PathChanger();
 
     // get the key name
     const wxString& Name() const { return m_strName; }
 
   private:
-    wxConfig *m_pContainer;   // object we live in
-    wxString  m_strName,      // name of entry (i.e. name only)
-              m_strOldPath;   // saved path
-    bool      m_bChanged;     // was the path changed?
+    wxConfigBase *m_pContainer;   // object we live in
+    wxString      m_strName,      // name of entry (i.e. name only)
+                  m_strOldPath;   // saved path
+    bool          m_bChanged;     // was the path changed?
   };
 
 private:
@@ -208,8 +210,22 @@ private:
   bool m_bExpandEnvVars;
 
   // static variables
-  static wxConfig *ms_pConfig;
+  static wxConfigBase *ms_pConfig;
 };
 
-#endif  //_wxCONFIG_H
+// ----------------------------------------------------------------------------
+// the native wxConfigBase implementation
+// ----------------------------------------------------------------------------
+
+// under Windows we prefer to use the native implementation
+#if defined(__WXMSW__) && wxCONFIG_WIN32_NATIVE
+  #ifdef __WIN32__
+    #define wxConfig  wxRegConfig
+  #else  //WIN16
+    #define wxConfig  wxIniConfig
+  #endif
+#else // either we're under Unix or wish to use files even under Windows
+  #define wxConfig  wxFileConfig
+#endif
 
+#endif  //_wxCONFIG_H
\ No newline at end of file
index 5ea1073489ca404fbf389b8d91049b426ec0a534..b7a24d77477861112a035df36adb6038c7613ff5 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        fileconf.h
-// Purpose:     wxFileConfig derivation of wxConfig
+// Purpose:     wxFileConfig derivation of wxConfigBase
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     07.04.98 (adapted from appconf.cpp)
@@ -95,7 +95,7 @@
    IsExpandingEnvVars function).
 */
 
-class wxFileConfig : public wxConfig
+class wxFileConfig : public wxConfigBase
 {
 public:
   // construct the "standard" full name for global (system-wide) and
@@ -130,10 +130,10 @@ public:
   virtual void SetPath(const wxString& strPath);
   virtual const wxString& GetPath() const { return m_strPath; }
 
-  virtual bool GetFirstGroup(wxString& str, long& lIndex);
-  virtual bool GetNextGroup (wxString& str, long& lIndex);
-  virtual bool GetFirstEntry(wxString& str, long& lIndex);
-  virtual bool GetNextEntry (wxString& str, long& lIndex);
+  virtual bool GetFirstGroup(wxString& str, long& lIndex) const;
+  virtual bool GetNextGroup (wxString& str, long& lIndex) const;
+  virtual bool GetFirstEntry(wxString& str, long& lIndex) const;
+  virtual bool GetNextEntry (wxString& str, long& lIndex) const;
 
   virtual uint GetNumberOfEntries(bool bRecursive = FALSE) const;
   virtual uint GetNumberOfGroups(bool bRecursive = FALSE) const;
@@ -147,7 +147,7 @@ public:
                            const char *szDefault = 0) const;
   virtual bool Read(long *pl, const char *szKey, long lDefault) const;
   virtual long Read(const char *szKey, long lDefault) const
-    { return wxConfig::Read(szKey, lDefault); }
+    { return wxConfigBase::Read(szKey, lDefault); }
   virtual bool Write(const char *szKey, const char *szValue);
   virtual bool Write(const char *szKey, long lValue);
   virtual bool Flush(bool bCurrentOnly = FALSE);
@@ -262,15 +262,18 @@ public:
   class ConfigGroup
   {
   private:
-    wxFileConfig *m_pConfig;      // config object we belong to
-    ConfigGroup  *m_pParent;      // parent group (NULL for root group)
-    ArrayEntries  m_aEntries;     // entries in this group
-    ArrayGroups   m_aSubgroups;   // subgroups
-    wxString      m_strName;      // group's name
-    bool          m_bDirty;       // if FALSE => all subgroups are not dirty
-    LineList     *m_pLine;        // pointer to our line in the linked list
-    ConfigEntry  *m_pLastEntry;   // last entry of this group in the local file
-    ConfigGroup  *m_pLastGroup;   // last subgroup
+    wxFileConfig *m_pConfig;        // config object we belong to
+    ConfigGroup  *m_pParent;        // parent group (NULL for root group)
+    ArrayEntries  m_aEntries;       // entries in this group
+    ArrayGroups   m_aSubgroups;     // subgroups
+    wxString      m_strName;        // group's name
+    bool          m_bDirty;         // if FALSE => all subgroups are not dirty
+    LineList     *m_pLine;          // pointer to our line in the linked list
+    ConfigEntry  *m_pLastEntry;     // last entry/subgroup of this group in the
+    ConfigGroup  *m_pLastGroup;     // local file (we insert new ones after it)
+
+    // DeleteSubgroupByName helper
+    bool DeleteSubgroup(ConfigGroup *pGroup);
 
   public:
     // ctor
@@ -294,7 +297,7 @@ public:
     ConfigEntry *FindEntry   (const char *szName) const;
 
     // delete entry/subgroup, return FALSE if doesn't exist
-    bool DeleteSubgroup(const char *szName);
+    bool DeleteSubgroupByName(const char *szName);
     bool DeleteEntry(const char *szName);
 
     // create new entry/subgroup returning pointer to newly created element
@@ -305,17 +308,17 @@ public:
     void SetDirty();
     void SetLine(LineList *pLine);
 
-    // the new entries in this subgroup will be inserted after the last subgroup
-    // or, if there is none, after the last entry
-    void SetLastEntry(ConfigEntry *pLastEntry) { m_pLastEntry = pLastEntry; }
-    void SetLastGroup(ConfigGroup *pLastGroup) { m_pLastGroup = pLastGroup; }
-
+    //
     wxString GetFullName() const;
 
     // get the last line belonging to an entry/subgroup of this group
-    LineList *GetGroupLine();
-    LineList *GetLastEntryLine();
-    LineList *GetLastGroupLine();
+    LineList *GetGroupLine();     // line which contains [group]
+    LineList *GetLastEntryLine(); // after which our subgroups start
+    LineList *GetLastGroupLine(); // after which the next group starts
+
+    // called by entries/subgroups when they're created/deleted
+    void SetLastEntry(ConfigEntry *pEntry) { m_pLastEntry = pEntry; }
+    void SetLastGroup(ConfigGroup *pGroup) { m_pLastGroup = pGroup; }
   };
 };