From: Vadim Zeitlin Date: Sun, 2 Aug 1998 23:06:42 +0000 (+0000) Subject: the base class is now called wxConfigBase, wxConfig is #define'd as X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3bd8df227cc632638995d821b63d087db3605fc6 the base class is now called wxConfigBase, wxConfig is #define'd as 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 --- diff --git a/include/wx/config.h b/include/wx/config.h index ecb4782ebb..26650fd4f5 100644 --- a/include/wx/config.h +++ b/include/wx/config.h @@ -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 diff --git a/include/wx/fileconf.h b/include/wx/fileconf.h index 5ea1073489..b7a24d7747 100644 --- a/include/wx/fileconf.h +++ b/include/wx/fileconf.h @@ -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; } }; };