]> Kevux Git Server - fll/commitdiff
Progress: controller program.
authorKevin Day <thekevinday@gmail.com>
Thu, 3 Dec 2020 04:34:37 +0000 (22:34 -0600)
committerKevin Day <thekevinday@gmail.com>
Thu, 3 Dec 2020 04:34:37 +0000 (22:34 -0600)
Move some code into a private common header.

Merge the entry and items cache into a single cache.

level_3/controller/c/controller.c
level_3/controller/c/private-common.h [new file with mode: 0644]
level_3/controller/c/private-control.c
level_3/controller/c/private-control.h
level_3/controller/c/private-controller.c
level_3/controller/c/private-controller.h
level_3/controller/c/private-entry.c
level_3/controller/c/private-entry.h
level_3/controller/c/private-rule.c
level_3/controller/c/private-rule.h

index 75d67fe444fdbbdab2850b803ec97da931c64aa8..0d5c040cda5fad133bee80180336d4a0bc8f67c7 100644 (file)
@@ -1,4 +1,5 @@
 #include "controller.h"
+#include "private-common.h"
 #include "private-control.h"
 #include "private-entry.h"
 #include "private-rule.h"
@@ -129,9 +130,7 @@ extern "C" {
     }
 
     controller_setting_t setting = controller_setting_t_initialize;
-
-    controller_entry_cache_t cache_entry = controller_entry_cache_t_initialize;
-    controller_rule_cache_t cache_rule = controller_rule_cache_t_initialize;
+    controller_cache_t cache = controller_cache_t_initialize;
 
     f_string_static_t entry_name = f_string_static_t_initialize;
 
