diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kdecore/kconfigdata.h | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdecore/kconfigdata.h')
-rw-r--r-- | kdecore/kconfigdata.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/kdecore/kconfigdata.h b/kdecore/kconfigdata.h new file mode 100644 index 000000000..281e8ecd6 --- /dev/null +++ b/kdecore/kconfigdata.h @@ -0,0 +1,146 @@ +/* + This file is part of the KDE libraries + Copyright (c) 1999-2000 Preston Brown <pbrown@kde.org> + Copyright (C) 1996-2000 Matthias Kalle Dalheimer <kalle@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef _KCONFIGDATA_H +#define _KCONFIGDATA_H + +#include <qmap.h> // generic red-black tree class +#include "kdelibs_export.h" + +/** + * map/dict/list config node entry. + * @internal + */ +struct KDECORE_EXPORT KEntry +{ + KEntry() + : mValue(0), bDirty(false), bNLS(false), + bGlobal(false), bImmutable(false), bDeleted(false), bExpand(false) {} + QCString mValue; + /** + * Must the entry be written back to disk? + */ + bool bDirty :1; + /** + * Entry should be written with locale tag + */ + bool bNLS :1; + /** + * Entry should be written to the global config file + */ + bool bGlobal:1; + /** + * Entry can not be modified. + */ + bool bImmutable:1; + /** + * Entry has been deleted. + */ + bool bDeleted:1; + /** + * Whether to apply dollar expansion or not. + */ + bool bExpand:1; +}; + +/** + * key structure holding both the actual key and the the group + * to which it belongs. + * @internal + */ +struct KDECORE_EXPORT KEntryKey +{ + KEntryKey(const QCString& _group = 0, + const QCString& _key = 0) + : mGroup(_group), mKey(_key), bLocal(false), bDefault(false), + c_key(_key.data()) {} + /** + * The "group" to which this EntryKey belongs + */ + QCString mGroup; + /** + * The _actual_ key of the entry in question + */ + QCString mKey; + /** + * Entry is localised or not + */ + bool bLocal :1; + /** + * Entry indicates if this is a default value. + */ + bool bDefault:1; + + const char *c_key; +}; + +/** + * compares two KEntryKeys (needed for QMap). + * @internal + */ +inline bool operator <(const KEntryKey &k1, const KEntryKey &k2) +{ + //saves one strcmp on each call + int result=qstrcmp(k1.mGroup.data(),k2.mGroup.data()); + if (result!=0) + return (result<0); + + if (!k1.c_key && k2.c_key) + return true; + + result = 0; + if (k1.c_key && k2.c_key) + result = strcmp(k1.c_key, k2.c_key); + if (result != 0) + return result < 0; + if (!k1.bLocal && k2.bLocal) + return true; + if (k1.bLocal && !k2.bLocal) + return false; + return (!k1.bDefault && k2.bDefault); +} + +/** + * \relates KEntry + * type specifying a map of entries (key,value pairs). + * The keys are actually a key in a particular config file group together + * with the group name. + * @internal + */ +typedef QMap<KEntryKey, KEntry> KEntryMap; + +/** + * \relates KEntry + * type for iterating over keys in a KEntryMap in sorted order. + * @internal + */ +typedef QMap<KEntryKey, KEntry>::Iterator KEntryMapIterator; + +/** + * \relates KEntry + * type for iterating over keys in a KEntryMap in sorted order. + * It is const, thus you cannot change the entries in the iterator, + * only examine them. + * @internal + */ +typedef QMap<KEntryKey, KEntry>::ConstIterator KEntryMapConstIterator; + +#endif |