]> git.saurik.com Git - wxWidgets.git/commitdiff
added ReadType convenience functions (patch 1764160)
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 Aug 2007 20:23:01 +0000 (20:23 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 15 Aug 2007 20:23:01 +0000 (20:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48117 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/config.tex
include/wx/confbase.h
tests/config/config.cpp

index 61c2136e6ad62059e227674075e8fed1f7f5c77d..83c1e018246dca37a99b3be997363f36a9a31785 100644 (file)
@@ -53,7 +53,7 @@ Here is how you would typically use this class:
 
   // another example: using default values and the full path instead of just
   // key name: if the key is not found , the value 17 is returned
-  long value = config->Read("/LastRun/CalculatedValues/MaxValue", 17);
+  long value = config->ReadLong("/LastRun/CalculatedValues/MaxValue", 17);
   ...
   ...
   ...
@@ -141,10 +141,10 @@ sensible!):
   conf->Write("../GroupEntry", 2);
   conf->SetPath("..");
 
-  wxASSERT( conf->Read("Subgroup/SubgroupEntry", 0l) == 3 );
+  wxASSERT( conf->ReadLong("Subgroup/SubgroupEntry", 0) == 3 );
 
   // use absolute path: it is allowed, too
-  wxASSERT( conf->Read("/RootEntry", 0l) == 1 );
+  wxASSERT( conf->ReadLong("/RootEntry", 0) == 1 );
 \end{verbatim}
 
 {\it Warning}: it is probably a good idea to always restore the path to its
@@ -174,7 +174,7 @@ doesn't save and restore the path):
     foo(config);
 
     // we're reading "/Foo/Data/Test" here! -1 will probably be returned...
-    wxASSERT( config->Read("Test", -1) == 17 );
+    wxASSERT( config->ReadLong("Test", -1) == 17 );
   }
 \end{verbatim}
 
@@ -670,28 +670,6 @@ not found, {\it l} is not changed.
 Reads a long value, returning \true if the value was found. If the value was
 not found, {\it defaultVal} is used instead.
 
-\constfunc{long }{Read}{\param{const wxString\& }{key}, \param{long}{ defaultVal}}
-
-Reads a long value from the key and returns it. {\it defaultVal} is returned
-if the key is not found.
-
-NB: writing
-
-{\small
-\begin{verbatim}
-    conf->Read("key", 0);
-\end{verbatim}
-}
-
-won't work because the call is ambiguous: compiler can not choose between two
-{\it Read} functions. Instead, write:
-
-{\small
-\begin{verbatim}
-    conf->Read("key", 0l);
-\end{verbatim}
-}
-
 \constfunc{bool}{Read}{\param{const wxString\& }{ key}, \param{double*}{ d}}
 
 Reads a double value, returning \true if the value was found. If the value was
@@ -755,6 +733,39 @@ implements the following methods:\par
 }}
 
 
+\membersection{wxConfigBase::ReadBool}\label{wxconfigbasereadbool}
+
+\constfunc{long }{ReadBool}{\param{const wxString\& }{key}, \param{bool}{ defaultVal}}
+
+Reads a bool value from the key and returns it. {\it defaultVal} is returned
+if the key is not found.
+
+
+\membersection{wxConfigBase::ReadDouble}\label{wxconfigbasereaddouble}
+
+\constfunc{long }{ReadDouble}{\param{const wxString\& }{key}, \param{double}{ defaultVal}}
+
+Reads a double value from the key and returns it. {\it defaultVal} is returned
+if the key is not found.
+
+
+\membersection{wxConfigBase::ReadLong}\label{wxconfigbasereadlong}
+
+\constfunc{long }{ReadLong}{\param{const wxString\& }{key}, \param{long}{ defaultVal}}
+
+Reads a long value from the key and returns it. {\it defaultVal} is returned
+if the key is not found.
+
+
+\membersection{wxConfigBase::ReadObject}\label{wxconfigbasereadobject}
+
+\constfunc{T }{ReadObject}{\param{const wxString\& }{key}, \param{T const&}{ defaultVal}}
+
+Reads a value of type T, for which function
+\helpref{wxFromString}{wxfromstring} is defined, from the key and returns it. 
+{\it defaultVal} is returned if the key is not found.
+
+
 \membersection{wxConfigBase::RenameEntry}\label{wxconfigbaserenameentry}
 
 \func{bool}{RenameEntry}{\param{const wxString\& }{ oldName}, \param{const wxString\& }{ newName}}
index 9d97e49680dd42d34133e322656f33b977d0e13b..30d436b3e4929188e2b833b1e377c68bec3d464b 100644 (file)
@@ -211,8 +211,7 @@ public:
   }
 #endif
 
-  // convenience functions returning directly the value (we don't have them for
-  // int/double/bool as there would be ambiguities with the long one then)
+  // convenience functions returning directly the value 
   wxString Read(const wxString& key,
                 const wxString& defVal = wxEmptyString) const
     { wxString s; (void)Read(key, &s, defVal); return s; }
@@ -226,10 +225,25 @@ public:
     { return Read(key, wxString(defVal)); }
 #endif
 
-  long Read(const wxString& key, long defVal) const
+  long ReadLong(const wxString& key, long defVal) const
     { long l; (void)Read(key, &l, defVal); return l; }
 
-    // write the value (return true on success)
+  double ReadDouble(const wxString& key, double defVal) const
+    { double d; (void)Read(key, &d, defVal); return d; }
+
+  bool ReadBool(const wxString& key, bool defVal) const
+    { bool b; (void)Read(key, &b, defVal); return b; }
+
+  template <typename T>
+  T ReadObject(const wxString& key, T const& defVal) const
+    { T t; (void)Read(key, &t, defVal); return t; }
+
+  // for compatibility with wx 2.8
+  long Read(const wxString& key, long defVal) const
+    { return ReadLong(key, defVal); }
+
+
+  // write the value (return true on success)
   bool Write(const wxString& key, const wxString& value)
     { return DoWriteString(key, value); }
 
index e02693454d8a772a4c3cdef9d5bf31610d7d25db..408d4d7b1159946d7fd81b506f9a003d3dade97d 100644 (file)
@@ -95,19 +95,32 @@ void ConfigTestCase::ReadWriteLocalTest()
     CPPUNIT_ASSERT( r );
     CPPUNIT_ASSERT_EQUAL( long1, 234L );
 
+    CPPUNIT_ASSERT( config->ReadLong(wxT("long1"), 0) == 234 );
+
+    double double1;
+    r = config->Read(wxT("double1"), &double1);
+    CPPUNIT_ASSERT( r );
+    CPPUNIT_ASSERT_EQUAL( double1, 345.67 );
+
+    CPPUNIT_ASSERT( config->ReadDouble(wxT("double1"), 0) == double1 );
+
     bool bool1;
-    r = config->Read(wxT("foo"), &bool1);
+    r = config->Read(wxT("foo"), &bool1); // there is no "foo" key
     CPPUNIT_ASSERT( !r );
 
     r = config->Read(wxT("bool1"), &bool1);
     CPPUNIT_ASSERT( r );
     CPPUNIT_ASSERT_EQUAL( bool1, true );
 
+    CPPUNIT_ASSERT( config->ReadBool(wxT("bool1"), false) == bool1 );
+
     wxColour color1;
     r = config->Read(wxT("color1"), &color1);
     CPPUNIT_ASSERT( r );
     CPPUNIT_ASSERT( color1 == wxColour(11,22,33,44) );
 
+    CPPUNIT_ASSERT( config->ReadObject(wxT("color1"), wxNullColour) == color1 );
+
     config->DeleteAll();
     delete config;
 }