Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Interface for a lumiera configuration system (draft).
This configuration uses ini-style configuration files and supports some simple types. A mechanism for overlay / cascading was planned. After some debate it turned out that we had no clear vision regarding the scope of that effort: should this system also manage (layered) defaults? should it also be able to save user preferences? Anyway, development in that area stalled and never reached the level of just loading and parsing a simple file – yet this was not considered a roadblock and we agreed to revisit the topic when we've gained a better understanding of session storage and management of default values and user preferences.
Definition in file config.h.
#include "lib/error.h"
#include "lib/mutex.h"
#include "common/config-lookup.h"
#include "common/configitem.h"
#include <nobug.h>
#include <stdio.h>
Classes | |
struct | lumiera_config |
Typedefs | |
typedef lumiera_config * | LumieraConfig |
Macros | |
#define | LUMIERA_CONFIG_ENV_CHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789__" |
#define | LUMIERA_CONFIG_KEY_CHARS "abcdefghijklmnopqrstuvwxyz0123456789_." |
#define | LUMIERA_CONFIG_TYPE(name, type) |
#define | LUMIERA_CONFIG_TYPE(name, type) |
#define | LUMIERA_CONFIG_TYPES |
Supported high level types: TODO documenting. More... | |
Functions | |
void | lumiera_config_destroy () |
Destroys the configuration subsystem. More... | |
void | lumiera_config_dump (FILE *out) |
Does a diagnostic dump of the whole config database. | |
const char * | lumiera_config_get (const char *key, const char **value) |
const char * | lumiera_config_get_default (const char *key, const char **value) |
int | lumiera_config_info (const char *key, const char **filename, unsigned *line) |
int | lumiera_config_init (const char *path) |
Initialise the configuration subsystem. More... | |
int | lumiera_config_load (const char *file) |
int | lumiera_config_purge (const char *filename) |
LUMIERA_CONFIG_TYPES int | lumiera_config_reset (const char *key) |
int | lumiera_config_save () |
LumieraConfigitem | lumiera_config_set (const char *key, const char *delim_value) |
LumieraConfigitem | lumiera_config_setdefault (const char *line) |
Installs a default value for a config key. More... | |
const char * | lumiera_config_wordlist_add (const char *key, const char *value, const char *delims) |
Add a word to the end of a wordlist if it doesn't exist already. More... | |
int | lumiera_config_wordlist_find (const char *key, const char *value, const char *delims) |
Find the index of a word in a wordlist. More... | |
LUMIERA_CONFIG_TYPES const char * | lumiera_config_wordlist_get_nth (const char *key, unsigned nth, const char *delims) |
Wordlists Wordlists are lists of single words delimited by any of " \t,;". More... | |
const char * | lumiera_config_wordlist_replace (const char *key, const char *value, const char *subst1, const char *subst2, const char *delims) |
Universal word replacement function. More... | |
LUMIERA_ERROR_DECLARE (CONFIG_SYNTAX) | |
LUMIERA_ERROR_DECLARE (CONFIG_SYNTAX_KEY) | |
LUMIERA_ERROR_DECLARE (CONFIG_SYNTAX_VALUE) | |
LUMIERA_ERROR_DECLARE (CONFIG_NO_ENTRY) | |
#define LUMIERA_CONFIG_TYPES |
Supported high level types: TODO documenting.
#define LUMIERA_CONFIG_TYPE | ( | name, | |
type | |||
) |
#define LUMIERA_CONFIG_TYPE | ( | name, | |
type | |||
) |
struct lumiera_config_struct |
int lumiera_config_init | ( | const char * | path | ) |
void lumiera_config_destroy | ( | ) |
LumieraConfigitem lumiera_config_set | ( | const char * | key, |
const char * | delim_value | ||
) |
key | |
delim_value | delimiter (= or <) followed by the value to be set |
Definition at line 232 of file config.c.
References lumiera_config_lookup_item_find().
LumieraConfigitem lumiera_config_setdefault | ( | const char * | line | ) |
Installs a default value for a config key.
Any key might have an associated default value which is used when no other configuration is available, this can be set once. Any subsequent call will be a no-op. This function locks the config system.
line | line with key, delimiter and value to store as default value |
Definition at line 274 of file config.c.
Referenced by lumiera_plugin_discover().
LUMIERA_CONFIG_TYPES const char* lumiera_config_wordlist_get_nth | ( | const char * | key, |
unsigned | nth, | ||
const char * | delims | ||
) |
Wordlists Wordlists are lists of single words delimited by any of " \t,;".
They can be used to store groups of keys and other kinds of simple references into the config system. Here are some functions to manipulate single word entries in a wordlist. Get nth word of a wordlist.
key | key under which this wordlist is stored |
nth | index of the word to get, starting with 0 |
delims | a string literal listing all characters which are treated as delimiters |
Wordlists Wordlists are lists of single words delimited by any of " \t,;".
Definition at line 47 of file config-wordlist.c.
References lumiera_config_wordlist_get().
int lumiera_config_wordlist_find | ( | const char * | key, |
const char * | value, | ||
const char * | delims | ||
) |
Find the index of a word in a wordlist.
key | key under which this wordlist is stored |
value | word to find |
delims | a string literal listing all characters which are treated as delimiters |
Definition at line 74 of file config-wordlist.c.
References lumiera_config_wordlist_get().
const char* lumiera_config_wordlist_replace | ( | const char * | key, |
const char * | value, | ||
const char * | subst1, | ||
const char * | subst2, | ||
const char * | delims | ||
) |
Universal word replacement function.
Replaces a word with up to two new words. This can be used to delete a word (no replacements), insert a new word before an existing word (giving the new word as subst1 and the old word as subst2) insert a new word after an existing word (giving the old word as subst1 and the new word as subst2) or simply give 2 new words.
key | key under which this wordlist is stored |
value | word to be replaced |
subst1 | first replacement word |
subst2 | second replacement word |
delims | a string literal listing all characters which are treated as delimiters |
Definition at line 97 of file config-wordlist.c.
const char* lumiera_config_wordlist_add | ( | const char * | key, |
const char * | value, | ||
const char * | delims | ||
) |
Add a word to the end of a wordlist if it doesn't exist already.
key | key under which this wordlist is stored |
value | new word to add |
delims | a string literal listing all characters which are treated as delimiters |
Definition at line 152 of file config-wordlist.c.