]> Kevux Git Server - fll/commitdiff
Update: Use call back class structure.
authorKevin Day <Kevin@kevux.org>
Sat, 6 Dec 2025 04:37:36 +0000 (22:37 -0600)
committerKevin Day <Kevin@kevux.org>
Sat, 6 Dec 2025 04:43:18 +0000 (22:43 -0600)
I relatively recently started putting the call backs into their own structure.

This brings the status_code project in line with that practice.

level_3/status_code/c/fss/main.c
level_3/status_code/c/main/common/type.h
level_3/status_code/c/main/main.c
level_3/status_code/c/main/print/error.h
level_3/status_code/c/main/print/message.c
level_3/status_code/c/main/process.c
level_3/status_code/c/main/status_code.c

index 577e46ea7034ae6b475ecf285c46871f92213a21..787b83f56d517042ea0cfee5050e5f2e30f816fa 100644 (file)
@@ -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;
 
index fabb1ed9ad2a6d9d7ad4f999256f549474f97710..496d0d532e38594da38fef081253cd36a6487cb4 100644 (file)
@@ -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, \
   }
index b924c2f023c4f9ec8488e60105bdbb8e892efa28..1e79d1f86fdbf25e57e909a2cdcb5ccb7b626931 100644 (file)
@@ -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;
 
index 8b6fc4ff1670b329cc3445009406b6f6559f931e..ded128e757d6394c850a108b91c05b48b0330f49 100644 (file)
@@ -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.
index 65cb8979bd260621f11bbcca8e5e6211a2818110..efbdeffb9ac9d729f8c70e868a15614f3eead8f7 100644 (file)
@@ -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);
index b587cce6b04afa951e520afa9c789fd435d4337a..2b345d09cd15c898b47975e0a01e3af14753665d 100644 (file)
@@ -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)) {
index de928e6bae2e9be13d55b0cbb6c4a60bd1161878..f3ce68b8d15d1933944513138b6d3c2f82cd42d8 100644 (file)
@@ -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);
       }