config.h

00001 /* 
00002  * Copyright (c) 2005-2012 by KoanLogic s.r.l. - All rights reserved.  
00003  */
00004 
00005 #ifndef _U_CONFIG_H_
00006 #define _U_CONFIG_H_
00007 
00008 #include <stdio.h>
00009 #include <u/libu_conf.h>
00010 
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014 
00015 /* forward decl */
00016 struct u_config_s;
00017 
00024 typedef struct u_config_s u_config_t;
00025 
00027 struct u_config_driver_s
00028 {
00029     int (*open) (const char *uri, void **parg);
00041     int (*close) (void *arg);
00050     char *(*gets) (void *arg, char *buf, size_t size);
00067     int (*resolv) (const char *name, char *uri, size_t uri_bufsz);
00080 };
00081 
00083 typedef struct u_config_driver_s u_config_driver_t;
00084 
00086 typedef enum {
00087     U_CONFIG_WALK_PREORDER, 
00088     U_CONFIG_WALK_POSTORDER 
00089 } u_config_walk_t;
00090 
00095 int u_config_create(u_config_t **pc);
00096 int u_config_free(u_config_t *c);
00097 int u_config_load(u_config_t *c, int fd, int overwrite);
00098 
00099 int u_config_load_from_file (const char *file, u_config_t **pc);
00100 
00101 int u_config_load_from_drv(const char *uri, u_config_driver_t *drv, 
00102         int overwrite, u_config_t **pc);
00103 
00104 typedef char* (*u_config_gets_t)(void *arg, char *buf, size_t size);
00105 int u_config_load_from(u_config_t *c, u_config_gets_t cb, 
00106     void *arg, int overwrite);
00107 
00108 const char* u_config_get_key(u_config_t *c);
00109 const char* u_config_get_value(u_config_t *c);
00110 
00111 int u_config_get_subkey(u_config_t *c, const char *subkey, u_config_t **pc);
00112 int u_config_get_subkey_nth(u_config_t *c,const char *subkey, int n, 
00113     u_config_t **pc);
00114 
00115 const char* u_config_get_subkey_value(u_config_t *c, const char *subkey);
00116 
00117 int u_config_get_subkey_value_b(u_config_t *c, const char *subkey, int def, 
00118     int *out);
00119 int u_config_get_subkey_value_i(u_config_t *c, const char *subkey, int def, 
00120     int *out);
00121 
00122 int u_config_add_key(u_config_t *c, const char *key, const char *val);
00123 int u_config_set_key(u_config_t *c, const char *key, const char *val);
00124 
00125 int u_config_add_child(u_config_t *c, const char *key, u_config_t **pc);
00126 int u_config_set_value(u_config_t *c, const char *val);
00127 u_config_t* u_config_get_child_n(u_config_t *c, const char *key, int n);
00128 u_config_t* u_config_get_child(u_config_t *c, const char *key);
00129 int u_config_del_child(u_config_t *c, u_config_t *child);
00130 
00131 int u_config_has_children(u_config_t *c);
00132 int u_config_save_to_buf(u_config_t *c, char *buf, size_t size);
00133 int u_config_load_from_buf(char *buf, size_t len, u_config_t **pc);
00134 
00135 void u_config_print_to_fp(u_config_t *c, FILE *fp, int lev);
00136 void u_config_print(u_config_t *c, int lev);
00137 
00138 int u_config_sort_children(u_config_t *c, int(*)(u_config_t**, u_config_t**));
00139 void u_config_walk (u_config_t *c, u_config_walk_t s, void (*cb)(u_config_t *));
00140 
00141 #ifdef __cplusplus
00142 }
00143 #endif
00144 
00145 #endif /* !_U_CONFIG_H_ */

←Products
© 2005-2012 - KoanLogic S.r.l. - All rights reserved