From b3b1c53405c470609f84669614b24a122c56a4e1 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 20 Nov 2025 22:56:16 -0600 Subject: [PATCH] Feature: Additional status codes, F_case, F_match, F_miss, and F_word. Along with their inverses: - F_case_not - F_match_not - F_miss_not - F_word_not --- level_0/f_status/c/status.h | 8 ++++ level_0/f_status_string/c/status_string.c | 48 ++++++++++++++++++++++ level_0/f_status_string/c/status_string.h | 24 +++++++++++ .../tests/unit/c/test-status_string-to.c | 18 +++++++- level_1/fl_status_string/c/status_string.c | 48 ++++++++++++++++++++++ .../tests/unit/c/test-status_string-from.c | 18 +++++++- 6 files changed, 162 insertions(+), 2 deletions(-) diff --git a/level_0/f_status/c/status.h b/level_0/f_status/c/status.h index d2d8e5b..ab8e5e7 100644 --- a/level_0/f_status/c/status.h +++ b/level_0/f_status/c/status.h @@ -331,6 +331,8 @@ extern "C" { F_call_not, F_capability, F_capability_not, + F_case, + F_case_not, F_character, F_character_not, F_child, @@ -617,6 +619,8 @@ extern "C" { F_lock_write_not, F_loop, F_loop_not, + F_match, + F_match_not, F_maximum, F_maximum_not, F_maybe, @@ -631,6 +635,8 @@ extern "C" { F_minimum_not, F_minor, F_minor_not, + F_miss, + F_miss_not, F_moderate, F_moderate_not, F_mount, @@ -895,6 +901,8 @@ extern "C" { F_warning_not, F_wish, F_wish_not, + F_word, + F_word_not, F_world, F_world_not, F_write, diff --git a/level_0/f_status_string/c/status_string.c b/level_0/f_status_string/c/status_string.c index 67bcfe8..e075a0d 100644 --- a/level_0/f_status_string/c/status_string.c +++ b/level_0/f_status_string/c/status_string.c @@ -172,6 +172,8 @@ extern "C" { const f_string_static_t f_status_call_not_s = macro_f_string_static_t_initialize_1(F_status_call_not_s, 0, F_status_call_not_s_length); const f_string_static_t f_status_capability_s = macro_f_string_static_t_initialize_1(F_status_capability_s, 0, F_status_capability_s_length); const f_string_static_t f_status_capability_not_s = macro_f_string_static_t_initialize_1(F_status_capability_not_s, 0, F_status_capability_not_s_length); + const f_string_static_t f_status_case_s = macro_f_string_static_t_initialize_1(F_status_case_s, 0, F_status_case_s_length); + const f_string_static_t f_status_case_not_s = macro_f_string_static_t_initialize_1(F_status_case_not_s, 0, F_status_case_not_s_length); const f_string_static_t f_status_character_s = macro_f_string_static_t_initialize_1(F_status_character_s, 0, F_status_character_s_length); const f_string_static_t f_status_character_not_s = macro_f_string_static_t_initialize_1(F_status_character_not_s, 0, F_status_character_not_s_length); const f_string_static_t f_status_child_s = macro_f_string_static_t_initialize_1(F_status_child_s, 0, F_status_child_s_length); @@ -458,6 +460,8 @@ extern "C" { const f_string_static_t f_status_lock_write_not_s = macro_f_string_static_t_initialize_1(F_status_lock_write_not_s, 0, F_status_lock_write_not_s_length); const f_string_static_t f_status_loop_s = macro_f_string_static_t_initialize_1(F_status_loop_s, 0, F_status_loop_s_length); const f_string_static_t f_status_loop_not_s = macro_f_string_static_t_initialize_1(F_status_loop_not_s, 0, F_status_loop_not_s_length); + const f_string_static_t f_status_match_s = macro_f_string_static_t_initialize_1(F_status_match_s, 0, F_status_match_s_length); + const f_string_static_t f_status_match_not_s = macro_f_string_static_t_initialize_1(F_status_match_not_s, 0, F_status_match_not_s_length); const f_string_static_t f_status_maximum_s = macro_f_string_static_t_initialize_1(F_status_maximum_s, 0, F_status_maximum_s_length); const f_string_static_t f_status_maximum_not_s = macro_f_string_static_t_initialize_1(F_status_maximum_not_s, 0, F_status_maximum_not_s_length); const f_string_static_t f_status_maybe_s = macro_f_string_static_t_initialize_1(F_status_maybe_s, 0, F_status_maybe_s_length); @@ -472,6 +476,8 @@ extern "C" { const f_string_static_t f_status_minimum_not_s = macro_f_string_static_t_initialize_1(F_status_minimum_not_s, 0, F_status_minimum_not_s_length); const f_string_static_t f_status_minor_s = macro_f_string_static_t_initialize_1(F_status_minor_s, 0, F_status_minor_s_length); const f_string_static_t f_status_minor_not_s = macro_f_string_static_t_initialize_1(F_status_minor_not_s, 0, F_status_minor_not_s_length); + const f_string_static_t f_status_miss_s = macro_f_string_static_t_initialize_1(F_status_miss_s, 0, F_status_miss_s_length); + const f_string_static_t f_status_miss_not_s = macro_f_string_static_t_initialize_1(F_status_miss_not_s, 0, F_status_miss_not_s_length); const f_string_static_t f_status_moderate_s = macro_f_string_static_t_initialize_1(F_status_moderate_s, 0, F_status_moderate_s_length); const f_string_static_t f_status_moderate_not_s = macro_f_string_static_t_initialize_1(F_status_moderate_not_s, 0, F_status_moderate_not_s_length); const f_string_static_t f_status_mount_s = macro_f_string_static_t_initialize_1(F_status_mount_s, 0, F_status_mount_s_length); @@ -743,6 +749,8 @@ extern "C" { const f_string_static_t f_status_warning_not_s = macro_f_string_static_t_initialize_1(F_status_warning_not_s, 0, F_status_warning_not_s_length); const f_string_static_t f_status_wish_s = macro_f_string_static_t_initialize_1(F_status_wish_s, 0, F_status_wish_s_length); const f_string_static_t f_status_wish_not_s = macro_f_string_static_t_initialize_1(F_status_wish_not_s, 0, F_status_wish_not_s_length); + const f_string_static_t f_status_word_s = macro_f_string_static_t_initialize_1(F_status_word_s, 0, F_status_word_s_length); + const f_string_static_t f_status_word_not_s = macro_f_string_static_t_initialize_1(F_status_word_not_s, 0, F_status_word_not_s_length); const f_string_static_t f_status_world_s = macro_f_string_static_t_initialize_1(F_status_world_s, 0, F_status_world_s_length); const f_string_static_t f_status_world_not_s = macro_f_string_static_t_initialize_1(F_status_world_not_s, 0, F_status_world_not_s_length); const f_string_static_t f_status_write_s = macro_f_string_static_t_initialize_1(F_status_write_s, 0, F_status_write_s_length); @@ -1601,6 +1609,16 @@ extern "C" { break; + case F_case: + *name = f_status_case_s; + + break; + + case F_case_not: + *name = f_status_case_not_s; + + break; + case F_character: *name = f_status_character_s; @@ -3031,6 +3049,16 @@ extern "C" { break; + case F_match: + *name = f_status_match_s; + + break; + + case F_match_not: + *name = f_status_match_not_s; + + break; + case F_maximum: *name = f_status_maximum_s; @@ -3101,6 +3129,16 @@ extern "C" { break; + case F_miss: + *name = f_status_miss_s; + + break; + + case F_miss_not: + *name = f_status_miss_not_s; + + break; + case F_moderate: *name = f_status_moderate_s; @@ -4422,6 +4460,16 @@ extern "C" { break; + case F_word: + *name = f_status_word_s; + + break; + + case F_word_not: + *name = f_status_word_not_s; + + break; + case F_world: *name = f_status_world_s; diff --git a/level_0/f_status_string/c/status_string.h b/level_0/f_status_string/c/status_string.h index 89fd6c9..ab1bc51 100644 --- a/level_0/f_status_string/c/status_string.h +++ b/level_0/f_status_string/c/status_string.h @@ -332,6 +332,8 @@ extern "C" { #define F_status_call_not_s "F_call_not" #define F_status_capability_s "F_capability" #define F_status_capability_not_s "F_capability_not" + #define F_status_case_s "F_case" + #define F_status_case_not_s "F_case_not" #define F_status_character_s "F_character" #define F_status_character_not_s "F_character_not" #define F_status_child_s "F_child" @@ -618,6 +620,8 @@ extern "C" { #define F_status_lock_write_not_s "F_lock_write_not" #define F_status_loop_s "F_loop" #define F_status_loop_not_s "F_loop_not" + #define F_status_match_s "F_match" + #define F_status_match_not_s "F_match_not" #define F_status_maximum_s "F_maximum" #define F_status_maximum_not_s "F_maximum_not" #define F_status_maybe_s "F_maybe" @@ -632,6 +636,8 @@ extern "C" { #define F_status_minimum_not_s "F_minimum_not" #define F_status_minor_s "F_minor" #define F_status_minor_not_s "F_minor_not" + #define F_status_miss_s "F_miss" + #define F_status_miss_not_s "F_miss_not" #define F_status_moderate_s "F_moderate" #define F_status_moderate_not_s "F_moderate_not" #define F_status_mount_s "F_mount" @@ -896,6 +902,8 @@ extern "C" { #define F_status_warning_not_s "F_warning_not" #define F_status_wish_s "F_wish" #define F_status_wish_not_s "F_wish_not" + #define F_status_word_s "F_word" + #define F_status_word_not_s "F_word_not" #define F_status_world_s "F_world" #define F_status_world_not_s "F_world_not" #define F_status_write_s "F_write" @@ -1006,6 +1014,8 @@ extern "C" { #define F_status_call_not_s_length 10 #define F_status_capability_s_length 12 #define F_status_capability_not_s_length 16 + #define F_status_case_s_length 6 + #define F_status_case_not_s_length 10 #define F_status_character_s_length 11 #define F_status_character_not_s_length 15 #define F_status_child_s_length 7 @@ -1292,6 +1302,8 @@ extern "C" { #define F_status_lock_write_not_s_length 16 #define F_status_loop_s_length 6 #define F_status_loop_not_s_length 10 + #define F_status_match_s_length 7 + #define F_status_match_not_s_length 11 #define F_status_maximum_s_length 9 #define F_status_maximum_not_s_length 13 #define F_status_maybe_s_length 7 @@ -1306,6 +1318,8 @@ extern "C" { #define F_status_minimum_not_s_length 13 #define F_status_minor_s_length 7 #define F_status_minor_not_s_length 11 + #define F_status_miss_s_length 6 + #define F_status_miss_not_s_length 10 #define F_status_moderate_s_length 10 #define F_status_moderate_not_s_length 14 #define F_status_mount_s_length 7 @@ -1570,6 +1584,8 @@ extern "C" { #define F_status_warning_not_s_length 13 #define F_status_wish_s_length 6 #define F_status_wish_not_s_length 10 + #define F_status_word_s_length 6 + #define F_status_word_not_s_length 10 #define F_status_world_s_length 7 #define F_status_world_not_s_length 11 #define F_status_write_s_length 7 @@ -1680,6 +1696,8 @@ extern "C" { extern const f_string_static_t f_status_call_not_s; extern const f_string_static_t f_status_capability_s; extern const f_string_static_t f_status_capability_not_s; + extern const f_string_static_t f_status_case_s; + extern const f_string_static_t f_status_case_not_s; extern const f_string_static_t f_status_character_s; extern const f_string_static_t f_status_character_not_s; extern const f_string_static_t f_status_child_s; @@ -1968,6 +1986,8 @@ extern "C" { extern const f_string_static_t f_status_lock_write_not_s; extern const f_string_static_t f_status_loop_s; extern const f_string_static_t f_status_loop_not_s; + extern const f_string_static_t f_status_match_s; + extern const f_string_static_t f_status_match_not_s; extern const f_string_static_t f_status_maximum_s; extern const f_string_static_t f_status_maximum_not_s; extern const f_string_static_t f_status_maybe_s; @@ -1982,6 +2002,8 @@ extern "C" { extern const f_string_static_t f_status_minimum_not_s; extern const f_string_static_t f_status_minor_s; extern const f_string_static_t f_status_minor_not_s; + extern const f_string_static_t f_status_miss_s; + extern const f_string_static_t f_status_miss_not_s; extern const f_string_static_t f_status_moderate_s; extern const f_string_static_t f_status_moderate_not_s; extern const f_string_static_t f_status_mount_s; @@ -2246,6 +2268,8 @@ extern "C" { extern const f_string_static_t f_status_warning_not_s; extern const f_string_static_t f_status_wish_s; extern const f_string_static_t f_status_wish_not_s; + extern const f_string_static_t f_status_word_s; + extern const f_string_static_t f_status_word_not_s; extern const f_string_static_t f_status_world_s; extern const f_string_static_t f_status_world_not_s; extern const f_string_static_t f_status_write_s; diff --git a/level_0/f_status_string/tests/unit/c/test-status_string-to.c b/level_0/f_status_string/tests/unit/c/test-status_string-to.c index 6b25c58..8b90a4e 100644 --- a/level_0/f_status_string/tests/unit/c/test-status_string-to.c +++ b/level_0/f_status_string/tests/unit/c/test-status_string-to.c @@ -198,6 +198,8 @@ void test__f_status_string_to__works(void **state) { F_call_not, F_capability, F_capability_not, + F_case, + F_case_not, F_character, F_character_not, F_child, @@ -484,6 +486,8 @@ void test__f_status_string_to__works(void **state) { F_lock_write_not, F_loop, F_loop_not, + F_match, + F_match_not, F_maximum, F_maximum_not, F_maybe, @@ -498,6 +502,8 @@ void test__f_status_string_to__works(void **state) { F_minimum_not, F_minor, F_minor_not, + F_miss, + F_miss_not, F_moderate, F_moderate_not, F_mount, @@ -762,6 +768,8 @@ void test__f_status_string_to__works(void **state) { F_warning_not, F_wish, F_wish_not, + F_word, + F_word_not, F_world, F_world_not, F_write, @@ -941,6 +949,8 @@ void test__f_status_string_to__works(void **state) { f_status_call_not_s, f_status_capability_s, f_status_capability_not_s, + f_status_case_s, + f_status_case_not_s, f_status_character_s, f_status_character_not_s, f_status_child_s, @@ -1227,6 +1237,8 @@ void test__f_status_string_to__works(void **state) { f_status_lock_write_not_s, f_status_loop_s, f_status_loop_not_s, + f_status_match_s, + f_status_match_not_s, f_status_maximum_s, f_status_maximum_not_s, f_status_maybe_s, @@ -1241,6 +1253,8 @@ void test__f_status_string_to__works(void **state) { f_status_minimum_not_s, f_status_minor_s, f_status_minor_not_s, + f_status_miss_s, + f_status_miss_not_s, f_status_moderate_s, f_status_moderate_not_s, f_status_mount_s, @@ -1505,6 +1519,8 @@ void test__f_status_string_to__works(void **state) { f_status_warning_not_s, f_status_wish_s, f_status_wish_not_s, + f_status_word_s, + f_status_word_not_s, f_status_world_s, f_status_world_not_s, f_status_write_s, @@ -1515,7 +1531,7 @@ void test__f_status_string_to__works(void **state) { f_status_status_code_last_s, }; - for (uint16_t i = 0; i < 740; ++i) { + for (uint16_t i = 0; i < 748; ++i) { f_string_static_t result = f_string_static_t_initialize; diff --git a/level_1/fl_status_string/c/status_string.c b/level_1/fl_status_string/c/status_string.c index 1265f44..3247905 100644 --- a/level_1/fl_status_string/c/status_string.c +++ b/level_1/fl_status_string/c/status_string.c @@ -1047,6 +1047,18 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_case_s) == F_equal_to) { + *code = F_case; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_case_not_s) == F_equal_to) { + *code = F_case_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_child_s) == F_equal_to) { *code = F_child; @@ -2761,6 +2773,18 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_match_s) == F_equal_to) { + *code = F_match; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_match_not_s) == F_equal_to) { + *code = F_match_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_maximum_s) == F_equal_to) { *code = F_maximum; @@ -2845,6 +2869,18 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_miss_s) == F_equal_to) { + *code = F_miss; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_miss_not_s) == F_equal_to) { + *code = F_miss_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_moderate_s) == F_equal_to) { *code = F_moderate; @@ -4428,6 +4464,18 @@ extern "C" { return F_okay; } + if (f_compare_dynamic(name, f_status_word_s) == F_equal_to) { + *code = F_word; + + return F_okay; + } + + if (f_compare_dynamic(name, f_status_word_not_s) == F_equal_to) { + *code = F_word_not; + + return F_okay; + } + if (f_compare_dynamic(name, f_status_world_s) == F_equal_to) { *code = F_world; diff --git a/level_1/fl_status_string/tests/unit/c/test-status_string-from.c b/level_1/fl_status_string/tests/unit/c/test-status_string-from.c index a57232e..f41b6bd 100644 --- a/level_1/fl_status_string/tests/unit/c/test-status_string-from.c +++ b/level_1/fl_status_string/tests/unit/c/test-status_string-from.c @@ -214,6 +214,8 @@ void test__fl_status_string_from__works(void **state) { F_call_not, F_capability, F_capability_not, + F_case, + F_case_not, F_character, F_character_not, F_child, @@ -500,6 +502,8 @@ void test__fl_status_string_from__works(void **state) { F_lock_write_not, F_loop, F_loop_not, + F_match, + F_match_not, F_maximum, F_maximum_not, F_maybe, @@ -514,6 +518,8 @@ void test__fl_status_string_from__works(void **state) { F_minimum_not, F_minor, F_minor_not, + F_miss, + F_miss_not, F_moderate, F_moderate_not, F_mount, @@ -778,6 +784,8 @@ void test__fl_status_string_from__works(void **state) { F_warning_not, F_wish, F_wish_not, + F_word, + F_word_not, F_world, F_world_not, F_write, @@ -957,6 +965,8 @@ void test__fl_status_string_from__works(void **state) { f_status_call_not_s, f_status_capability_s, f_status_capability_not_s, + f_status_case_s, + f_status_case_not_s, f_status_character_s, f_status_character_not_s, f_status_child_s, @@ -1243,6 +1253,8 @@ void test__fl_status_string_from__works(void **state) { f_status_lock_write_not_s, f_status_loop_s, f_status_loop_not_s, + f_status_match_s, + f_status_match_not_s, f_status_maximum_s, f_status_maximum_not_s, f_status_maybe_s, @@ -1257,6 +1269,8 @@ void test__fl_status_string_from__works(void **state) { f_status_minimum_not_s, f_status_minor_s, f_status_minor_not_s, + f_status_miss_s, + f_status_miss_not_s, f_status_moderate_s, f_status_moderate_not_s, f_status_mount_s, @@ -1521,6 +1535,8 @@ void test__fl_status_string_from__works(void **state) { f_status_warning_not_s, f_status_wish_s, f_status_wish_not_s, + f_status_word_s, + f_status_word_not_s, f_status_world_s, f_status_world_not_s, f_status_write_s, @@ -1531,7 +1547,7 @@ void test__fl_status_string_from__works(void **state) { f_status_status_code_last_s, }; - for (uint16_t i = 0; i < 740; ++i) { + for (uint16_t i = 0; i < 748; ++i) { f_status_t result = F_okay; -- 1.8.3.1