From: Kevin Day Date: Sat, 6 Dec 2025 04:37:36 +0000 (-0600) Subject: Update: Use call back class structure. X-Git-Tag: 0.8.0~58 X-Git-Url: https://www.git.kevux.org/?a=commitdiff_plain;h=89cbc151a0aebd2f9ab3ae569af64689a6554f73;p=fll Update: Use call back class structure. I relatively recently started putting the call backs into their own structure. This brings the status_code project in line with that practice. --- diff --git a/level_3/status_code/c/fss/main.c b/level_3/status_code/c/fss/main.c index 577e46e..787b83f 100644 --- a/level_3/status_code/c/fss/main.c +++ b/level_3/status_code/c/fss/main.c @@ -19,9 +19,10 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) { data.setting.program_name = &status_code_fss_program_name_s; data.setting.program_name_long = &status_code_fss_program_name_long_s; - data.setting.status_string_from = &fll_fss_status_string_from; - data.setting.status_string_to = &fll_fss_status_string_to; - data.setting.status_string_help_detail = &status_code_fss_print_help_detail; + + data.call.string_from = &fll_fss_status_string_from; + data.call.string_to = &fll_fss_status_string_to; + data.call.string_help_detail = &status_code_fss_print_help_detail; f_console_parameter_t parameters[] = status_code_console_parameter_t_initialize; diff --git a/level_3/status_code/c/main/common/type.h b/level_3/status_code/c/main/common/type.h index fabb1ed..496d0d5 100644 --- a/level_3/status_code/c/main/common/type.h +++ b/level_3/status_code/c/main/common/type.h @@ -24,6 +24,28 @@ extern "C" { #endif // _di_status_code_main_t_typedef_ /** + * The status code call backs. + * + * Properties: + * - string_from: A pointer to the status string function (usually either fl_status_string_from() or fll_fss_status_string_from()). + * - string_to: A pointer to the status string function (usually either f_status_string_to() or fll_fss_status_string_to()). + * - string_help_detail: Print additional, more detailed help, in the help page. + */ +#ifndef _di_status_code_call_t_ + typedef struct { + f_status_t (*string_from)(const f_string_static_t name, f_status_t * const code); + f_status_t (*string_to)(const f_status_t code, f_string_static_t * const name); + f_status_t (*string_help_detail)(fl_print_t * const print); + } status_code_call_t; + + #define status_code_call_t_initialize { \ + .string_from = 0, \ + .string_to = 0, \ + .string_help_detail = 0, \ + } +#endif // _di_status_code_call_t_ + +/** * The status code main program settings. * * This is passed to the program-specific main entry point to designate program settings. @@ -32,10 +54,6 @@ extern "C" { * Properties: * - flag: Flags passed to the main function. * - state: The state data used when processing the FSS data. - * - * - status_string_from: A pointer to the status string function (usually either fl_status_string_from() or fll_fss_status_string_from()). - * - status_string_to: A pointer to the status string function (usually either f_status_string_to() or fll_fss_status_string_to()). - * - status_string_help_detail: Print additional, more detailed help, in the help page. */ #ifndef _di_status_code_setting_t_ typedef struct { @@ -44,10 +62,6 @@ extern "C" { const f_string_static_t *program_name; const f_string_static_t *program_name_long; - - f_status_t (*status_string_from)(const f_string_static_t name, f_status_t * const code); - f_status_t (*status_string_to)(const f_status_t code, f_string_static_t * const name); - f_status_t (*status_string_help_detail)(fl_print_t * const print); } status_code_setting_t; #define status_code_setting_t_initialize { \ @@ -55,9 +69,6 @@ extern "C" { .state = f_state_t_initialize, \ .program_name = 0, \ .program_name_long = 0, \ - .status_string_from = 0, \ - .status_string_to = 0, \ - .status_string_help_detail = 0, \ } #endif // _di_status_code_setting_t_ @@ -70,11 +81,13 @@ extern "C" { */ #ifndef _di_status_code_main_t_ struct status_code_main_t_ { + status_code_call_t call; fll_program_data_t program; status_code_setting_t setting; }; #define status_code_main_t_initialize { \ + .call = status_code_call_t_initialize, \ .program = fll_program_data_t_initialize, \ .setting = status_code_setting_t_initialize, \ } diff --git a/level_3/status_code/c/main/main.c b/level_3/status_code/c/main/main.c index b924c2f..1e79d1f 100644 --- a/level_3/status_code/c/main/main.c +++ b/level_3/status_code/c/main/main.c @@ -17,9 +17,10 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) { data.setting.program_name = &status_code_program_name_s; data.setting.program_name_long = &status_code_program_name_long_s; - data.setting.status_string_from = &fl_status_string_from; - data.setting.status_string_to = &f_status_string_to; - data.setting.status_string_help_detail = &status_code_print_message_help_detail; + + data.call.string_from = &fl_status_string_from; + data.call.string_to = &f_status_string_to; + data.call.string_help_detail = &status_code_print_message_help_detail; f_console_parameter_t parameters[] = status_code_console_parameter_t_initialize; diff --git a/level_3/status_code/c/main/print/error.h b/level_3/status_code/c/main/print/error.h index 8b6fc4f..ded128e 100644 --- a/level_3/status_code/c/main/print/error.h +++ b/level_3/status_code/c/main/print/error.h @@ -91,7 +91,7 @@ extern "C" { * This does not alter print.custom.setting.state.status. * @param name * The name of the callback setting that is invalid. - * This should either be 'status_string_from' or 'status_string_to'. + * This should either be 'call.string_from' or 'call.string_to'. * * @return * F_okay on success. diff --git a/level_3/status_code/c/main/print/message.c b/level_3/status_code/c/main/print/message.c index 65cb897..efbdeff 100644 --- a/level_3/status_code/c/main/print/message.c +++ b/level_3/status_code/c/main/print/message.c @@ -40,8 +40,8 @@ extern "C" { status_code_program_help_parameters_s ); - if (main->setting.status_string_help_detail) { - main->setting.status_string_help_detail(print); + if (main->call.string_help_detail) { + main->call.string_help_detail(print); } f_file_stream_flush(print->to); diff --git a/level_3/status_code/c/main/process.c b/level_3/status_code/c/main/process.c index b587cce..2b345d0 100644 --- a/level_3/status_code/c/main/process.c +++ b/level_3/status_code/c/main/process.c @@ -60,7 +60,7 @@ extern "C" { f_status_t code = F_okay; - main->setting.state.status = main->setting.status_string_from(value, &code); + main->setting.state.status = main->call.string_from(value, &code); if (F_status_is_error(main->setting.state.status)) { if (F_status_set_fine(main->setting.state.status) == F_data) { @@ -108,7 +108,7 @@ extern "C" { status_code_convert_number(main, value, &number); if (F_status_is_error(main->setting.state.status)) return; - main->setting.state.status = main->setting.status_string_to((f_status_t) number, &name); + main->setting.state.status = main->call.string_to((f_status_t) number, &name); } if (F_status_is_error(main->setting.state.status)) { diff --git a/level_3/status_code/c/main/status_code.c b/level_3/status_code/c/main/status_code.c index de928e6..f3ce68b 100644 --- a/level_3/status_code/c/main/status_code.c +++ b/level_3/status_code/c/main/status_code.c @@ -9,12 +9,12 @@ extern "C" { if (!main || F_status_is_error(main->setting.state.status)) return; - if (!main->setting.status_string_from || !main->setting.status_string_to) { - if (!main->setting.status_string_from) { + if (!main->call.string_from || !main->call.string_to) { + if (!main->call.string_from) { status_code_print_error_invalid_callback(&main->program.error, F_status_debug_source_d); } - if (!main->setting.status_string_to) { + if (!main->call.string_to) { status_code_print_error_invalid_callback(&main->program.error, F_status_debug_source_d); }