ConfigGroup * ConfigGroup::FindSubgroup(const wxChar *szName) const { size_t i, lo = 0, hi = m_aSubgroups.Count(); int res; ConfigGroup *pGroup; while ( lo < hi ) { i = (lo + hi)/2; pGroup = m_aSubgroups[i]; #if wxCONFIG_CASE_SENSITIVE res = wxStrcmp(pGroup->Name(), szName); #else res = wxStricmp(pGroup->Name(), szName); #endif if ( res > 0 ) hi = i; else if ( res < 0 ) lo = i + 1; else return pGroup; } return NULL; }
bool wxFileConfig::DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso) { wxConfigPathChanger path(this, key); if ( !m_pCurrentGroup->DeleteEntry(path.Name()) ) return FALSE; if ( bGroupIfEmptyAlso && m_pCurrentGroup->IsEmpty() ) { if ( m_pCurrentGroup != m_pRootGroup ) { ConfigGroup *pGroup = m_pCurrentGroup; SetPath(wxT("..")); // changes m_pCurrentGroup! m_pCurrentGroup->DeleteSubgroupByName(pGroup->Name()); } //else: never delete the root group } return TRUE; }