From b686b405c6a22b26e9b8082c92ed91513608bea3 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Fri, 1 Oct 2021 16:35:08 -0700 Subject: *: librototiller->libtil Largely mechanical rename of librototiller -> libtil, but introducing a til_ prefix to all librototiller (now libtil) functions and types where a rototiller prefix was absent. This is just a step towards a more libized librototiller, and til is just a nicer to type/read prefix than rototiller_. --- src/til_settings.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/til_settings.h (limited to 'src/til_settings.h') diff --git a/src/til_settings.h b/src/til_settings.h new file mode 100644 index 0000000..935aa5b --- /dev/null +++ b/src/til_settings.h @@ -0,0 +1,43 @@ +#ifndef _TIL_SETTINGS_H +#define _TIL_SETTINGS_H + +#include + +/* Individual setting description */ +typedef struct til_setting_desc_t { + const char *name; /* long-form/human name for setting */ + const char *key; /* short-form/key for setting, used as left side of =value in settings string */ + const char *regex; /* value must conform to this regex */ + const char *preferred; /* if there's a default, this is it */ + const char **values; /* if a set of values is provided, listed here */ + const char **annotations; /* if a set of values is provided, annotations for those values may be listed here */ + char * (*random)(void);/* if set, returns a valid random value for this setting */ +} til_setting_desc_t; + +/* For conveniently representing setting description generators */ +typedef struct til_setting_desc_generator_t { + const char *key; /* key this generator applies to */ + const char **value_ptr; /* where to put the value */ + int (*func)(void *setup_context, til_setting_desc_t **res_desc); +} til_setting_desc_generator_t; + +typedef struct til_settings_t til_settings_t; + +til_settings_t * til_settings_new(const char *settings); +til_settings_t * til_settings_free(til_settings_t *settings); +const char * til_settings_get_value(const til_settings_t *settings, const char *key); +const char * til_settings_get_key(const til_settings_t *settings, unsigned pos); +int til_settings_add_value(til_settings_t *settings, const char *key, const char *value); +char * til_settings_as_arg(const til_settings_t *settings); +int til_settings_apply_desc_generators(const til_settings_t *settings, const til_setting_desc_generator_t generators[], unsigned n_generators, void *setup_context, til_setting_desc_t **next_setting); + +int til_setting_desc_clone(const til_setting_desc_t *desc, til_setting_desc_t **res_desc); +til_setting_desc_t * til_setting_desc_free(til_setting_desc_t *desc); +int til_setting_desc_check(const til_setting_desc_t *desc, const char *value); + +#ifndef TIL_SETTINGS_STR +#define _TIL_SETTINGS_STR(s) #s +#define TIL_SETTINGS_STR(s) _TIL_SETTINGS_STR(s) +#endif + +#endif -- cgit v1.2.3