#include <atompub/atom.h>
-extern void gkeyfile_atom_config_init (AtomCtx *);
-extern char *gkeyfile_atom_config_get_str (AtomCtx *, char *, char *);
+#include <glib.h>
+
+struct _atom_config
+{
+ void * data;
+ char * (*get_str) (AtomCtx *, char *, char *);
+};
+
+AtomConfig *
+atom_config_new (void)
+{
+ AtomConfig * config;
+ config = g_slice_new (AtomConfig);
+ config->data = NULL;
+ config->get_str = NULL;
+ return config;
+}
+
+void
+atom_config_delete (AtomConfig *config)
+{
+ g_slice_free (AtomConfig, config);
+}
+
+void
+atom_config_get_str_set (AtomConfig * config,
+ char * get_str (AtomCtx *, char *, char *))
+{
+ config->get_str = get_str;
+}
void
-atom_config_init (AtomCtx *ctx)
+atom_config_data_set (AtomConfig * config, void * data)
+{
+ config->data = data;
+}
+
+void *
+atom_config_data (AtomConfig * config)
{
- gkeyfile_atom_config_init (ctx);
+ return config->data;
}
char *
atom_config_get_str (AtomCtx *ctx, char *namespace, char *key)
{
- return gkeyfile_atom_config_get_str (ctx, namespace, key);
+ AtomConfig *config;
+ config = atom_config (ctx);
+ if (config && config->get_str)
+ return config->get_str (ctx, namespace, key);
+ return NULL;
}