]> Kevux Git Server - fll/commitdiff
Update: Add define macros for newly created functions and update the stand alone...
authorKevin Day <kevin@kevux.org>
Thu, 30 Mar 2023 23:35:13 +0000 (18:35 -0500)
committerKevin Day <kevin@kevux.org>
Thu, 30 Mar 2023 23:35:13 +0000 (18:35 -0500)
build/stand_alone/fake.config.h
level_0/f_compare/c/compare/private-utf.c
level_0/f_compare/c/compare/private-utf.h
level_0/f_compare/c/compare/utf.c
level_0/f_compare/c/compare/utf.h

index cd1730a7ffa8179160c73f8620b9280c3b3a62a9..f240f7c0dcc5baf606924920ac1f4d94f324ceda 100644 (file)
 #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_
index 9abf06865ee415701bdd17d24c619ab4dc836600..357e4471a444aa1f315e9be77ae1edb544a27a82 100644 (file)
@@ -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
index 7bcd0697a0da3cc5db9697e45b855e9d8a0e7fa1..db506e3b29b0365f34a042551666b3fcc3090238 100644 (file)
@@ -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"
index 37804398adaaa34a240bda7d9e01f5b5816fe6ff..cbc6a47931a5f0af2a2356530074d24dcfe88ce2 100644 (file)
@@ -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) {
 
index 415d69cd43f2018844de6c17b6c9d65005e8adc6..37885347e0fd79198422743651793f5f3880f091 100644 (file)
@@ -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