Warning, /frameworks/kconfig/DESIGN is written in an unsupported language. File is not indexed.

0001 If you add a major new feature, suggest using it in
0002 http://techbase.kde.org/Development/Tutorials/KConfig
0003 
0004 kconfigdata_p.h contains definitions of the data formats used by kconfig.
0005 
0006 Configuration entries are stored as "KEntry". They are indexed with "KEntryKey".
0007 The primary store is a "KEntryMap" which is defined as a std::map from "KEntryKey"
0008 to "KEntry"
0009 
0010 KEntry's are stored in order in the KEntryMap. The most significant sort 
0011 criteria is mGroup. This means that all entries who belong in the same group,
0012 are grouped in the std::map as well.
0013 
0014 The start of a group is indicated with a KEntryKey with an empty mKey and a 
0015 dummy KEntry. This allows us to search for the start of the group and then to 
0016 iterate until we end up in another group. That way we will find all entries
0017 of a certain group.
0018 
0019 Entries that are localised with the _current_ locale are stored with bLocal 
0020 set to true. Entries that are localised with another locale are either not
0021 stored at all (default), or with the localization as part of the key and bRaw
0022 set to true (when reading a file in order to merge it).
0023 
0024 Entries that are being read from a location other than the location to
0025 which is written back are marked as "default" and will be added both as
0026 normal entry as well as an entry with the key marked as default.
0027 
0028 When the configuration is synced to disk, the current on-disk state is re-read
0029 into a temporary map, updated with dirty (modified) entries from the 
0030 current config object's entry map and then written back.
0031 
0032 
0033 Note that there is a subtle difference between revertToDefault() and deleteEntry().
0034 revertToDefault() will change the entry to the default value set by the system 
0035 administrator (Via e.g. $KDEDIR/share/config) or, if no such default was set,
0036 non-existent.
0037 deleteEntry() will make the entry non-existent. If if the system administrator
0038 has specified a default value, the local entry is marked with [$d].
0039 
0040 Entries are marked "immutable" if the key is followed by [$i] (e.g. 'key[$i]=value');
0041 groups are marked "immutable" if the group is followed by [$i] (.e.g '[GroupName][$i]').
0042 An "immutable" entry/group cannot be overriden by the user.
0043 
0044 For more details see docs/options.md.
0045 
0046 
0047 ------------------------------------------------------------------------------
0048 
0049 KConfig XT
0050 ==========
0051 
0052 My buzzword picker offered KConfig XT ("eXtended Technology") and KConfig NG 
0053 ("Next Generation").  Since the planned changes are meant to be evolutionary 
0054 rather than revolutionary, KConfig NG was dropped.
0055 
0056 Goals
0057 =====
0058 
0059 * Have the default value for config entries defined in 1 place. Currently it is
0060 not uncommon to have them defined in three places:
0061   1) In the application that reads the setting in order to use it
0062   2) In the settings dialog when reading the setting
0063   3) In the settings dialog when selecting "Use defaults".
0064 
0065 * Provide type-information about config entries to facilate "KConfEdit" like 
0066 tools. Ideally type-information also includes range-information; this is even
0067 mandatory if enums become an explicit type.
0068 
0069 * Facilitate the documentation of config entries.
0070 
0071 KCoreConfigSkeleton
0072          |
0073          v
0074   KConfigSkeleton           /--< myapp.kcfg
0075          |                 /
0076          |*---------------<
0077          |kconfig_compiler \
0078          |                  \--< myconfig.kcfgc
0079          v
0080      MyConfig <-----KConfigDialogManager----> MyConfigWidget *---< myconfigwidget.ui
0081                                                              uic
0082 
0083 KCoreConfigSkeleton/ base class for deriving classes that store application
0084 KConfigSkeleton:     specific options providing type-safety and single-point
0085                      defaults.
0086 
0087 MyConfig: An application specific class that offers configuration options
0088           to the applications via variables or accessor functions and that
0089           handles type-safety and defaults. MyConfig is just an example
0090           name, the application developer choses the actual name.
0091 
0092 myapp.kcfg: File describing the configuration options used by a specific
0093             application. myapp.kcfg is just an example name, the application
0094             developer choses the actual name.
0095 
0096 myconfig.kcfgc: Implementation specific code generation instructions
0097                 for the MyConfig class. myconfig.kcfgc is
0098                 just an example name, the application developer
0099                 choses the actual name.
0100 
0101 KConfigDialogManager: Class that links widgets in a dialog up with their
0102                       corresponding configuration options in a configuration
0103                       object derived from KConfigSkeleton.
0104 
0105 MyConfigWidget: Dialog generated from a .ui description file. Widget names
0106                 in the dialog that start with "kcfg_" refer to configuration
0107                 options.
0108 
0109 See http://techbase.kde.org/Development/Tutorials/Using_KConfig_XT