1 /*
2  *  Configuration file parser
3  *  Copyright (c) 2002 Alexander Babichev
4  */
5 
6 #ifndef __CONF_H__
7 #define __CONF_H__
8 
9 struct _STable;
10 typedef struct _STable* HTable;
11 struct _STableIterator;
12 typedef struct _STableIterator* HTableIterator;
13 
14 #define TYPE_INT    1
15 #define TYPE_STRING 2
16 #define TYPE_FLOAT  3
17 #define TYPE_TABLE  4
18 
19 /* create empty table */
20 HTable table_create();
21 
22 /* read table from file */
23 HTable table_read(const char *filename);
24 
25 /* free table */
26 void table_free(HTable table);
27 
28 /* get table iterator positioned before table start */
29 HTableIterator table_get_iter(HTable table);
30 
31 /* free table iterator */
32 void table_free_iter(HTableIterator iterator);
33 
34 /* move iterator.  return 1 on success */
35 int table_iter_next(HTableIterator iterator);
36 
37 /* get name of table field */
38 char* table_iter_get_name(HTableIterator iterator);
39 
40 /* get type of table field */
41 int table_iter_get_type(HTableIterator iterator);
42 
43 /* get current table field as newly allocated string */
44 char* table_iter_get_str(HTableIterator iterator, int *err);
45 
46 /* get current table field as static string valid till next iterator operation */
47 char* table_iter_get_strs(HTableIterator iterator, int *err);
48 
49 /* get current table field as int */
50 int table_iter_get_int(HTableIterator iterator, int *err);
51 
52 /* get current table field as double */
53 double table_iter_get_double(HTableIterator iterator, int *err);
54 
55 /* get current table field as table */
56 HTable table_iter_get_table(HTableIterator iterator, int *err);
57 
58 /* return 0 if field not exists in table */
59 int table_is_field_exists(HTable table, char *name);
60 
61 /* get type of table field or -1 if field not exists */
62 int table_get_field_type(HTable table, char *field);
63 
64 /* get table field as newly allocated string */
65 char* table_get_str(HTable table, char *field, char *dflt, int *err);
66 
67 /* get table field as static string */
68 char* table_get_strs(HTable table, char *field, char *dflt, int *err);
69 
70 /* get table field as int */
71 int table_get_int(HTable table, char *field, int dflt, int *err);
72 
73 /* get table field as double */
74 double table_get_double(HTable table, char *field, double dflt, int *err);
75 
76 /* get table field as table */
77 HTable table_get_table(HTable table, char *field, HTable dflt, int *err);
78 
79 /* print table to new allocated string */
80 char* table_to_str(HTable table, int print_braces, int butify, int spaces);
81 
82 /* set table field as string */
83 int table_set_str(HTable table, const char *field, const char *val);
84 
85 /* set table field as int */
86 int table_set_int(HTable table, const char *field, int val);
87 
88 /* set table field as double */
89 int table_set_double(HTable table, const char *field, double val);
90 
91 /* set table field as table */
92 int table_set_table(HTable table, const char *field, HTable val);
93 
94 /* append string field to table */
95 int table_append_str(HTable table, const char *val);
96 
97 /* append int field to table */
98 int table_append_int(HTable table, int val);
99 
100 /* append double field to table */
101 int table_append_double(HTable table, double val);
102 
103 /* append tablee field to table */
104 int table_append_table(HTable table, HTable val);
105 
106 #endif
107 
108