#ifndef LLARP_CONFIG_H_ #define LLARP_CONFIG_H_ /** * config.h * * library configuration utilties */ struct llarp_config; /// allocate config void llarp_new_config(struct llarp_config **conf); /// deallocate config void llarp_free_config(struct llarp_config **conf); /// @brief return -1 on fail otherwiwse 0 int llarp_load_config(struct llarp_config *conf, const char *fname); /// config iterator configuration struct llarp_config_iterator { /// a customizable pointer to pass data to iteration functor void *user; /// set by llarp_config_iter struct llarp_config *conf; /// visit (self, section, key, value) void (*visit)(struct llarp_config_iterator *, const char *, const char *, const char *); }; /// iterator over "conf" and call visit functor defined in "iter" void llarp_config_iter(struct llarp_config *conf, struct llarp_config_iterator *iter); /// ensure configuration exists /// populate with defaults if it does not exist /// return if this succeeded bool llarp_ensure_config(const char *fname); #endif