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