summaryrefslogtreecommitdiff
path: root/metadata/metabuilder.h
blob: 51340f277d57910e22e2eb3c4ae15a04d84e5422 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <glib.h>

typedef struct _MetaBuilder MetaBuilder;
typedef struct _MetaFile MetaFile;
typedef struct _MetaData MetaData;

struct _MetaBuilder {
  MetaFile *root;

  guint32 root_pointer;
  gint64 time_t_base;
};

struct _MetaFile {
  char *name;
  GList *children;
  gint64 last_changed;
  GList *data;

  guint32 metadata_pointer;
  guint32 children_pointer;
};

struct _MetaData {
  char *key;
  gboolean is_list;
  char *value;
  GList *values;
};

MetaBuilder *meta_builder_new       (void);
void         meta_builder_free      (MetaBuilder *builder);
void         meta_builder_print     (MetaBuilder *builder);
MetaFile *   meta_builder_lookup    (MetaBuilder *builder,
				     const char  *path,
				     gboolean     create);
gboolean     meta_builder_write     (MetaBuilder *builder,
				     const char  *filename);
MetaFile *   metafile_new           (const char  *name,
				     MetaFile    *parent);
void         metafile_free          (MetaFile    *file);
MetaFile *   metafile_lookup_child  (MetaFile    *metafile,
				     const char  *name,
				     gboolean     create);
MetaData *   metafile_key_lookup    (MetaFile    *file,
				     const char  *key,
				     gboolean     create);
void         metafile_key_unset     (MetaFile    *metafile,
				     const char  *key);
void         metafile_key_set_value (MetaFile    *metafile,
				     const char  *key,
				     const char  *value);
void         metafile_key_list_set  (MetaFile    *metafile,
				     const char  *key);
void         metafile_key_list_add  (MetaFile    *metafile,
				     const char  *key,
				     const char  *value);