Lumiera  0.pre.03
»edityourfreedom«
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
config-lookup.h File Reference

Go to the source code of this file.

Description

Lookup of configuration keys in a low-level configuration system.

Configuration keys are dynamically stored in a splay tree. This happens for defaults, loaded config files and entries which are set explicitly. The system maintains no central registry of all possible keys. We store here the full keys of config entries as well as the keys of section prefixes. Section prefixes are stored with a trailing dot to disambiguate them from entry keys.

Warning
since 2012 it is not clear if we retain this kind of configuration system.
Todo:
as of 2016, the code is still there but remains mostly unused

Definition in file config-lookup.h.

#include "lib/psplay.h"
#include "lib/llist.h"
#include "lib/error.h"
#include "common/configitem.h"
#include <nobug.h>

Classes

struct  lumiera_config_lookup
 Just contains a hashtable to give sufficient abstraction. More...
 
struct  lumiera_config_lookupentry
 

Typedefs

typedef lumiera_config_lookup * LumieraConfigLookup
 
typedef
lumiera_config_lookupentry * 
LumieraConfigLookupentry
 

Functions

LumieraConfigLookup lumiera_config_lookup_destroy (LumieraConfigLookup self)
 Destroy a lookup structure. More...
 
LumieraConfigLookupentry lumiera_config_lookup_find (LumieraConfigLookup self, const char *key)
 Find a hashtable entry in the lookup structure. More...
 
LumieraConfigLookup lumiera_config_lookup_init (LumieraConfigLookup self)
 Initialise a lookup structure. More...
 
LumieraConfigLookupentry lumiera_config_lookup_insert (LumieraConfigLookup self, LumieraConfigitem item)
 Add a config item to a lookup structure. More...
 
LumieraConfigLookupentry lumiera_config_lookup_insert_default (LumieraConfigLookup self, LumieraConfigitem item)
 
LumieraConfigitem lumiera_config_lookup_item_find (LumieraConfigLookup self, const char *key)
 Find a the topmost config item stored to a given key. More...
 
LumieraConfigitem lumiera_config_lookup_item_tail_find (LumieraConfigLookup self, const char *key)
 Find a the bottom most config item stored to a given key. More...
 
LumieraConfigitem lumiera_config_lookup_remove (LumieraConfigLookup self, LumieraConfigitem item)
 Remove a config item from a lookup structure. More...
 
void lumiera_config_lookupentry_delete (LumieraConfigLookupentry self)
 
LumieraConfigLookupentry lumiera_config_lookupentry_destroy (LumieraConfigLookupentry self)
 
LumieraConfigLookupentry lumiera_config_lookupentry_init (LumieraConfigLookupentry self, const char *key)
 
LumieraConfigLookupentry lumiera_config_lookupentry_new (const char *key)
 
 LUMIERA_ERROR_DECLARE (CONFIG_LOOKUP)
 

Typedef Documentation

typedef lumiera_config_lookup* LumieraConfigLookup

Definition at line 45 of file config-lookup.h.

typedef lumiera_config_lookupentry* LumieraConfigLookupentry

Definition at line 48 of file config-lookup.h.


Class Documentation

struct lumiera_config_lookup_struct
Class Members
psplay tree
+ Collaboration diagram for lumiera_config_lookup:
struct lumiera_config_lookupentry_struct
Class Members
psplaynode node
llist configitems stack of all configitems stored under this key
char * full_key we store a copy of the full key here configentry keys are complete as expected section keys are the prefix stored with a trailing dot, suffixes will be found by iterative search
+ Collaboration diagram for lumiera_config_lookupentry:

Function Documentation

LUMIERA_ERROR_DECLARE ( CONFIG_LOOKUP  )
LumieraConfigLookup lumiera_config_lookup_init ( LumieraConfigLookup  self)

Initialise a lookup structure.

Parameters
selflookup structure to be initialised
Returns
self on success else NULL

Definition at line 59 of file config-lookup.c.

References cmp_fn(), delete_fn(), key_fn(), psplay_init(), and TRACE().

Referenced by lumiera_config_init(), and TEST().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookup lumiera_config_lookup_destroy ( LumieraConfigLookup  self)

Destroy a lookup structure.

Parameters
selflookup structure to be destroyed
Returns
self

Definition at line 68 of file config-lookup.c.

References psplay_destroy(), and TRACE().

Referenced by lumiera_config_destroy(), and TEST().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookup_insert ( LumieraConfigLookup  self,
LumieraConfigitem  item 
)

