From a409d9fd5d861d52dca0e4ed33416a49b00ae2d9 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sun, 7 May 2023 20:05:38 -0700 Subject: setup: constify settings passed to setup_func setup_func isn't formally defined for libtil, but setup_interactively() defacto establishes it and til_module_t.setup() reflects the same signature and calling convention except with til_settings_t constified. This change makes them all consistent in this regard, but there should probably be a formal typedef added for the function. The reason for constifying this is I don't want setup functions directly manipulating the settings instance. In the case of rototiller::setup_interactively() we ensure the stdio-based interactive setup is always the side doing the manipulation of the settings. For a libtil-user like glimmer, it's slightly different beast with GTK+ in the loop, but by preventing the setup_funcs from messing directly with the settings (instead having to describe what they want done iteratively), the front-end always gets its opportunity to maintain its state while doing the described things. Of course, this is mostly a lie, and within libtil the constified til_settings_t gets cast away to modify it in places. But keeping that limited to within libtil is tolerable IMO. We just don't want to see such casts in module code. --- src/main.c | 2 +- src/setup.c | 2 +- src/setup.h | 2 +- src/til.c | 2 +- src/til.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 2d28700..efc9d12 100644 --- a/src/main.c +++ b/src/main.c @@ -78,7 +78,7 @@ typedef struct setup_t { */ /* select video backend if not yet selected, then setup the selected backend. */ -static int setup_video(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup) +static int setup_video(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup) { til_setting_t *setting; const char *video; diff --git a/src/setup.c b/src/setup.c index 7d413f9..f85ac10 100644 --- a/src/setup.c +++ b/src/setup.c @@ -23,7 +23,7 @@ static int add_value(til_settings_t *settings, const char *key, const char *valu /* returns negative on error, otherwise number of additions made to settings */ -int setup_interactively(til_settings_t *settings, int (*setup_func)(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc) +int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc) { unsigned additions = 0; char buf[256] = "\n"; diff --git a/src/setup.h b/src/setup.h index 948b820..0862e45 100644 --- a/src/setup.h +++ b/src/setup.h @@ -4,6 +4,6 @@ #include "til_settings.h" #include "til_setup.h" -int setup_interactively(til_settings_t *settings, int (*setup_func)(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc); +int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc); #endif diff --git a/src/til.c b/src/til.c index 58e52bb..9053c2d 100644 --- a/src/til.c +++ b/src/til.c @@ -264,7 +264,7 @@ int til_module_create_context(const til_module_t *module, til_stream_t *stream, /* select module if not yet selected, then setup the module. */ -int til_module_setup(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup) +int til_module_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup) { til_setting_t *setting; const til_module_t *module; diff --git a/src/til.h b/src/til.h index 49823ba..fabee0a 100644 --- a/src/til.h +++ b/src/til.h @@ -45,7 +45,7 @@ void til_get_modules(const til_module_t ***res_modules, size_t *res_n_modules); void til_module_render(til_module_context_t *context, til_stream_t *stream, unsigned ticks, til_fb_fragment_t **fragment_ptr); int til_module_create_context(const til_module_t *module, til_stream_t *stream, unsigned seed, unsigned ticks, unsigned n_cpus, const char *parent_path, til_setup_t *setup, til_module_context_t **res_context); til_module_context_t * til_module_destroy_context(til_module_context_t *context, til_stream_t *stream); -int til_module_setup(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup); +int til_module_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup); int til_module_randomize_setup(const til_module_t *module, unsigned seed, til_setup_t **res_setup, char **res_arg); int til_fragmenter_slice_per_cpu(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment); int til_fragmenter_tile64(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment); -- cgit v1.2.1