Drastic modifications:
[xuni.git] / src / resource.h
blobc31c03225e61f60d5383e533e676fb21d980bb27
1 /*! \file resource.h
3 */
5 #ifndef RESOURCE_H
6 #define RESOURCE_H
8 #include <stdarg.h>
10 #define RESOURCE_LIBRARY_EXPAT
12 enum {
13 RESOURCE_BUFFER_SIZE = BUFSIZ
16 enum resource_data_type_t {
17 RESOURCE_TEXT,
18 RESOURCE_REFERENCE,
19 RESOURCES
22 struct resource_text_t {
23 char *data;
26 struct resource_reference_t {
27 char *name;
28 struct resource_list_t *list;
31 struct resource_data_t {
32 enum resource_data_type_t type;
33 union {
34 struct resource_text_t *text;
35 struct resource_reference_t *reference;
36 } data;
39 struct resource_list_t {
40 struct resource_data_t **data;
41 size_t n;
44 struct resource_t {
45 struct resource_list_t *list;
48 void init_resource(struct resource_t *resource);
49 void write_default_settings(void);
50 int parse_resource(struct resource_t *resource, const char *filename);
51 struct resource_list_t *find_resource_in_list(struct resource_list_t *list,
52 const char *name);
53 char *find_resource_text(struct resource_list_t *list, const char *data);
54 const char *lookup_resource_string(struct resource_t *resource,
55 const char *def, ...);
56 long lookup_resource_number(struct resource_t *resource, long def,
57 ...);
58 void free_resource(struct resource_t *resource);
60 #endif