SVN commit 566423 by braxton: implement hasGroup/hasKey/hasDefault with new KEntryMap::hasEntry() M +14 -29 kconfig.cpp M +3 -0 kconfig.h --- branches/work/kdelibs4_kconfig/kdecore/kconfig/kconfig.cpp #566422:566423 @@ -694,42 +694,27 @@ bool KConfig::hasGroup(const char* aGroup) const { - KEntryKey groupKey(aGroup); - - KEntryMapConstIterator it = entryMap().find(groupKey); - const KEntryMapConstIterator end = entryMap().end(); - - if (it == end) - return false; - - ++it; - for (; it != end; ++it) { - if (it.key().mKey.isEmpty()) - break; - else if (!it.key().bDefault && !it->bDeleted) - return true; - } - - return false; + return entryMap().hasEntry(aGroup); } bool KConfig::hasKey(const char* aKey) const { - KEntryKey key(d->group, aKey); - key.bDefault = readDefaults(); + KEntryMap::SearchFlags flags=0; + if ( readDefaults() ) + flags |= KEntryMap::SearchDefaults; + if (d->bLocaleInitialized && !locale().isEmpty()) + flags |= KEntryMap::SearchLocalized; - const KEntryMapConstIterator end = entryMap().end(); + return entryMap().hasEntry(d->group, aKey, flags); +} - if (!locale().isNull()) { // try the localized key first - key.bLocal = true; - const KEntryMapConstIterator it = entryMap().find(key); - if (it != end && !it->mValue.isNull()) - return true; - key.bLocal = false; - } +bool KConfig::hasDefault(const char* aKey) const +{ + KEntryMap::SearchFlags flags = KEntryMap::SearchDefaults; + if (d->bLocaleInitialized && !locale().isEmpty()) + flags |= KEntryMap::SearchLocalized; - // try the non-localized version - return entryMap().contains(key); + return entryMap().hasEntry(d->group, aKey, flags); } --- branches/work/kdelibs4_kconfig/kdecore/kconfig/kconfig.h #566422:566423 @@ -159,6 +159,7 @@ bool hasGroup(const char* aGroup) const; bool hasKey(const char* aKey) const; + bool hasDefault(const char* aKey) const; void setGroup(const char* aGroup); QByteArray group() const; @@ -197,6 +198,8 @@ { return hasGroup(aGroup.toUtf8().constData()); } inline bool hasKey(const QString& aKey) const { return hasKey(aKey.toUtf8().constData()); } + inline bool hasDefault(const QString& aKey) const + { return hasDefault(aKey.toUtf8().constData());} protected: friend class KConfigGroup;