From b69950a524572545b220190ef27fbfade19b266f Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Thu, 30 Mar 2023 18:35:13 -0500 Subject: [PATCH] Update: Add define macros for newly created functions and update the stand alone fake build. --- build/stand_alone/fake.config.h | 19 ++++ level_0/f_compare/c/compare/private-utf.c | 16 ++-- level_0/f_compare/c/compare/private-utf.h | 32 ++++--- level_0/f_compare/c/compare/utf.c | 28 +++--- level_0/f_compare/c/compare/utf.h | 142 +++++++++++++++--------------- 5 files changed, 133 insertions(+), 104 deletions(-) diff --git a/build/stand_alone/fake.config.h b/build/stand_alone/fake.config.h index cd1730a..f240f7c 100644 --- a/build/stand_alone/fake.config.h +++ b/build/stand_alone/fake.config.h @@ -212,10 +212,29 @@ #define _di_f_compare_trim_ #define _di_f_compare_utf_ #define _di_f_compare_utf_dynamic_ +#define _di_f_compare_utf_dynamic_except_ +#define _di_f_compare_utf_dynamic_except_string_ +#define _di_f_compare_utf_dynamic_except_trim_ +#define _di_f_compare_utf_dynamic_except_trim_string_ #define _di_f_compare_utf_dynamic_partial_ +#define _di_f_compare_utf_dynamic_partial_dynamic_ +#define _di_f_compare_utf_dynamic_partial_except_ +#define _di_f_compare_utf_dynamic_partial_except_dynamic_ +#define _di_f_compare_utf_dynamic_partial_except_string_ +#define _di_f_compare_utf_dynamic_partial_except_trim_ +#define _di_f_compare_utf_dynamic_partial_except_trim_dynamic_ +#define _di_f_compare_utf_dynamic_partial_except_trim_string_ +#define _di_f_compare_utf_dynamic_partial_string_ #define _di_f_compare_utf_dynamic_partial_trim_ +#define _di_f_compare_utf_dynamic_partial_trim_dynamic_ +#define _di_f_compare_utf_dynamic_partial_trim_string_ +#define _di_f_compare_utf_dynamic_string_ #define _di_f_compare_utf_dynamic_trim_ +#define _di_f_compare_utf_dynamic_trim_string_ +#define _di_f_compare_utf_except_ +#define _di_f_compare_utf_except_trim_ #define _di_f_compare_utf_trim_ +#define _di_f_compare_utf_utf_dynamic_partial_trim_ //#define _di_f_console_arguments_t_ #define _di_f_console_environment_process_ diff --git a/level_0/f_compare/c/compare/private-utf.c b/level_0/f_compare/c/compare/private-utf.c index 9abf068..357e447 100644 --- a/level_0/f_compare/c/compare/private-utf.c +++ b/level_0/f_compare/c/compare/private-utf.c @@ -5,7 +5,7 @@ extern "C" { #endif -#if !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) +#if !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_string_) f_status_t private_f_compare_utf(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2) { f_array_length_t i1 = offset1; @@ -35,9 +35,9 @@ extern "C" { return F_equal_to; } -#endif // !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) +#endif // !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_string_) -#if !defined(_di_f_compare_utf_except_) || !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_) +#if !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_except_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_string_) || !defined(_di_f_compare_utf_except_) f_status_t private_f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2, const f_array_lengths_t except1, const f_array_lengths_t except2) { f_array_length_t i1 = offset1; @@ -99,9 +99,9 @@ extern "C" { return F_equal_to; } -#endif // !defined(_di_f_compare_utf_except_) || !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_) +#endif // !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_except_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_string_) || !defined(_di_f_compare_utf_except_) -#if !defined(_di_f_compare_utf_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) +#if !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_string_) || !defined(_di_f_compare_utf_except_trim_) f_status_t private_f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2, const f_array_lengths_t except1, const f_array_lengths_t except2) { f_array_length_t i1 = offset1; @@ -347,9 +347,9 @@ extern "C" { return F_equal_to; } -#endif // !defined(_di_f_compare_utf_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) +#endif // !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_string_) || !defined(_di_f_compare_utf_except_trim_) -#if !defined(_di_f_compare_utf_trim_) || !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) +#if !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_trim_string_) || !defined(_di_f_compare_utf_trim_) f_status_t private_f_compare_utf_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2) { f_array_length_t i1 = offset1; @@ -562,7 +562,7 @@ extern "C" { return F_equal_to; } -#endif // !defined(_di_f_compare_utf_trim_) || !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) +#endif // !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_trim_string_) || !defined(_di_f_compare_utf_trim_) #ifdef __cplusplus diff --git a/level_0/f_compare/c/compare/private-utf.h b/level_0/f_compare/c/compare/private-utf.h index 7bcd069..db506e3 100644 --- a/level_0/f_compare/c/compare/private-utf.h +++ b/level_0/f_compare/c/compare/private-utf.h @@ -42,10 +42,11 @@ extern "C" { * @see f_compare_utf_dynamic_string() * @see f_compare_utf_dynamic_partial() * @see f_compare_utf_dynamic_partial_dynamic() + * @see f_compare_utf_dynamic_partial_string() */ -#if !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) +#if !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_string_) extern f_status_t private_f_compare_utf(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) +#endif // !defined(_di_f_compare_utf_) || !defined(_di_f_compare_utf_dynamic_) || !defined(_di_f_compare_utf_dynamic_string_) || !defined(_di_f_compare_utf_dynamic_partial_) || !defined(_di_f_compare_utf_dynamic_partial_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_string_) /** * Private implementation of f_compare_utf_except(). @@ -75,13 +76,16 @@ extern "C" { * F_equal_to when both strings equal. * F_equal_to_not when both strings do not equal. * - * @see f_compare_utf_except() * @see f_compare_utf_dynamic_except() + * @see f_compare_utf_dynamic_except_string() * @see f_compare_utf_dynamic_partial_except() + * @see f_compare_utf_dynamic_partial_except_dynamic() + * @see f_compare_utf_dynamic_partial_except_string() + * @see f_compare_utf_except_ */ -#if !defined(_di_f_compare_utf_except_) || !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_) +#if !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_except_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_string_) || !defined(_di_f_compare_utf_except_) extern f_status_t private_f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2, const f_array_lengths_t except1, const f_array_lengths_t except2) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_compare_utf_except_) || !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_) +#endif // !defined(_di_f_compare_utf_dynamic_except_) || !defined(_di_f_compare_utf_dynamic_except_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_) || !defined(_di_f_compare_utf_dynamic_partial_except_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_string_) || !defined(_di_f_compare_utf_except_) /** * Private implementation of f_compare_utf_except_trim(). @@ -119,13 +123,16 @@ extern "C" { * @see f_utf_character_is_combining() * @see f_utf_character_is_whitespace() * - * @see f_compare_utf_except_trim() * @see f_compare_utf_dynamic_except_trim() + * @see f_compare_utf_dynamic_except_trim_string() * @see f_compare_utf_dynamic_partial_except_trim() + * @see f_compare_utf_dynamic_partial_except_trim_dynamic() + * @see f_compare_utf_dynamic_partial_except_trim_string() + * @see f_compare_utf_except_trim() */ -#if !defined(_di_f_compare_utf_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) +#if !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_string_) || !defined(_di_f_compare_utf_except_trim_) extern f_status_t private_f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2, const f_array_lengths_t except1, const f_array_lengths_t except2) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_compare_utf_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) +#endif // !defined(_di_f_compare_utf_dynamic_except_trim_) || !defined(_di_f_compare_utf_dynamic_except_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_except_trim_string_) || !defined(_di_f_compare_utf_except_trim_) /** * Private implementation of f_compare_utf_trim(). @@ -157,13 +164,16 @@ extern "C" { * @see f_utf_character_is_combining() * @see f_utf_character_is_whitespace() * - * @see f_compare_utf_trim() * @see f_compare_utf_dynamic_trim() + * @see f_compare_utf_dynamic_trim_string() * @see f_compare_utf_dynamic_partial_trim() + * @see f_compare_utf_dynamic_partial_trim_dynamic() + * @see f_compare_utf_dynamic_partial_trim_string() + * @see f_compare_utf_trim() */ -#if !defined(_di_f_compare_utf_trim_) || !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) +#if !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_trim_string_) || !defined(_di_f_compare_utf_trim_) extern f_status_t private_f_compare_utf_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t offset1, const f_array_length_t offset2, const f_array_length_t stop1, const f_array_length_t stop2) F_attribute_visibility_internal_d; -#endif // !defined(_di_f_compare_utf_trim_) || !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) +#endif // !defined(_di_f_compare_utf_dynamic_trim_) || !defined(_di_f_compare_utf_dynamic_trim_string_) || !defined(_di_f_compare_utf_dynamic_partial_trim_) || !defined(_di_f_compare_utf_dynamic_partial_trim_dynamic_) || !defined(_di_f_compare_utf_dynamic_partial_trim_string_) || !defined(_di_f_compare_utf_trim_) #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_compare/c/compare/utf.c b/level_0/f_compare/c/compare/utf.c index 3780439..cbc6a47 100644 --- a/level_0/f_compare/c/compare/utf.c +++ b/level_0/f_compare/c/compare/utf.c @@ -12,20 +12,6 @@ extern "C" { } #endif // _di_f_compare_utf_ -#ifndef _di_f_compare_utf_except_ - f_status_t f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2) { - - return private_f_compare_utf_except(string1, string2, 0, 0, length1, length2, except1, except2); - } -#endif // _di_f_compare_utf_except_ - -#ifndef _di_f_compare_utf_except_trim_ - f_status_t f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2) { - - return private_f_compare_utf_except_trim(string1, string2, 0, 0, length1, length2, except1, except2); - } -#endif // _di_f_compare_utf_except_trim_ - #ifndef _di_f_compare_utf_dynamic_ f_status_t f_compare_utf_dynamic(const f_utf_string_static_t string1, const f_utf_string_static_t string2) { @@ -294,6 +280,20 @@ extern "C" { } #endif // _di_f_compare_utf_dynamic_partial_trim_string_ +#ifndef _di_f_compare_utf_except_ + f_status_t f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2) { + + return private_f_compare_utf_except(string1, string2, 0, 0, length1, length2, except1, except2); + } +#endif // _di_f_compare_utf_except_ + +#ifndef _di_f_compare_utf_except_trim_ + f_status_t f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2) { + + return private_f_compare_utf_except_trim(string1, string2, 0, 0, length1, length2, except1, except2); + } +#endif // _di_f_compare_utf_except_trim_ + #ifndef _di_f_compare_utf_trim_ f_status_t f_compare_utf_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2) { diff --git a/level_0/f_compare/c/compare/utf.h b/level_0/f_compare/c/compare/utf.h index 415d69c..3788534 100644 --- a/level_0/f_compare/c/compare/utf.h +++ b/level_0/f_compare/c/compare/utf.h @@ -44,77 +44,6 @@ extern "C" { * * This does not stop on NULL. * NULL characters are ignored. - * All 1-byte characters in except1 and except2 are ignored. - * - * @param string1 - * String to compare. - * @param string2 - * String to compare. - * @param length1 - * Length of string1. - * @param length2 - * Length of string2. - * @param except1 - * A set of locations within string1 to ignore. - * This assumes/requires that the locations be in linear order. - * @param except2 - * A set of locations within string2 to ignore. - * This assumes/requires that the locations be in linear order. - * - * @return - * F_equal_to when both strings equal. - * F_equal_to_not when both strings do not equal. - * - * F_parameter (with error bit) if a parameter is invalid. - */ -#ifndef _di_f_compare_utf_except_ - extern f_status_t f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2); -#endif // _di_f_compare_utf_except_ - -/** - * Compare two UTF-8 strings, similar to strncmp(). - * - * This does not stop on NULL. - * NULL characters are ignored. - * Ignores leading and trailing whitespace. - * All 1-byte characters in except1 and except2 are ignored. - * - * @param string1 - * String to compare. - * @param string2 - * String to compare. - * @param length1 - * Length of string1. - * @param length2 - * Length of string2. - * @param except1 - * A set of locations within string1 to ignore. - * This assumes/requires that the locations be in linear order. - * @param except2 - * A set of locations within string2 to ignore. - * This assumes/requires that the locations be in linear order. - * - * @return - * F_equal_to when both strings equal. - * F_equal_to_not when both strings do not equal. - * - * F_parameter (with error bit) if a parameter is invalid. - * - * Errors (with error bit) from: f_utf_character_is_combining(). - * Errors (with error bit) from: f_utf_character_is_whitespace(). - * - * @see f_utf_character_is_combining() - * @see f_utf_character_is_whitespace() - */ -#ifndef _di_f_compare_utf_except_trim_ - extern f_status_t f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2); -#endif // _di_f_compare_utf_except_trim_ - -/** - * Compare two UTF-8 strings, similar to strncmp(). - * - * This does not stop on NULL. - * NULL characters are ignored. * * @param string1 * String to compare. @@ -753,6 +682,77 @@ extern "C" { * * This does not stop on NULL. * NULL characters are ignored. + * All 1-byte characters in except1 and except2 are ignored. + * + * @param string1 + * String to compare. + * @param string2 + * String to compare. + * @param length1 + * Length of string1. + * @param length2 + * Length of string2. + * @param except1 + * A set of locations within string1 to ignore. + * This assumes/requires that the locations be in linear order. + * @param except2 + * A set of locations within string2 to ignore. + * This assumes/requires that the locations be in linear order. + * + * @return + * F_equal_to when both strings equal. + * F_equal_to_not when both strings do not equal. + * + * F_parameter (with error bit) if a parameter is invalid. + */ +#ifndef _di_f_compare_utf_except_ + extern f_status_t f_compare_utf_except(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2); +#endif // _di_f_compare_utf_except_ + +/** + * Compare two UTF-8 strings, similar to strncmp(). + * + * This does not stop on NULL. + * NULL characters are ignored. + * Ignores leading and trailing whitespace. + * All 1-byte characters in except1 and except2 are ignored. + * + * @param string1 + * String to compare. + * @param string2 + * String to compare. + * @param length1 + * Length of string1. + * @param length2 + * Length of string2. + * @param except1 + * A set of locations within string1 to ignore. + * This assumes/requires that the locations be in linear order. + * @param except2 + * A set of locations within string2 to ignore. + * This assumes/requires that the locations be in linear order. + * + * @return + * F_equal_to when both strings equal. + * F_equal_to_not when both strings do not equal. + * + * F_parameter (with error bit) if a parameter is invalid. + * + * Errors (with error bit) from: f_utf_character_is_combining(). + * Errors (with error bit) from: f_utf_character_is_whitespace(). + * + * @see f_utf_character_is_combining() + * @see f_utf_character_is_whitespace() + */ +#ifndef _di_f_compare_utf_except_trim_ + extern f_status_t f_compare_utf_except_trim(const f_utf_string_t string1, const f_utf_string_t string2, const f_array_length_t length1, const f_array_length_t length2, const f_array_lengths_t except1, const f_array_lengths_t except2); +#endif // _di_f_compare_utf_except_trim_ + +/** + * Compare two UTF-8 strings, similar to strncmp(). + * + * This does not stop on NULL. + * NULL characters are ignored. * Ignores leading and trailing whitespace. * * @param string1 -- 1.8.3.1