|
|
|
/*
|
|
|
|
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 <tqmap.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) {}
|
|
|
|
TQCString 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 TQCString& _group = 0,
|
|
|
|
const TQCString& _key = 0)
|
|
|
|
: mGroup(_group), mKey(_key), bLocal(false), bDefault(false),
|
|
|
|
c_key(_key.data()) {}
|
|
|
|
/**
|
|
|
|
* The "group" to which this EntryKey belongs
|
|
|
|
*/
|
|
|
|
TQCString mGroup;
|
|
|
|
/**
|
|
|
|
* The _actual_ key of the entry in question
|
|
|
|
*/
|
|
|
|
TQCString 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 TQMap).
|
|
|
|
* @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 TQMap<KEntryKey, KEntry> KEntryMap;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* \relates KEntry
|
|
|
|
* type for iterating over keys in a KEntryMap in sorted order.
|
|
|
|
* @internal
|
|
|
|
*/
|
|
|
|
typedef TQMap<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 TQMap<KEntryKey, KEntry>::ConstIterator KEntryMapConstIterator;
|
|
|
|
|
|
|
|
#endif
|