@@ -221,7 +220,7 @@ extern "C" {
     }
 
     if (F_status_is_error_not(status)) {
-      status = controller_entry_read(*data, setting, entry_name, &cache_entry, &setting.entry);
+      status = controller_entry_read(*data, setting, entry_name, &cache, &setting.entry);
 
       // @fixme this is temporary and may or may not be used when finished codestorming.
       if (F_status_is_error(setting.entry.status)) {
@@ -235,6 +234,10 @@ extern "C" {
     }
 
     if (F_status_is_error_not(status)) {
+      status = controller_preprocess_rules(*data, &setting, &cache);
+    }
+
+    if (F_status_is_error_not(status)) {
       if (data->parameters[controller_parameter_test].result == f_console_result_found || data->parameters[controller_parameter_validate].result == f_console_result_found) {
         // @todo validate happens first, report and handle validation problems or success.
 
@@ -258,8 +261,7 @@ extern "C" {
     controller_file_pid_delete(*data, setting.path_pid);
 
     controller_macro_setting_t_delete_simple(setting);
-    controller_macro_entry_cache_t_delete_simple(cache_entry);
-    controller_macro_rule_cache_t_delete_simple(cache_rule);
+    controller_macro_cache_t_delete_simple(cache);
 
     controller_delete_data(data);
 
diff --git a/level_3/controller/c/private-common.h b/level_3/controller/c/private-common.h
new file mode 100644 (file)
index 0000000..82f9b6a
--- /dev/null
@@ -0,0 +1,528 @@
+/**
+ * FLL - Level 3
+ *
+ * Project: Controller
+ * API Version: 0.5
+ * Licenses: lgplv2.1
+ */
+#ifndef _PRIVATE_common_h
+#define _PRIVATE_common_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_controller_string_
+  #define controller_string_asynchronous  "asynchronous"
+  #define controller_string_create        "create"
+  #define controller_string_command       "command"
+  #define controller_string_consider      "consider"
+  #define controller_string_control_group "control_group"
+  #define controller_string_default       "default"
+  #define controller_string_define        "define"
+  #define controller_string_entry         "entry"
+  #define controller_string_entries       "entries"
+  #define controller_string_environment   "environment"
+  #define controller_string_failsafe      "failsafe"
+  #define controller_string_group         "group"
+  #define controller_string_item          "item"
+  #define controller_string_kill          "kill"
+  #define controller_string_main          "main"
+  #define controller_string_name          "name"
+  #define controller_string_need          "need"
+  #define controller_string_parameter     "parameter"
+  #define controller_string_path          "path"
+  #define controller_string_pid           "pid"
+  #define controller_string_ready         "ready"
+  #define controller_string_reload        "reload"
+  #define controller_string_require       "require"
+  #define controller_string_restart       "restart"
+  #define controller_string_rule          "rule"
+  #define controller_string_rules         "rules"
+  #define controller_string_script        "script"
+  #define controller_string_service       "service"
+  #define controller_string_settings      "settings"
+  #define controller_string_start         "start"
+  #define controller_string_stop          "stop"
+  #define controller_string_timeout       "timeout"
+  #define controller_string_use           "use"
+  #define controller_string_user          "user"
+  #define controller_string_wait          "wait"
+  #define controller_string_want          "want"
+  #define controller_string_wish          "wish"
+
+  #define controller_string_asynchronous_length  12
+  #define controller_string_create_length        6
+  #define controller_string_command_length       7
+  #define controller_string_consider_length      8
+  #define controller_string_control_group_length 13
+  #define controller_string_define_length        6
+  #define controller_string_default_length       7
+  #define controller_string_entry_length         5
+  #define controller_string_entries_length       7
+  #define controller_string_environment_length   11
+  #define controller_string_failsafe_length      8
+  #define controller_string_group_length         5
+  #define controller_string_item_length          4
+  #define controller_string_kill_length          4
+  #define controller_string_main_length          4
+  #define controller_string_name_length          4
+  #define controller_string_need_length          4
+  #define controller_string_parameter_length     9
+  #define controller_string_path_length          4
+  #define controller_string_pid_length           3
+  #define controller_string_ready_length         5
+  #define controller_string_reload_length        6
+  #define controller_string_require_length       7
+  #define controller_string_restart_length       7
+  #define controller_string_rule_length          4
+  #define controller_string_rules_length         5
+  #define controller_string_script_length        6
+  #define controller_string_service_length       7
+  #define controller_string_settings_length      8
+  #define controller_string_start_length         5
+  #define controller_string_stop_length          4
+  #define controller_string_timeout_length       7
+  #define controller_string_use_length           3
+  #define controller_string_user_length          4
+  #define controller_string_wait_length          4
+  #define controller_string_want_length          4
+  #define controller_string_wish_length          4
+#endif // _di_controller_string_
+
+#ifndef _di_controller_rule_action_t_
+  enum {
+    controller_rule_action_method_extended = 1,
+    controller_rule_action_method_extended_list,
+  };
+
+  enum {
+    controller_rule_action_type_create = 1,
+    controller_rule_action_type_group,
+    controller_rule_action_type_kill,
+    controller_rule_action_type_restart,
+    controller_rule_action_type_reload,
+    controller_rule_action_type_start,
+    controller_rule_action_type_stop,
+    controller_rule_action_type_use,
+    controller_rule_action_type_user,
+  };
+
+  typedef struct {
+    f_string_length_t line;
+
+    f_status_t status;
+
+    f_string_dynamics_t parameters;
+  } controller_rule_action_t;
+
+  #define controller_rule_action_t_initialize \
+    { \
+      0, \
+      F_known_not, \
+      f_string_dynamics_t_initialize, \
+    }
+
+  #define controller_macro_rule_action_t_delete_simple(action) \
+    f_macro_string_dynamics_t_delete_simple(action.parameters)
+#endif // _di_controller_rule_action_t_
+
+#ifndef _di_controller_rule_actions_t_
+  typedef struct {
+    uint8_t method;
+    uint8_t type;
+
+    controller_rule_action_t *array;
+
+    f_array_length_t size;
+    f_array_length_t used;
+  } controller_rule_actions_t;
+
+  #define controller_rule_actions_t_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+      0, \
+      0, \
+    }
+
+  #define controller_macro_rule_actions_t_delete_simple(actions) \
+    actions.used = actions.size; \
+    while (actions.used) { \
+      actions.used--; \
+      controller_macro_rule_action_t_delete_simple(actions.array[actions.used]); \
+    } \
+    f_memory_delete((void **) & actions.array, sizeof(controller_rule_action_t), actions.size); \
+    actions.size = 0;
+#endif // _di_controller_rule_actions_t_
+
+#ifndef _di_controller_rule_item_t_
+  enum {
+    controller_rule_item_type_command = 1,
+    controller_rule_item_type_script,
+    controller_rule_item_type_service,
+    controller_rule_item_type_settings,
+  };
+
+  typedef struct {
+    uint8_t type;
+    f_string_length_t line;
+
+    controller_rule_actions_t actions;
+  } controller_rule_item_t;
+
+  #define controller_rule_item_t_initialize \
+    { \
+      0, \
+      0, \
+      controller_rule_actions_t_initialize, \
+    }
+
+  #define controller_macro_rule_item_t_delete_simple(item) \
+    controller_macro_rule_actions_t_delete_simple(item.actions)
+#endif // _di_controller_rule_item_t_
+
+#ifndef _di_controller_rule_items_t_
+  typedef struct {
+    controller_rule_item_t *array;
+
+    f_array_length_t size;
+    f_array_length_t used;
+  } controller_rule_items_t;
+
+  #define controller_rule_items_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+    }
+
+  #define controller_macro_rule_items_t_delete_simple(items) \
+    items.used = items.size; \
+    while (items.used) { \
+      items.used--; \
+      controller_macro_rule_item_t_delete_simple(items.array[items.used]); \
+    } \
+    f_memory_delete((void **) & items.array, sizeof(controller_rule_item_t), items.size); \
+    items.size = 0;
+#endif // _di_controller_rule_items_t_
+
+#ifndef _di_controller_rule_t_
+  enum {
+    controller_rule_setting_type_control_group = 1,
+    controller_rule_setting_type_define,
+    controller_rule_setting_type_environment,
+    controller_rule_setting_type_name,
+    controller_rule_setting_type_need,
+    controller_rule_setting_type_parameter,
+    controller_rule_setting_type_path,
+    controller_rule_setting_type_want,
+    controller_rule_setting_type_wish,
+  };
+
+  typedef struct {
+    f_status_t status;
+
+    f_string_dynamic_t id;
+    f_string_dynamic_t name;
+    f_string_dynamic_t control_group;
+    f_string_dynamic_t path;
+
+    f_string_maps_t define;
+    f_string_maps_t parameter;
+
+    f_string_dynamics_t environment;
+    f_string_dynamics_t need;
+    f_string_dynamics_t want;
+    f_string_dynamics_t wish;
+
+    controller_rule_items_t items;
+  } controller_rule_t;
+
+  #define controller_rule_t_initialize \
+    { \
+      F_known_not, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_maps_t_initialize, \
+      f_string_maps_t_initialize, \
+      f_string_dynamics_t_initialize, \
+      f_string_dynamics_t_initialize, \
+      f_string_dynamics_t_initialize, \
+      f_string_dynamics_t_initialize, \
+      controller_rule_items_initialize, \
+    }
+
+  #define controller_macro_rule_t_delete_simple(rule) \
+    f_macro_string_dynamic_t_delete_simple(rule.id) \
+    f_macro_string_dynamic_t_delete_simple(rule.name) \
+    f_macro_string_dynamic_t_delete_simple(rule.control_group) \
+    f_macro_string_dynamic_t_delete_simple(rule.path) \
+    f_macro_string_maps_t_delete_simple(rule.define) \
+    f_macro_string_maps_t_delete_simple(rule.parameter) \
+    f_macro_string_dynamics_t_delete_simple(rule.environment) \
+    f_macro_string_dynamics_t_delete_simple(rule.need) \
+    f_macro_string_dynamics_t_delete_simple(rule.want) \
+    f_macro_string_dynamics_t_delete_simple(rule.wish) \
+    controller_macro_rule_items_t_delete_simple(rule.items)
+#endif // _di_controller_rule_t_
+
+#ifndef _di_controller_rules_t_
+  typedef struct {
+    controller_rule_t *array;
+
+    f_array_length_t size;
+    f_array_length_t used;
+  } controller_rules_t;
+
+  #define controller_rules_t_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+    }
+
+  #define controller_macro_rules_t_delete_simple(rules) \
+    rules.used = rules.size; \
+    while (rules.used) { \
+      rules.used--; \
+      controller_macro_rule_t_delete_simple(rules.array[rules.used]); \
+    } \
+    f_memory_delete((void **) & rules.array, sizeof(controller_rule_t), rules.size); \
+    rules.size = 0;
+#endif // _di_controller_rules_t_
+
+#ifndef _di_controller_entry_action_t_
+  enum {
+    controller_entry_action_type_consider = 1,
+    controller_entry_action_type_failsafe,
+    controller_entry_action_type_item,
+    controller_entry_action_type_ready,
+    controller_entry_action_type_rule,
+    controller_entry_action_type_timeout,
+  };
+
+  #define controller_entry_rule_code_asynchronous 0x1
+  #define controller_entry_rule_code_require      0x2
+  #define controller_entry_rule_code_wait         0x4
+
+  #define controller_entry_timeout_code_kill  0x1
+  #define controller_entry_timeout_code_start 0x2
+  #define controller_entry_timeout_code_stop  0x4
+
+  typedef struct {
+    uint8_t type;
+    uint8_t code;
+
+    f_string_length_t line;
+    f_number_unsigned_t timeout;
+
+    f_status_t status;
+
+    f_string_dynamics_t parameters;
+  } controller_entry_action_t;
+
+  #define controller_entry_action_t_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+      0, \
+      F_known_not, \
+      f_string_dynamics_t_initialize, \
+    }
+
+  #define controller_macro_entry_action_t_delete_simple(action) \
+    f_macro_string_dynamics_t_delete_simple(action.parameters)
+#endif // _di_controller_entry_action_t_
+
+#ifndef _di_controller_entry_actions_t_
+  typedef struct {
+    controller_entry_action_t *array;
+
+    f_array_length_t size;
+    f_array_length_t used;
+  } controller_entry_actions_t;
+
+  #define controller_entry_actions_t_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+    }
+
+  #define controller_macro_entry_actions_t_delete_simple(actions) \
+    actions.used = actions.size; \
+    while (actions.used) { \
+      actions.used--; \
+      controller_macro_entry_action_t_delete_simple(actions.array[actions.used]); \
+    } \
+    f_memory_delete((void **) & actions.array, sizeof(controller_entry_action_t), actions.size); \
+    actions.size = 0;
+#endif // _di_controller_entry_actions_t_
+
+#ifndef _di_controller_entry_item_t_
+  typedef struct {
+    f_string_length_t line;
+
+    f_string_dynamic_t name;
+    controller_entry_actions_t actions;
+  } controller_entry_item_t;
+
+  #define controller_entry_item_t_initialize \
+    { \
+      0, \
+      f_string_dynamic_t_initialize, \
+      controller_entry_actions_t_initialize, \
+    }
+
+  #define controller_macro_entry_item_t_delete_simple(item) \
+    f_macro_string_dynamic_t_delete_simple(item.name) \
+    controller_macro_entry_actions_t_delete_simple(item.actions)
+#endif // _di_controller_entry_item_t_
+
+#ifndef _di_controller_entry_items_t_
+  typedef struct {
+    controller_entry_item_t *array;
+
+    f_array_length_t size;
+    f_array_length_t used;
+  } controller_entry_items_t;
+
+  #define controller_entry_items_t_initialize \
+    { \
+      0, \
+      0, \
+      0, \
+    }
+
+  #define controller_macro_entry_items_t_delete_simple(items) \
+    items.used = items.size; \
+    while (items.used) { \
+      items.used--; \
+      controller_macro_entry_item_t_delete_simple(items.array[items.used]); \
+    } \
+    f_memory_delete((void **) & items.array, sizeof(controller_entry_item_t), items.size); \
+    items.size = 0;
+#endif // _di_controller_entry_items_t_
+
+#ifndef _di_controller_entry_t_
+  typedef struct {
+    f_status_t status;
+    controller_entry_items_t items;
+  } controller_entry_t;
+
+  #define controller_entry_t_initialize \
+    { \
+      F_known_not, \
+      controller_entry_items_t_initialize, \
+    }
+
+  #define controller_macro_entry_t_delete_simple(entry) \
+    controller_macro_entry_items_t_delete_simple(entry.items)
+#endif // _di_controller_entry_t_
+
+#ifndef _di_controller_setting_t
+  enum {
+    controller_setting_ready_no = 0,
+    controller_setting_ready_wait,
+    controller_setting_ready_yes,
+  };
+
+  typedef struct {
+    bool interruptable;
+    uint8_t ready;
+
+    f_string_dynamic_t path_pid;
+    f_string_dynamic_t path_setting;
+
+    controller_entry_t entry;
+    controller_rules_t rules;
+  } controller_setting_t;
+
+  #define controller_setting_t_initialize \
+    { \
+      F_false, \
+      0, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      controller_entry_t_initialize, \
+      controller_rules_t_initialize, \
+    }
+
+  #define controller_macro_setting_t_delete_simple(setting) \
+    f_macro_string_dynamic_t_delete_simple(setting.path_pid) \
+    f_macro_string_dynamic_t_delete_simple(setting.path_setting) \
+    controller_macro_entry_t_delete_simple(setting.entry) \
+    controller_macro_rules_t_delete_simple(setting.rules)
+#endif // _di_controller_setting_t
+
+#ifndef _di_controller_cache_t_
+  typedef struct {
+    f_string_length_t line_action;
+    f_string_length_t line_item;
+
+    f_string_range_t range_action;
+
+    f_fss_comments_t comments;
+    f_fss_delimits_t delimits;
+
+    f_fss_content_t content_action;
+    f_fss_contents_t content_actions;
+    f_fss_contents_t content_items;
+    f_fss_objects_t object_actions;
+    f_fss_objects_t object_items;
+
+    f_string_dynamic_t buffer_file;
+    f_string_dynamic_t buffer_item;
+    f_string_dynamic_t buffer_path;
+
+    f_string_dynamic_t name_action;
+    f_string_dynamic_t name_file;
+    f_string_dynamic_t name_item;
+  } controller_cache_t;
+
+  #define controller_cache_t_initialize \
+    { \
+      0, \
+      0, \
+      f_string_range_t_initialize, \
+      f_fss_comments_t_initialize, \
+      f_fss_delimits_t_initialize, \
+      f_fss_content_t_initialize, \
+      f_fss_contents_t_initialize, \
+      f_fss_contents_t_initialize, \
+      f_fss_objects_t_initialize, \
+      f_fss_objects_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+      f_string_dynamic_t_initialize, \
+    }
+
+  #define controller_macro_cache_t_delete_simple(cache) \
+    f_macro_fss_comments_t_delete_simple(cache.comments) \
+    f_macro_fss_delimits_t_delete_simple(cache.delimits) \
+    f_macro_fss_content_t_delete_simple(cache.content_action) \
+    f_macro_fss_contents_t_delete_simple(cache.content_actions) \
+    f_macro_fss_contents_t_delete_simple(cache.content_items) \
+    f_macro_fss_objects_t_delete_simple(cache.object_actions) \
+    f_macro_fss_objects_t_delete_simple(cache.object_items) \
+    f_macro_string_dynamic_t_delete_simple(cache.buffer_file) \
+    f_macro_string_dynamic_t_delete_simple(cache.buffer_item) \
+    f_macro_string_dynamic_t_delete_simple(cache.buffer_path) \
+    f_macro_string_dynamic_t_delete_simple(cache.name_action) \
+    f_macro_string_dynamic_t_delete_simple(cache.name_file) \
+    f_macro_string_dynamic_t_delete_simple(cache.name_item)
+#endif // _di_controller_cache_t_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _PRIVATE_common_h
index 24d836a16107e5f6c7f3636268fec62910fd595b..8008106e77d2f961e71ec34b93034354ede9f0e9 100644 (file)
@@ -1,4 +1,5 @@
 #include "controller.h"
+#include "private-common.h"
 #include "private-control.h"
 
 #ifdef __cplusplus
index 0326baac565f2fc062d5bb8011093694fd6bc761..3bcc4e2f307ea6436e5baa89157722323cac2443 100644 (file)
@@ -8,8 +8,6 @@
 #ifndef _PRIVATE_control_h
 #define _PRIVATE_control_h
 
-#include "private-controller.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
index 72d526cfb7a3c8b43ce89d9ef09ff269dcb7464e..481d56fba5a92f1a33ba2dfe6d48f88a1ab1ccc1 100644 (file)
@@ -1,4 +1,5 @@
 #include "controller.h"
+#include "private-common.h"
 #include "private-control.h"
 #include "private-entry.h"
 #include "private-rule.h"
@@ -169,6 +170,13 @@ extern "C" {
   }
 #endif // _di_controller_file_pid_delete_
 
+#ifndef _di_controller_preprocess_rules_
+  f_return_status controller_preprocess_rules(const controller_data_t data, controller_setting_t *setting, controller_cache_t *cache) {
+    // @todo
+    return F_none;
+  }
+#endif // _di_controller_preprocess_rules_
+
 #ifndef _di_controller_status_simplify_
   f_return_status controller_status_simplify(const f_status_t status) {
 
index b2c7696f80847d637a13d081e2a43445780ad23e..0cd4dec3aaa9c38a0bd84eda6ae3c36d88dfd902 100644 (file)
 extern "C" {
 #endif
 
-#ifndef _di_controller_string_
-  #define controller_string_asynchronous  "asynchronous"
-  #define controller_string_create        "create"
-  #define controller_string_command       "command"
-  #define controller_string_consider      "consider"
-  #define controller_string_control_group "control_group"
-  #define controller_string_default       "default"
-  #define controller_string_define        "define"
-  #define controller_string_entry         "entry"
-  #define controller_string_entries       "entries"
-  #define controller_string_environment   "environment"
-  #define controller_string_failsafe      "failsafe"
-  #define controller_string_group         "group"
-  #define controller_string_item          "item"
-  #define controller_string_kill          "kill"
-  #define controller_string_main          "main"
-  #define controller_string_name          "name"
-  #define controller_string_need          "need"
-  #define controller_string_parameter     "parameter"
-  #define controller_string_path          "path"
-  #define controller_string_pid           "pid"
-  #define controller_string_ready         "ready"
-  #define controller_string_reload        "reload"
-  #define controller_string_require       "require"
-  #define controller_string_restart       "restart"
-  #define controller_string_rule          "rule"
-  #define controller_string_rules         "rules"
-  #define controller_string_script        "script"
-  #define controller_string_service       "service"
-  #define controller_string_settings      "settings"
-  #define controller_string_start         "start"
-  #define controller_string_stop          "stop"
-  #define controller_string_timeout       "timeout"
-  #define controller_string_use           "use"
-  #define controller_string_user          "user"
-  #define controller_string_wait          "wait"
-  #define controller_string_want          "want"
-  #define controller_string_wish          "wish"
-
-  #define controller_string_asynchronous_length  12
-  #define controller_string_create_length        6
-  #define controller_string_command_length       7
-  #define controller_string_consider_length      8
-  #define controller_string_control_group_length 13
-  #define controller_string_define_length        6
-  #define controller_string_default_length       7
-  #define controller_string_entry_length         5
-  #define controller_string_entries_length       7
-  #define controller_string_environment_length   11
-  #define controller_string_failsafe_length      8
-  #define controller_string_group_length         5
-  #define controller_string_item_length          4
-  #define controller_string_kill_length          4
-  #define controller_string_main_length          4
-  #define controller_string_name_length          4
-  #define controller_string_need_length          4
-  #define controller_string_parameter_length     9
-  #define controller_string_path_length          4
-  #define controller_string_pid_length           3
-  #define controller_string_ready_length         5
-  #define controller_string_reload_length        6
-  #define controller_string_require_length       7
-  #define controller_string_restart_length       7
-  #define controller_string_rule_length          4
-  #define controller_string_rules_length         5
-  #define controller_string_script_length        6
-  #define controller_string_service_length       7
-  #define controller_string_settings_length      8
-  #define controller_string_start_length         5
-  #define controller_string_stop_length          4
-  #define controller_string_timeout_length       7
-  #define controller_string_use_length           3
-  #define controller_string_user_length          4
-  #define controller_string_wait_length          4
-  #define controller_string_want_length          4
-  #define controller_string_wish_length          4
-#endif // _di_controller_string_
-
-#ifndef _di_controller_rule_action_t_
-  enum {
-    controller_rule_action_method_extended = 1,
-    controller_rule_action_method_extended_list,
-  };
-
-  enum {
-    controller_rule_action_type_create = 1,
-    controller_rule_action_type_group,
-    controller_rule_action_type_kill,
-    controller_rule_action_type_restart,
-    controller_rule_action_type_reload,
-    controller_rule_action_type_start,
-    controller_rule_action_type_stop,
-    controller_rule_action_type_use,
-    controller_rule_action_type_user,
-  };
-
-  typedef struct {
-    f_string_length_t line;
-
-    f_status_t status;
-
-    f_string_dynamics_t parameters;
-  } controller_rule_action_t;
-
-  #define controller_rule_action_t_initialize \
-    { \
-      0, \
-      F_known_not, \
-      f_string_dynamics_t_initialize, \
-    }
-
-  #define controller_macro_rule_action_t_delete_simple(action) \
-    f_macro_string_dynamics_t_delete_simple(action.parameters)
-#endif // _di_controller_rule_action_t_
-
-#ifndef _di_controller_rule_actions_t_
-  typedef struct {
-    uint8_t method;
-    uint8_t type;
-
-    controller_rule_action_t *array;
-
-    f_array_length_t size;
-    f_array_length_t used;
-  } controller_rule_actions_t;
-
-  #define controller_rule_actions_t_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-      0, \
-      0, \
-    }
-
-  #define controller_macro_rule_actions_t_delete_simple(actions) \
-    actions.used = actions.size; \
-    while (actions.used) { \
-      actions.used--; \
-      controller_macro_rule_action_t_delete_simple(actions.array[actions.used]); \
-    } \
-    f_memory_delete((void **) & actions.array, sizeof(controller_rule_action_t), actions.size); \
-    actions.size = 0;
-#endif // _di_controller_rule_actions_t_
-
-#ifndef _di_controller_rule_item_t_
-  enum {
-    controller_rule_item_type_command = 1,
-    controller_rule_item_type_script,
-    controller_rule_item_type_service,
-    controller_rule_item_type_settings,
-  };
-
-  typedef struct {
-    uint8_t type;
-    f_string_length_t line;
-
-    controller_rule_actions_t actions;
-  } controller_rule_item_t;
-
-  #define controller_rule_item_t_initialize \
-    { \
-      0, \
-      0, \
-      controller_rule_actions_t_initialize, \
-    }
-
-  #define controller_macro_rule_item_t_delete_simple(item) \
-    controller_macro_rule_actions_t_delete_simple(item.actions)
-#endif // _di_controller_rule_item_t_
-
-#ifndef _di_controller_rule_items_t_
-  typedef struct {
-    controller_rule_item_t *array;
-
-    f_array_length_t size;
-    f_array_length_t used;
-  } controller_rule_items_t;
-
-  #define controller_rule_items_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-    }
-
-  #define controller_macro_rule_items_t_delete_simple(items) \
-    items.used = items.size; \
-    while (items.used) { \
-      items.used--; \
-      controller_macro_rule_item_t_delete_simple(items.array[items.used]); \
-    } \
-    f_memory_delete((void **) & items.array, sizeof(controller_rule_item_t), items.size); \
-    items.size = 0;
-#endif // _di_controller_rule_items_t_
-
-#ifndef _di_controller_rule_t_
-  enum {
-    controller_rule_setting_type_control_group = 1,
-    controller_rule_setting_type_define,
-    controller_rule_setting_type_environment,
-    controller_rule_setting_type_name,
-    controller_rule_setting_type_need,
-    controller_rule_setting_type_parameter,
-    controller_rule_setting_type_path,
-    controller_rule_setting_type_want,
-    controller_rule_setting_type_wish,
-  };
-
-  typedef struct {
-    f_status_t status;
-
-    f_string_dynamic_t id;
-    f_string_dynamic_t name;
-    f_string_dynamic_t control_group;
-    f_string_dynamic_t path;
-
-    f_string_maps_t define;
-    f_string_maps_t parameter;
-
-    f_string_dynamics_t environment;
-    f_string_dynamics_t need;
-    f_string_dynamics_t want;
-    f_string_dynamics_t wish;
-
-    controller_rule_items_t items;
-  } controller_rule_t;
-
-  #define controller_rule_t_initialize \
-    { \
-      F_known_not, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_maps_t_initialize, \
-      f_string_maps_t_initialize, \
-      f_string_dynamics_t_initialize, \
-      f_string_dynamics_t_initialize, \
-      f_string_dynamics_t_initialize, \
-      f_string_dynamics_t_initialize, \
-      controller_rule_items_initialize, \
-    }
-
-  #define controller_macro_rule_t_delete_simple(rule) \
-    f_macro_string_dynamic_t_delete_simple(rule.id) \
-    f_macro_string_dynamic_t_delete_simple(rule.name) \
-    f_macro_string_dynamic_t_delete_simple(rule.control_group) \
-    f_macro_string_dynamic_t_delete_simple(rule.path) \
-    f_macro_string_maps_t_delete_simple(rule.define) \
-    f_macro_string_maps_t_delete_simple(rule.parameter) \
-    f_macro_string_dynamics_t_delete_simple(rule.environment) \
-    f_macro_string_dynamics_t_delete_simple(rule.need) \
-    f_macro_string_dynamics_t_delete_simple(rule.want) \
-    f_macro_string_dynamics_t_delete_simple(rule.wish) \
-    controller_macro_rule_items_t_delete_simple(rule.items)
-#endif // _di_controller_rule_t_
-
-#ifndef _di_controller_rules_t_
-  typedef struct {
-    controller_rule_t *array;
-
-    f_array_length_t size;
-    f_array_length_t used;
-  } controller_rules_t;
-
-  #define controller_rules_t_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-    }
-
-  #define controller_macro_rules_t_delete_simple(rules) \
-    rules.used = rules.size; \
-    while (rules.used) { \
-      rules.used--; \
-      controller_macro_rule_t_delete_simple(rules.array[rules.used]); \
-    } \
-    f_memory_delete((void **) & rules.array, sizeof(controller_rule_t), rules.size); \
-    rules.size = 0;
-#endif // _di_controller_rules_t_
-
-#ifndef _di_controller_entry_action_t_
-  enum {
-    controller_entry_action_type_consider = 1,
-    controller_entry_action_type_failsafe,
-    controller_entry_action_type_item,
-    controller_entry_action_type_ready,
-    controller_entry_action_type_rule,
-    controller_entry_action_type_timeout,
-  };
-
-  #define controller_entry_rule_code_asynchronous 0x1
-  #define controller_entry_rule_code_require      0x2
-  #define controller_entry_rule_code_wait         0x4
-
-  #define controller_entry_timeout_code_kill  0x1
-  #define controller_entry_timeout_code_start 0x2
-  #define controller_entry_timeout_code_stop  0x4
-
-  typedef struct {
-    uint8_t type;
-    uint8_t code;
-
-    f_string_length_t line;
-    f_number_unsigned_t timeout;
-
-    f_status_t status;
-
-    f_string_dynamics_t parameters;
-  } controller_entry_action_t;
-
-  #define controller_entry_action_t_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-      0, \
-      F_known_not, \
-      f_string_dynamics_t_initialize, \
-    }
-
-  #define controller_macro_entry_action_t_delete_simple(action) \
-    f_macro_string_dynamics_t_delete_simple(action.parameters)
-#endif // _di_controller_entry_action_t_
-
-#ifndef _di_controller_entry_actions_t_
-  typedef struct {
-    controller_entry_action_t *array;
-
-    f_array_length_t size;
-    f_array_length_t used;
-  } controller_entry_actions_t;
-
-  #define controller_entry_actions_t_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-    }
-
-  #define controller_macro_entry_actions_t_delete_simple(actions) \
-    actions.used = actions.size; \
-    while (actions.used) { \
-      actions.used--; \
-      controller_macro_entry_action_t_delete_simple(actions.array[actions.used]); \
-    } \
-    f_memory_delete((void **) & actions.array, sizeof(controller_entry_action_t), actions.size); \
-    actions.size = 0;
-#endif // _di_controller_entry_actions_t_
-
-#ifndef _di_controller_entry_item_t_
-  typedef struct {
-    f_string_length_t line;
-
-    f_string_dynamic_t name;
-    controller_entry_actions_t actions;
-  } controller_entry_item_t;
-
-  #define controller_entry_item_t_initialize \
-    { \
-      0, \
-      f_string_dynamic_t_initialize, \
-      controller_entry_actions_t_initialize, \
-    }
-
-  #define controller_macro_entry_item_t_delete_simple(item) \
-    f_macro_string_dynamic_t_delete_simple(item.name) \
-    controller_macro_entry_actions_t_delete_simple(item.actions)
-#endif // _di_controller_entry_item_t_
-
-#ifndef _di_controller_entry_items_t_
-  typedef struct {
-    controller_entry_item_t *array;
-
-    f_array_length_t size;
-    f_array_length_t used;
-  } controller_entry_items_t;
-
-  #define controller_entry_items_t_initialize \
-    { \
-      0, \
-      0, \
-      0, \
-    }
-
-  #define controller_macro_entry_items_t_delete_simple(items) \
-    items.used = items.size; \
-    while (items.used) { \
-      items.used--; \
-      controller_macro_entry_item_t_delete_simple(items.array[items.used]); \
-    } \
-    f_memory_delete((void **) & items.array, sizeof(controller_entry_item_t), items.size); \
-    items.size = 0;
-#endif // _di_controller_entry_items_t_
-
-#ifndef _di_controller_entry_t_
-  typedef struct {
-    f_status_t status;
-    controller_entry_items_t items;
-  } controller_entry_t;
-
-  #define controller_entry_t_initialize \
-    { \
-      F_known_not, \
-      controller_entry_items_t_initialize, \
-    }
-
-  #define controller_macro_entry_t_delete_simple(entry) \
-    controller_macro_entry_items_t_delete_simple(entry.items)
-#endif // _di_controller_entry_t_
-
-#ifndef _di_controller_setting_t
-  typedef struct {
-    bool interruptable;
-    bool ready;
-
-    f_string_dynamic_t path_pid;
-    f_string_dynamic_t path_setting;
-
-    controller_entry_t entry;
-    controller_rules_t rules;
-  } controller_setting_t;
-
-  #define controller_setting_t_initialize \
-    { \
-      F_false, \
-      F_false, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      controller_entry_t_initialize, \
-      controller_rules_t_initialize, \
-    }
-
-  #define controller_macro_setting_t_delete_simple(setting) \
-    f_macro_string_dynamic_t_delete_simple(setting.path_pid) \
-    f_macro_string_dynamic_t_delete_simple(setting.path_setting) \
-    controller_macro_entry_t_delete_simple(setting.entry) \
-    controller_macro_rules_t_delete_simple(setting.rules)
-#endif // _di_controller_setting_t
-
 /**
  * Load a file from the controller settings directory.
  *
@@ -529,6 +87,23 @@ extern "C" {
 #endif // _di_controller_file_pid_delete_
 
 /**
+ * Load relevant rules into memory and performing other pre-process tasks.
+ *
+ * @param data
+ *   The program data.
+ * @param setting
+ *   The controller settings data.
+ * @param cache
+ *   The cache.
+ *
+ * @return
+ *   F_none on success.
+ */
+#ifndef _di_controller_preprocess_rules_
+  extern f_return_status controller_preprocess_rules(const controller_data_t data, controller_setting_t *setting, controller_cache_t *cache) f_gcc_attribute_visibility_internal;
+#endif // _di_controller_preprocess_rules_
+
+/**
  * Given a wide range of status codes, simplify them down to a small subset.
  *
  * @param status
index 4129cf93576b1b30c34b4b1c04130f348603e30c..61cf9c5be65cfcfa06a632ed0c1ba27a279954c9 100644 (file)
@@ -1,4 +1,6 @@
 #include "controller.h"
+#include "private-common.h"
+#include "private-controller.h"
 #include "private-entry.h"
 
 #ifdef __cplusplus
@@ -27,7 +29,7 @@ extern "C" {
 #endif // _di_controller_entry_actions_increase_by_
 
 #ifndef _di_controller_entry_actions_read_
-  f_return_status controller_entry_actions_read(const controller_data_t data, const controller_setting_t setting, const f_string_range_t content_range, controller_entry_cache_t *cache, controller_entry_actions_t *actions) {
+  f_return_status controller_entry_actions_read(const controller_data_t data, const controller_setting_t setting, const f_string_range_t content_range, controller_cache_t *cache, controller_entry_actions_t *actions) {
     f_status_t status = F_none;
     f_status_t status_action = F_none;
 
@@ -456,7 +458,7 @@ extern "C" {
 #endif // _di_controller_entry_actions_read_
 
 #ifndef _di_controller_entry_error_print_
-  void controller_entry_error_print(const fll_error_print_t output, const controller_entry_cache_t cache) {
+  void controller_entry_error_print(const fll_error_print_t output, const controller_cache_t cache) {
 
     if (output.verbosity != f_console_verbosity_quiet) {
       fprintf(output.to.stream, "%c", f_string_eol[0]);
@@ -509,7 +511,7 @@ extern "C" {
 #endif // _di_controller_entry_items_increase_by_
 
 #ifndef _di_controller_entry_read_
-  f_return_status controller_entry_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t entry_name, controller_entry_cache_t *cache, controller_entry_t *entry) {
+  f_return_status controller_entry_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t entry_name, controller_cache_t *cache, controller_entry_t *entry) {
     f_status_t status = F_none;
 
     entry->status = F_known_not;
index b69abf251d6da0ae1b0fa8ff4ae3453399e58c2f..3423ac964c7c8dd54dc7cb4a15e2293bfbde0344 100644 (file)
@@ -8,63 +8,6 @@
 #ifndef _PRIVATE_entry_h
 #define _PRIVATE_entry_h
 
-#include "private-controller.h"
-
-#ifndef _di_controller_entry_cache_t_
-  typedef struct {
-    f_string_length_t line_action;
-    f_string_length_t line_item;
-
-    f_fss_comments_t comments;
-    f_fss_delimits_t delimits;
-
-    f_fss_content_t content_action;
-    f_fss_contents_t content_actions;
-    f_fss_contents_t content_items;
-    f_fss_objects_t object_actions;
-    f_fss_objects_t object_items;
-
-    f_string_dynamic_t buffer_file;
-    f_string_dynamic_t buffer_path;
-
-    f_string_dynamic_t name_action;
-    f_string_dynamic_t name_file;
-    f_string_dynamic_t name_item;
-  } controller_entry_cache_t;
-
-  #define controller_entry_cache_t_initialize \
-    { \
-      0, \
-      0, \
-      f_fss_comments_t_initialize, \
-      f_fss_delimits_t_initialize, \
-      f_fss_content_t_initialize, \
-      f_fss_contents_t_initialize, \
-      f_fss_contents_t_initialize, \
-      f_fss_objects_t_initialize, \
-      f_fss_objects_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-    }
-
-  #define controller_macro_entry_cache_t_delete_simple(cache) \
-    f_macro_fss_comments_t_delete_simple(cache.comments) \
-    f_macro_fss_delimits_t_delete_simple(cache.delimits) \
-    f_macro_fss_content_t_delete_simple(cache.content_action) \
-    f_macro_fss_contents_t_delete_simple(cache.content_actions) \
-    f_macro_fss_contents_t_delete_simple(cache.content_items) \
-    f_macro_fss_objects_t_delete_simple(cache.object_actions) \
-    f_macro_fss_objects_t_delete_simple(cache.object_items) \
-    f_macro_string_dynamic_t_delete_simple(cache.buffer_file) \
-    f_macro_string_dynamic_t_delete_simple(cache.buffer_path) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_action) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_file) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_item)
-#endif // _di_controller_entry_cache_t_
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -127,7 +70,7 @@ extern "C" {
  * @see fll_fss_extended_read()
  */
 #ifndef _di_controller_entry_actions_read_
-  extern f_return_status controller_entry_actions_read(const controller_data_t data, const controller_setting_t setting, const f_string_range_t content_range, controller_entry_cache_t *cache, controller_entry_actions_t *items) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_entry_actions_read(const controller_data_t data, const controller_setting_t setting, const f_string_range_t content_range, controller_cache_t *cache, controller_entry_actions_t *items) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_entry_actions_read_
 
 /**
@@ -144,7 +87,7 @@ extern "C" {
  * @see controller_entry_read()
  */
 #ifndef _di_controller_entry_error_print_
-  extern void controller_entry_error_print(const fll_error_print_t output, const controller_entry_cache_t cache) f_gcc_attribute_visibility_internal;
+  extern void controller_entry_error_print(const fll_error_print_t output, const controller_cache_t cache) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_entry_error_print_
 
 /**
@@ -201,7 +144,7 @@ extern "C" {
  * @see fll_fss_basic_list_read()
  */
 #ifndef _di_controller_entry_read_
-  extern f_return_status controller_entry_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t entry_name, controller_entry_cache_t *cache, controller_entry_t *entry) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_entry_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t entry_name, controller_cache_t *cache, controller_entry_t *entry) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_entry_read_
 
 #ifdef __cplusplus
index 127a1af90e67ec3b2ef35f81beaeff6c2c4389ad..52e16e6af1d7ca2a09bc849ee2986b8011afcddc 100644 (file)
@@ -1,4 +1,6 @@
 #include "controller.h"
+#include "private-common.h"
+#include "private-controller.h"
 #include "private-rule.h"
 
 #ifdef __cplusplus
@@ -73,7 +75,7 @@ extern "C" {
 #endif // _di_controller_rule_actions_increase_by_
 
 #ifndef _di_controller_rule_actions_read_
-  f_return_status controller_rule_actions_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_item_t *item, controller_rule_actions_t *actions, f_string_range_t *range) {
+  f_return_status controller_rule_actions_read(const controller_data_t data, controller_cache_t *cache, controller_rule_item_t *item, controller_rule_actions_t *actions, f_string_range_t *range) {
     f_status_t status = F_none;
 
     actions->used = 0;
@@ -235,7 +237,7 @@ extern "C" {
 #endif // _di_controller_rule_actions_read_
 
 #ifndef _di_controller_rule_error_print_
-  void controller_rule_error_print(const fll_error_print_t output, const controller_rule_cache_t cache, const bool item) {
+  void controller_rule_error_print(const fll_error_print_t output, const controller_cache_t cache, const bool item) {
 
     if (output.verbosity != f_console_verbosity_quiet) {
       fprintf(output.to.stream, "%c", f_string_eol[0]);
@@ -267,7 +269,7 @@ extern "C" {
 #endif // _di_controller_rule_error_print_
 
 #ifndef _di_controller_rule_item_read_
-  f_return_status controller_rule_item_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_item_t *item) {
+  f_return_status controller_rule_item_read(const controller_data_t data, controller_cache_t *cache, controller_rule_item_t *item) {
     f_status_t status = F_none;
 
     f_string_range_t range = f_macro_string_range_t_initialize(cache->buffer_item.used);
@@ -437,7 +439,7 @@ extern "C" {
 #endif // _di_controller_rule_items_increase_by_
 
 #ifndef _di_controller_rule_read_
-  f_return_status controller_rule_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t rule_id, controller_rule_cache_t *cache, controller_rule_t *rule) {
+  f_return_status controller_rule_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t rule_id, controller_cache_t *cache, controller_rule_t *rule) {
     f_status_t status = F_none;
 
     bool for_item = F_true;
@@ -622,7 +624,7 @@ extern "C" {
 #endif // _di_controller_rule_read_
 
 #ifndef _di_controller_rule_setting_read_
-  f_return_status controller_rule_setting_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_t *rule) {
+  f_return_status controller_rule_setting_read(const controller_data_t data, controller_cache_t *cache, controller_rule_t *rule) {
     f_status_t status = F_none;
     f_status_t status_return = F_none;
 
index 3c8c2011a780ca7247ea3642728b0815823767f1..a6ad8b3deb891eef8c4bc44975ad0d8e623d3842 100644 (file)
@@ -8,72 +8,10 @@
 #ifndef _PRIVATE_rule_h
 #define _PRIVATE_rule_h
 
-#include "private-controller.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#ifndef _di_controller_rule_cache_t_
-  typedef struct {
-    f_string_length_t line_action;
-    f_string_length_t line_item;
-
-    f_string_range_t range_action;
-
-    f_fss_comments_t comments;
-    f_fss_delimits_t delimits;
-
-    f_fss_content_t content_action;
-    f_fss_contents_t content_actions;
-    f_fss_contents_t content_items;
-    f_fss_objects_t object_actions;
-    f_fss_objects_t object_items;
-
-    f_string_dynamic_t buffer_file;
-    f_string_dynamic_t buffer_item;
-    f_string_dynamic_t buffer_path;
-
-    f_string_dynamic_t name_action;
-    f_string_dynamic_t name_file;
-    f_string_dynamic_t name_item;
-  } controller_rule_cache_t;
-
-  #define controller_rule_cache_t_initialize \
-    { \
-      0, \
-      0, \
-      f_string_range_t_initialize, \
-      f_fss_comments_t_initialize, \
-      f_fss_delimits_t_initialize, \
-      f_fss_content_t_initialize, \
-      f_fss_contents_t_initialize, \
-      f_fss_contents_t_initialize, \
-      f_fss_objects_t_initialize, \
-      f_fss_objects_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-      f_string_dynamic_t_initialize, \
-    }
-
-  #define controller_macro_rule_cache_t_delete_simple(cache) \
-    f_macro_fss_comments_t_delete_simple(cache.comments) \
-    f_macro_fss_delimits_t_delete_simple(cache.delimits) \
-    f_macro_fss_content_t_delete_simple(cache.content_action) \
-    f_macro_fss_contents_t_delete_simple(cache.content_actions) \
-    f_macro_fss_contents_t_delete_simple(cache.content_items) \
-    f_macro_fss_objects_t_delete_simple(cache.object_actions) \
-    f_macro_fss_objects_t_delete_simple(cache.object_items) \
-    f_macro_string_dynamic_t_delete_simple(cache.buffer_file) \
-    f_macro_string_dynamic_t_delete_simple(cache.buffer_item) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_action) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_file) \
-    f_macro_string_dynamic_t_delete_simple(cache.name_item)
-#endif // _di_controller_rule_cache_t_
-
 /**
  * Read the rule action.
  *
@@ -154,7 +92,7 @@ extern "C" {
  * @see f_fss_count_lines()
  */
 #ifndef _di_controller_rule_actions_read_
-  extern f_return_status controller_rule_actions_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_item_t *item, controller_rule_actions_t *actions, f_string_range_t *range) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_rule_actions_read(const controller_data_t data, controller_cache_t *cache, controller_rule_item_t *item, controller_rule_actions_t *actions, f_string_range_t *range) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_rule_actions_read_
 
 /**
@@ -177,7 +115,7 @@ extern "C" {
  * @see controller_rule_setting_read()
  */
 #ifndef _di_controller_rule_error_print_
-  void controller_rule_error_print(const fll_error_print_t output, const controller_rule_cache_t cache, const bool item) f_gcc_attribute_visibility_internal;
+  void controller_rule_error_print(const fll_error_print_t output, const controller_cache_t cache, const bool item) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_rule_error_print_
 
 /**
@@ -205,7 +143,7 @@ extern "C" {
  * @see fl_string_dynamic_terminate_after()
  */
 #ifndef _di_controller_rule_item_read_
-  extern f_return_status controller_rule_item_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_item_t *item) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_rule_item_read(const controller_data_t data, controller_cache_t *cache, controller_rule_item_t *item) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_rule_item_read_
 
 /**
@@ -263,7 +201,7 @@ extern "C" {
  * @see fll_fss_basic_list_read().
  */
 #ifndef _di_controller_rule_read_
-  extern f_return_status controller_rule_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t rule_id, controller_rule_cache_t *cache, controller_rule_t *rule) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_rule_read(const controller_data_t data, const controller_setting_t setting, const f_string_static_t rule_id, controller_cache_t *cache, controller_rule_t *rule) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_rule_read_
 
 /**
@@ -300,7 +238,7 @@ extern "C" {
  * @see fll_path_canonical()
  */
 #ifndef _di_controller_rule_setting_read_
-  extern f_return_status controller_rule_setting_read(const controller_data_t data, controller_rule_cache_t *cache, controller_rule_t *rule) f_gcc_attribute_visibility_internal;
+  extern f_return_status controller_rule_setting_read(const controller_data_t data, controller_cache_t *cache, controller_rule_t *rule) f_gcc_attribute_visibility_internal;
 #endif // _di_controller_rule_setting_read_
 
 #ifdef __cplusplus