+size_t wxRegConfig::GetNumberOfEntries(bool bRecursive) const
+{
+ size_t nEntries = 0;
+
+ // dummy vars
+ wxString str;
+ long l;
+ bool bCont = ((wxRegConfig*)this)->GetFirstEntry(str, l);
+ while ( bCont ) {
+ nEntries++;
+
+ bCont = ((wxRegConfig*)this)->GetNextEntry(str, l);
+ }
+
+ return nEntries;
+}
+
+size_t wxRegConfig::GetNumberOfGroups(bool bRecursive) const
+{
+ size_t nGroups = 0;
+
+ // dummy vars
+ wxString str;
+ long l;
+ bool bCont = ((wxRegConfig*)this)->GetFirstGroup(str, l);
+ while ( bCont ) {
+ nGroups++;
+
+ bCont = ((wxRegConfig*)this)->GetNextGroup(str, l);
+ }
+
+ return nGroups;
+}
+
+// ----------------------------------------------------------------------------
+// tests for existence
+// ----------------------------------------------------------------------------
+
+bool wxRegConfig::HasGroup(const wxString& key) const
+{
+ wxConfigPathChanger path(this, key);
+
+ wxString strName(path.Name());
+
+ return m_keyLocal.HasSubKey(strName) || m_keyGlobal.HasSubKey(strName);
+}
+
+bool wxRegConfig::HasEntry(const wxString& key) const
+{
+ wxConfigPathChanger path(this, key);
+
+ wxString strName(path.Name());
+
+ return m_keyLocal.HasValue(strName) || m_keyGlobal.HasValue(strName);
+}
+
+wxConfigBase::EntryType wxRegConfig::GetEntryType(const wxString& key) const
+{
+ wxConfigPathChanger path(this, key);
+
+ wxString strName(path.Name());
+
+ bool isNumeric;
+ if ( m_keyLocal.HasValue(strName) )
+ isNumeric = m_keyLocal.IsNumericValue(strName);
+ else if ( m_keyGlobal.HasValue(strName) )
+ isNumeric = m_keyGlobal.IsNumericValue(strName);
+ else
+ return wxConfigBase::Type_Unknown;
+
+ return isNumeric ? wxConfigBase::Type_Integer : wxConfigBase::Type_String;
+}
+