actube/src/cw/cfg.h

114 lines
3.3 KiB
C
Raw Normal View History

2022-07-31 01:22:11 +02:00
#ifndef _CFG_H
#define _CFG_H
#include <mavl.h>
2022-08-13 09:47:12 +02:00
#include "val.h"
#include "bstr.h"
2022-07-31 01:22:11 +02:00
2022-07-31 09:49:14 +02:00
2022-08-27 10:05:02 +02:00
/**
*@file
*@brief
*@defgroup CFG SOCK
*@{
*/
/** Maximum size of a key used in cfg objects */
#define CW_CFG_MAX_KEY_LEN 1024
/** Default name for fresh cfg's created by #cw_cfg_create */
#define CW_CFG_DEFAULT_NAME "[anonymous]"
/**
* A Cfg object
*/
struct cw_Cfg {
2022-08-27 10:05:02 +02:00
struct mavl * cfg; /**< The AVL-tree containig the keys
and vals */
const char *name; /**< A name for this config object */
int dbg_level;
2022-08-21 00:53:41 +02:00
const char *dbg_prefix;
};
typedef struct cw_Cfg cw_Cfg_t;
2022-07-31 01:22:11 +02:00
2022-08-27 10:05:02 +02:00
/**
* An antry for a Cfg object
*/
struct cw_Cfg_entry{
const char *key; /**< A string representing the key
of this entry */
const char *val; /**< The value, represented by a string */
};
2022-07-31 09:49:14 +02:00
cw_Cfg_t * cw_cfg_create();
int cw_cfg_set(cw_Cfg_t *cfg,const char *key, const char *val);
void cw_cfg_dump(cw_Cfg_t *cfg);
int cw_cfg_read_from_file(FILE * file, cw_Cfg_t * cfg);
int cw_cfg_load(const char *filename,cw_Cfg_t * cfg);
struct cw_Cfg_iter{
struct mavliter it;
const char *base;
};
const char * cw_cfg_get(cw_Cfg_t * cfg, const char *key, const char *def);
2022-08-19 22:23:55 +02:00
struct cw_Cfg_entry *cw_cfg_iter_next(struct cw_Cfg_iter *cfi, const char *key);
void cw_cfg_iter_init(cw_Cfg_t * cfg, struct cw_Cfg_iter *cfi, const char *base);
2022-08-17 18:41:17 +02:00
int cw_cfg_get_bool(cw_Cfg_t * cfg, const char * key, int def);
2022-08-26 08:05:41 +02:00
uint16_t cw_cfg_get_word(cw_Cfg_t * cfg, const char *key, uint16_t def);
2022-08-09 09:52:30 +02:00
void cw_cfg_set_int(cw_Cfg_t * cfg, const char * key, int val);
2022-08-13 09:47:12 +02:00
uint8_t cw_cfg_get_byte(cw_Cfg_t * cfg, char *key, uint8_t def);
bstr16_t cw_cfg_get_bstr16(cw_Cfg_t * cfg, const char * key, const char *def);
int cw_cfg_set_bstr16(cw_Cfg_t * cfg, const char * key, bstr16_t str);
2022-08-28 11:42:11 +02:00
int cw_cfg_get_new_index(cw_Cfg_t * cfg, const char *key);
2022-08-14 12:26:34 +02:00
const char *cw_cfg_get_l(cw_Cfg_t ** cfg, const char * key, const char *def);
2022-08-21 00:53:41 +02:00
void cw_cfg_copy(cw_Cfg_t *src, cw_Cfg_t *dst,int dbg_level,const char *dbg_prefix);
2022-08-14 12:26:34 +02:00
void cw_cfg_destroy(cw_Cfg_t *cfg);
void cw_cfg_clear(cw_Cfg_t *cfg);
int cw_cfg_base_exists(cw_Cfg_t * cfg, const char *key);
2022-08-15 16:31:26 +02:00
uint8_t cw_cfg_get_byte_l(cw_Cfg_t ** cfgs, char *key, uint8_t def);
2022-08-17 18:41:17 +02:00
cw_Val_t * cw_cfg_get_val_l(cw_Cfg_t ** cfgs, const char *key, const struct cw_Type *type);
int cw_cfg_base_exists_l(cw_Cfg_t ** cfgs, const char *key);
2022-08-19 22:23:55 +02:00
int cw_cfg_save(const char *filename, cw_Cfg_t *cfg, const char *format, ...);
2022-08-17 18:41:17 +02:00
2022-08-26 08:05:41 +02:00
uint16_t cw_cfg_get_word_l(cw_Cfg_t ** cfg, const char *key, uint16_t def);
void cw_cfg_fdump(FILE *f, cw_Cfg_t * cfg, const char *filter);
2022-08-24 16:24:57 +02:00
int cw_cfg_read_from_string(const char *str, cw_Cfg_t *cfg);
void cw_cfg_del(cw_Cfg_t * cfg, const char *key);
2022-08-14 12:26:34 +02:00
2022-08-28 11:42:11 +02:00
int cw_cfg_get_first_index(cw_Cfg_t * cfg, const char *key, int n);
int cw_cfg_get_first_index_l(cw_Cfg_t ** cfgs, const char *key, int n);
2022-08-14 12:26:34 +02:00
int cw_cfg_get_int(cw_Cfg_t * cfg, const char *key, int def);
2022-09-02 12:03:38 +02:00
int cw_cfg_write_to_file(FILE *f, cw_Cfg_t * cfg);
2022-08-14 12:26:34 +02:00
2022-09-06 09:16:10 +02:00
#define cw_cfg_set_bool(cfg,key,val) \
cw_cfg_set(cfg,key,(val) ? "true":"false")
2022-08-13 09:47:12 +02:00
int cw_cfg_set_val(cw_Cfg_t * cfg, const char *key, const struct cw_Type *t, const void * valguard, const uint8_t * data, int len);
2022-08-30 20:25:55 +02:00
bstr16_t cw_cfg_get_bstr16_l(cw_Cfg_t **cfgs, const char * key, const char *def);
2022-08-13 09:47:12 +02:00
#define cw_cfg_get_word2(cfg1,cfg2,key,def) \
cw_cfg_get_word(cfg1,key,cw_cfg_get_word(cfg2,key,def))
#define cw_dget(fun,cfg1,cfg2,key,def)\
fun(cfg1,key,fun(cfg2,key,def))
2022-07-31 01:22:11 +02:00
#endif
2022-08-27 10:05:02 +02:00
/**@}*/