summaryrefslogtreecommitdiff
path: root/metadata/metatree.h
diff options
context:
space:
mode:
Diffstat (limited to 'metadata/metatree.h')
-rw-r--r--metadata/metatree.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/metadata/metatree.h b/metadata/metatree.h
new file mode 100644
index 00000000..b18d30d9
--- /dev/null
+++ b/metadata/metatree.h
@@ -0,0 +1,58 @@
+#include <glib.h>
+
+typedef struct _MetaTree MetaTree;
+
+typedef enum {
+ META_KEY_TYPE_NONE,
+ META_KEY_TYPE_STRING,
+ META_KEY_TYPE_STRINGV
+} MetaKeyType;
+
+typedef gboolean (*meta_tree_dir_enumerate_callback) (const char *entry,
+ guint64 last_changed,
+ gboolean has_children,
+ gboolean has_data,
+ gpointer user_data);
+
+typedef gboolean (*meta_tree_keys_enumerate_callback) (const char *key,
+ MetaKeyType type,
+ gpointer value,
+ gpointer user_data);
+
+void meta_tree_free (MetaTree *tree);
+MetaTree *meta_tree_open (const char *filename,
+ gboolean for_write);
+void meta_tree_refresh (MetaTree *tree); /* May invalidates all strings */
+
+
+MetaKeyType meta_tree_lookup_key_type (MetaTree *tree,
+ const char *path,
+ const char *key);
+guint64 meta_tree_get_last_changed (MetaTree *tree,
+ const char *path);
+char * meta_tree_lookup_string (MetaTree *tree,
+ const char *path,
+ const char *key);
+char ** meta_tree_lookup_stringv (MetaTree *tree,
+ const char *path,
+ const char *key);
+void meta_tree_enumerate_dir (MetaTree *tree,
+ const char *path,
+ meta_tree_dir_enumerate_callback callback,
+ gpointer user_data);
+void meta_tree_enumerate_keys (MetaTree *tree,
+ const char *path,
+ meta_tree_keys_enumerate_callback callback,
+ gpointer user_data);
+gboolean meta_tree_flush (MetaTree *tree);
+gboolean meta_tree_unset (MetaTree *tree,
+ const char *path,
+ const char *key);
+gboolean meta_tree_set_string (MetaTree *tree,
+ const char *path,
+ const char *key,
+ const char *value);
+gboolean meta_tree_set_stringv (MetaTree *tree,
+ const char *path,
+ const char *key,
+ const char **value);