Add a config item to a lookup structure.

Config items are stored under their key and stacked in insertion order.

Parameters
selflookup structure where the item shall be added
itemconfig item to add to the lookup structure
Returns
opaque pointer to a hashtable entry

Definition at line 78 of file config-lookup.c.

References llist_insert_head, lumiera_config_lookupentry_new(), lumiera_tmpbuf_strcat3(), NULL, psplay_find(), psplay_insert(), and TRACE().

Referenced by lumiera_config_set(), lumiera_config_setdefault(), and TEST().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookup_insert_default ( LumieraConfigLookup  self,
LumieraConfigitem  item 
)

Add a default config item to a lookup structure. The item must contain a full key and not part of any 'section' and is inserted as tail of the lookup list.

Parameters
selflookup structure where the item shall be added
itemconfig item to add to the lookup structure
Returns
opaque pointer to a hashtable entry

Definition at line 100 of file config-lookup.c.

References llist_insert_tail, lumiera_config_lookupentry_new(), lumiera_tmpbuf_snprintf(), psplay_find(), psplay_insert(), and TRACE().

+ Here is the call graph for this function:

LumieraConfigitem lumiera_config_lookup_remove ( LumieraConfigLookup  self,
LumieraConfigitem  item 
)

Remove a config item from a lookup structure.

Config must be removed from the lookup when they are not used anymore. Removing a config item unlinks it from the stack of all config items with the same key. When this was the last config item under that key, the lookup entry is cleaned up.

Parameters
selflookup structure where the item shall be removed
itemconfig item to be removed from the lookup
Returns
item

Definition at line 122 of file config-lookup.c.

References LLIST_TO_STRUCTP, psplay_delete_node(), and TRACE().

Referenced by lumiera_configitem_destroy(), and TEST().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookup_find ( LumieraConfigLookup  self,
const char *  key 
)

Find a hashtable entry in the lookup structure.

Internal function, can be used to check if at least one item is available for a given key.

Parameters
selflookup structure where the key shall be searched
keystring to be looked up
Returns
NULL if nothing is found, otherwise a opaque pointer to a hash table entry

Definition at line 145 of file config-lookup.c.

References psplay_find(), and TRACE().

Referenced by lumiera_config_lookup_item_find(), and lumiera_config_lookup_item_tail_find().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigitem lumiera_config_lookup_item_find ( LumieraConfigLookup  self,
const char *  key 
)

Find a the topmost config item stored to a given key.

Parameters
selflookup structure where the key shall be searched
keystring to be looked up
Returns
the config item which was last stored under the given key or NULL when nothing was found

Definition at line 153 of file config-lookup.c.

References llist_head, LLIST_TO_STRUCTP, lumiera_config_lookup_find(), NULL, and TRACE().

Referenced by lumiera_config_get(), lumiera_config_set(), lumiera_config_setdefault(), and TEST().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigitem lumiera_config_lookup_item_tail_find ( LumieraConfigLookup  self,
const char *  key 
)

Find a the bottom most config item stored to a given key.

defaults sits at the bottom if exists

Parameters
selflookup structure where the key shall be searched
keystring to be looked up

Definition at line 168 of file config-lookup.c.

References llist_tail, LLIST_TO_STRUCTP, lumiera_config_lookup_find(), NULL, and TRACE().

Referenced by lumiera_config_get_default().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookupentry_init ( LumieraConfigLookupentry  self,
const char *  key 
)

Definition at line 186 of file config-lookup.c.

References lumiera_strndup(), psplaynode_init(), and TRACE().

Referenced by lumiera_config_lookupentry_new().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookupentry_new ( const char *  key)

Definition at line 200 of file config-lookup.c.

References lumiera_config_lookupentry_init(), and lumiera_malloc().

Referenced by lumiera_config_lookup_insert(), and lumiera_config_lookup_insert_default().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LumieraConfigLookupentry lumiera_config_lookupentry_destroy ( LumieraConfigLookupentry  self)

Definition at line 207 of file config-lookup.c.

References lumiera_free(), and TRACE().

Referenced by lumiera_config_lookupentry_delete().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void lumiera_config_lookupentry_delete ( LumieraConfigLookupentry  self)

Definition at line 220 of file config-lookup.c.

References lumiera_config_lookupentry_destroy(), and lumiera_free().

Referenced by delete_fn().

+ Here is the call graph for this function:

+ Here is the caller graph for this function: