///////////////////////////////////////////////////////////////////////////////
// Name: confbase.h
// Purpose: declaration of the base class of all config implementations
-// (see also: fileconf.h and msw/regconf.h)
+// (see also: fileconf.h and msw/regconf.h and iniconf.h)
// Author: Karsten Ballüder & Vadim Zeitlin
// Modified by:
// Created: 07.04.98 (adapted from appconf.h)
#include "wx/defs.h"
-#ifdef wxUSE_CONFIG
+#if wxUSE_CONFIG
#include "wx/string.h"
#endif
// Style flags for constructor style parameter
-#define wxCONFIG_USE_LOCAL_FILE 1
-#define wxCONFIG_USE_GLOBAL_FILE 2
+enum
+{
+ wxCONFIG_USE_LOCAL_FILE = 1,
+ wxCONFIG_USE_GLOBAL_FILE = 2,
+ wxCONFIG_USE_RELATIVE_PATH = 4
+};
// ----------------------------------------------------------------------------
// various helper global functions
/*
Split path into parts removing '..' in progress
*/
-extern void wxSplitPath(wxArrayString& aParts, const char *sz);
+extern void wxSplitPath(wxArrayString& aParts, const wxChar *sz);
// ----------------------------------------------------------------------------
// abstract base class wxConfigBase which defines the interface for derived
// There is always one current group given by the current path.
//
// 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).
+// (long) type (TODO doubles and other types such as wxDate coming soon).
// ----------------------------------------------------------------------------
-class wxConfigBase
+class WXDLLEXPORT wxConfigBase
{
public:
+ // constants
+ // the type of an entry
+ enum EntryType
+ {
+ Type_Unknown,
+ Type_String,
+ Type_Boolean,
+ Type_Integer, // use Read(long *)
+ Type_Float // use Read(double *)
+ };
+
// static functions
// sets the config object, returns the previous pointer
static wxConfigBase *Set(wxConfigBase *pConfig);
static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; }
// ctor & virtual dtor
- // environment variable expansion is on by default
-// wxConfigBase() { m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; }
-
- // ctor
-
- // Not all args will always be used by derived classes, but
- // including them all in each class ensures compatibility.
- // If appName is empty, uses wxApp name
- wxConfigBase(const wxString& appName = "", const wxString& vendorName = "",
- const wxString& localFilename = "", const wxString& globalFilename = "",
+ // ctor (can be used as default ctor too)
+ //
+ // Not all args will always be used by derived classes, but including
+ // them all in each class ensures compatibility. If appName is empty,
+ // uses wxApp name
+ wxConfigBase(const wxString& appName = wxEmptyString,
+ const wxString& vendorName = wxEmptyString,
+ const wxString& localFilename = wxEmptyString,
+ const wxString& globalFilename = wxEmptyString,
long style = 0);
// empty but ensures that dtor of all derived classes is virtual
bool Exists(const wxString& strName) const
{ return HasGroup(strName) || HasEntry(strName); }
+ // get the entry type
+ virtual EntryType GetEntryType(const wxString& name) const
+ {
+ // by default all entries are strings
+ return HasEntry(name) ? Type_String : Type_Unknown;
+ }
+
// key access: returns TRUE if value was really read, FALSE if default used
// (and if the key is not found the default value is returned.)
// read a string from the key
virtual bool Read(const wxString& key, wxString *pStr) const = 0;
virtual bool Read(const wxString& key, wxString *pStr, const wxString& defVal) const;
- virtual wxString Read(const wxString& key, const wxString& defVal = "") const;
+ virtual wxString Read(const wxString& key, const wxString& defVal = wxEmptyString) const;
virtual bool Read(const wxString& key, long *pl) const = 0;
virtual bool Read(const wxString& key, long *pl, long defVal) const;
// permanently writes all changes
virtual bool Flush(bool bCurrentOnly = FALSE) = 0;
+ // renaming, all functions return FALSE on failure (probably because the new
+ // name is already taken by an existing entry)
+ // rename an entry
+ virtual bool RenameEntry(const wxString& oldName,
+ const wxString& newName) = 0;
+ // rename a group
+ virtual bool RenameGroup(const wxString& oldName,
+ const wxString& newName) = 0;
+
// delete entries/groups
// deletes the specified entry and the group it belongs to if
// it was the last key in it and the second parameter is true
wxString ExpandEnvVars(const wxString& str) const;
// misc accessors
- inline wxString GetAppName() const { return m_appName; }
- inline wxString GetVendorName() const { return m_vendorName; }
+ wxString GetAppName() const { return m_appName; }
+ wxString GetVendorName() const { return m_vendorName; }
- inline void SetAppName(const wxString& appName) { m_appName = appName; }
- inline void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; }
-
- inline void SetStyle(long style) { m_style = style; }
- inline long GetStyle() const { return m_style; }
+ void SetStyle(long style) { m_style = style; }
+ long GetStyle() const { return m_style; }
protected:
static bool IsImmutable(const wxString& key)
#define sm_classwxConfig sm_classwxFileConfig
#endif
-#endif
-
+#endif
+
// wxUSE_CONFIG
#endif