00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _KCONFIGDATA_H
00026 #define _KCONFIGDATA_H
00027
00028 #include <map>
00029 #include <string>
00030 using std::map;
00031 using std::string;
00032
00033 namespace config {
00034
00039 struct KEntry
00040 {
00041 KEntry()
00042 : bDirty(false), bNLS(false),
00043 bGlobal(false), bImmutable(false), bDeleted(false), bExpand(false) {}
00044 string mValue;
00045 bool bDirty :1;
00046 bool bNLS :1;
00047 bool bGlobal:1;
00048 bool bImmutable:1;
00049 bool bDeleted:1;
00050 bool bExpand:1;
00051 };
00052
00058 struct KEntryKey
00059 {
00060 KEntryKey(const string& _group = "",
00061 const string& _key = "")
00062 : mGroup(_group), mKey(_key), bLocal(false), bDefault(false),
00063 c_key(_key.c_str()) {}
00064 string mGroup;
00065 string mKey;
00066 bool bLocal :1;
00067 bool bDefault:1;
00068 const char *c_key;
00069 };
00070
00075 inline bool operator <(const KEntryKey &k1, const KEntryKey &k2)
00076 {
00077
00078 int result=strcmp(k1.mGroup.c_str(),k2.mGroup.c_str());
00079 if (result!=0)
00080 return (result<0);
00081
00082 if (!k1.c_key && k2.c_key)
00083 return true;
00084
00085 result = 0;
00086 if (k1.c_key && k2.c_key)
00087 result = strcmp(k1.c_key, k2.c_key);
00088 if (result != 0)
00089 return result < 0;
00090 if (!k1.bLocal && k2.bLocal)
00091 return true;
00092 if (k1.bLocal && !k2.bLocal)
00093 return false;
00094 return (!k1.bDefault && k2.bDefault);
00095 }
00096
00103 typedef map<KEntryKey, KEntry> KEntryMap;
00104
00109
00110 typedef std::map<KEntryKey, KEntry>::iterator KEntryMapIterator;
00111
00118
00119 typedef std::map<KEntryKey, KEntry>::const_iterator KEntryMapConstIterator;
00120
00121 };
00122 #endif