config: implement a few more methods
This commit is contained in:
parent
e5b38e9312
commit
fddcef24f9
45
common.c
45
common.c
|
@ -1280,6 +1280,8 @@ end:
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
|
// TODO: this doesn't necessarily have to be well designed at all
|
||||||
|
|
||||||
typedef void (*config_module_load_fn)
|
typedef void (*config_module_load_fn)
|
||||||
(struct config_item_ *subtree, void *user_data);
|
(struct config_item_ *subtree, void *user_data);
|
||||||
|
|
||||||
|
@ -1290,6 +1292,20 @@ struct config_module
|
||||||
void *user_data; ///< User data
|
void *user_data; ///< User data
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct config_module *
|
||||||
|
config_module_new ()
|
||||||
|
{
|
||||||
|
struct config_module *self = xcalloc (1, sizeof *self);
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
config_module_destroy (struct config_module *self)
|
||||||
|
{
|
||||||
|
free (self->name);
|
||||||
|
free (self);
|
||||||
|
}
|
||||||
|
|
||||||
struct config
|
struct config
|
||||||
{
|
{
|
||||||
struct str_map modules; ///< Toplevel modules
|
struct str_map modules; ///< Toplevel modules
|
||||||
|
@ -1299,24 +1315,33 @@ struct config
|
||||||
static void
|
static void
|
||||||
config_init (struct config *self)
|
config_init (struct config *self)
|
||||||
{
|
{
|
||||||
// TODO
|
memset (self, 0, sizeof *self);
|
||||||
|
str_map_init (&self->modules);
|
||||||
|
self->modules.free = (void (*) (void *)) config_module_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
config_free (struct config *self)
|
config_free (struct config *self)
|
||||||
{
|
{
|
||||||
// TODO
|
str_map_free (&self->modules);
|
||||||
|
if (self->root)
|
||||||
|
config_item_destroy (self->root);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
config_register_module (struct config *self,
|
||||||
|
const char *name, config_module_load_fn loader, void *user_data)
|
||||||
|
{
|
||||||
|
struct config_module *module = config_module_new ();
|
||||||
|
module->name = xstrdup (name);
|
||||||
|
module->loader = loader;
|
||||||
|
module->user_data = user_data;
|
||||||
|
|
||||||
|
str_map_set (&self->modules, name, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
config_register_module (const char *name,
|
config_load (struct config *self, struct config_item_ *root, struct error **e)
|
||||||
config_module_load_fn loader, void *user_data)
|
|
||||||
{
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
config_load (struct config_item_ *root, struct error **e)
|
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue