Lumiera  0.pre.03
»edit your freedom«
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)
 

Class Documentation

◆ lumiera_config_lookup_struct

struct lumiera_config_lookup_struct
Class Members
psplay tree
+ Collaboration diagram for lumiera_config_lookup:

◆ lumiera_config_lookupentry_struct

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_config_lookup_init()

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 psplay_init().

+ Here is the call graph for this function:

◆ lumiera_config_lookup_destroy()

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().

+ Here is the call graph for this function:

◆ lumiera_config_lookup_insert()

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 lumiera_tmpbuf_strcat3().

+ Here is the call graph for this function:

◆ lumiera_config_lookup_insert_default()

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 steam::mobject::session::query::anonymous_namespace{fake-configrules.cpp}::entry(), and lumiera_tmpbuf_snprintf().

+ Here is the call graph for this function:

◆ lumiera_config_lookup_remove()

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 steam::mobject::session::query::anonymous_namespace{fake-configrules.cpp}::entry(), LLIST_TO_STRUCTP, and psplay_delete_node().

+ Here is the call graph for this function:

◆ lumiera_config_lookup_find()

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().

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:

◆ lumiera_config_lookup_item_find()

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 steam::mobject::session::query::anonymous_namespace{fake-configrules.cpp}::entry(), LLIST_TO_STRUCTP, and lumiera_config_lookup_find().

Referenced by lumiera_config_set().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ lumiera_config_lookup_item_tail_find()

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 steam::mobject::session::query::anonymous_namespace{fake-configrules.cpp}::entry(), LLIST_TO_STRUCTP, and lumiera_config_lookup_find().

+ Here is the call graph for this function: