]> icculus.org git repositories - dana/openbox.git/blob - openbox/config.h
let identifiers have '.' in them
[dana/openbox.git] / openbox / config.h
1 #ifndef __config_h
2 #define __config_h
3
4 #include <glib.h>
5
6 typedef enum {
7     Config_String,
8     Config_Integer
9 } ConfigValueType;
10
11 typedef union {
12     char *string;
13     int integer;
14 } ConfigValue;
15
16 typedef struct {
17     char *name;
18     ConfigValueType type;
19     ConfigValue value;
20 } ConfigEntry;
21
22 typedef struct {
23     char *name;
24     ConfigValueType type;
25     /* if it is a string type optionally provide a list of valid strings */
26     gboolean hasList;
27     GSList *values;
28 } ConfigDefEntry;
29
30 void config_startup();
31 void config_shutdown();
32
33 /* Set a config variable's value. The variable must have already been defined
34    with a call to config_def_set */
35 gboolean config_set(char *name, ConfigValueType type, ConfigValue value);
36
37 /* Get a config variable's value. Returns FALSE if the value has not been
38    set. */
39 gboolean config_get(char *name, ConfigValueType type, ConfigValue *value);
40
41 /* Create a new config definition to add to the config system */
42 ConfigDefEntry *config_def_new(char *name, ConfigValueType type);
43
44 /* Add a value to a String type config definition */
45 gboolean config_def_add_value(ConfigDefEntry *entry, char *value);
46
47 /* Sets up the definition in the config system, Don't free or touch the entry
48    after setting it with this. It is invalidated even if the function returns
49    FALSE. */
50 gboolean config_def_set(ConfigDefEntry *entry);
51
52 void config_parse();
53
54 #endif