+captive_ucs2_strcmp()
authorshort <>
Sun, 19 Jan 2003 15:40:44 +0000 (15:40 +0000)
committershort <>
Sun, 19 Jan 2003 15:40:44 +0000 (15:40 +0000)
+captive_UnicodeString_strcmp()
+captive_ucs2_strcasecmp()
+captive_UnicodeString_strcasecmp()

src/libcaptive/include/captive/unicode.h
src/libcaptive/rtl/unicode.c

index 412d344..d260ed3 100644 (file)
@@ -86,6 +86,12 @@ PUNICODE_STRING captive_utf8_to_UnicodeString_malloc(const gchar *string_utf8);
  * Initially we create the result content from the input content but it should not harm.
  */
 const gunichar2 *captive_ucs4_to_utf16_const(const gunichar *string_ucs4) G_GNUC_CONST;
+gboolean captive_ucs2_strcmp(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2);
+gboolean captive_UnicodeString_strcmp
+               (const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString);
+gboolean captive_ucs2_strcasecmp(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2);
+gboolean captive_UnicodeString_strcasecmp
+               (const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString);
 
 /* internal: */
 void captive_FsRtlLegalAnsiCharacterArray_init(void);
index b45def4..dcb05ca 100644 (file)
@@ -263,6 +263,106 @@ gboolean captive_validate_AnsiString(const ANSI_STRING *string_AnsiString)
 }
 
 
+/**
+ * captive_ucs2_strcmp:
+ * @string_a_ucs2: First string of type #const #gunichar2 * in pure UCS-2.
+ * Invalid string input is forbidden. UTF-16 encoded pairs are forbidden.
+ * @string_b_ucs2: Second string of type #const #gunichar2 * in pure UCS-2.
+ * Invalid string input is forbidden. UTF-16 encoded pairs are forbidden.
+ *
+ * Compares case-sensitively @string_a_ucs2 and @string_b_ucs2.
+ *
+ * Returns: %TRUE if @string_a_ucs2 and @string_b_ucs2 are the same.
+ */
+gboolean captive_ucs2_strcmp(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2)
+{
+guint ui;
+
+       g_return_val_if_fail(captive_validate_ucs2(string_a_ucs2),FALSE);
+       g_return_val_if_fail(captive_validate_ucs2(string_b_ucs2),FALSE);
+
+       ui=0;
+       do {
+               if (string_a_ucs2[ui]!=string_b_ucs2[ui])
+                       return FALSE;
+               } while (string_a_ucs2[ui++]);
+       return TRUE;
+}
+
+
+/**
+ * captive_UnicodeString_strcmp:
+ * @string_a_UnicodeString: First string of type #PUNICODE_STRING.
+ * Invalid string input is forbidden.
+ * @string_b_UnicodeString: Second string of type #PUNICODE_STRING.
+ * Invalid string input is forbidden.
+ *
+ * Compares case-sensitively @string_a_UnicodeString and @string_b_UnicodeString.
+ *
+ * Returns: %TRUE if @string_a_UnicodeString and @string_b_UnicodeString are the same.
+ */
+gboolean captive_UnicodeString_strcmp
+               (const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString)
+{
+       g_return_val_if_fail(captive_validate_UnicodeString(string_a_UnicodeString),FALSE);
+       g_return_val_if_fail(captive_validate_UnicodeString(string_b_UnicodeString),FALSE);
+
+       if (string_a_UnicodeString->Length!=string_b_UnicodeString->Length)
+               return FALSE;
+       return captive_ucs2_strcmp(string_a_UnicodeString->Buffer,string_b_UnicodeString->Buffer);
+}
+
+
+/**
+ * captive_ucs2_strcasecmp:
+ * @string_a_ucs2: First string of type #const #gunichar2 * in pure UCS-2.
+ * Invalid string input is forbidden. UTF-16 encoded pairs are forbidden.
+ * @string_b_ucs2: Second string of type #const #gunichar2 * in pure UCS-2.
+ * Invalid string input is forbidden. UTF-16 encoded pairs are forbidden.
+ *
+ * Compares case-insensitively @string_a_ucs2 and @string_b_ucs2.
+ *
+ * Returns: %TRUE if @string_a_ucs2 and @string_b_ucs2 are the same.
+ */
+gboolean captive_ucs2_strcasecmp(const captive_ucs2 *string_a_ucs2,const captive_ucs2 *string_b_ucs2)
+{
+guint ui;
+
+       g_return_val_if_fail(captive_validate_ucs2(string_a_ucs2),FALSE);
+       g_return_val_if_fail(captive_validate_ucs2(string_b_ucs2),FALSE);
+
+       ui=0;
+       do {
+               if (g_unichar_toupper(string_a_ucs2[ui])!=g_unichar_toupper(string_b_ucs2[ui]))
+                       return FALSE;
+               } while (string_a_ucs2[ui++]);
+       return TRUE;
+}
+
+
+/**
+ * captive_UnicodeString_strcasecmp:
+ * @string_a_UnicodeString: First string of type #PUNICODE_STRING.
+ * Invalid string input is forbidden.
+ * @string_b_UnicodeString: Second string of type #PUNICODE_STRING.
+ * Invalid string input is forbidden.
+ *
+ * Compares case-insensitively @string_a_UnicodeString and @string_b_UnicodeString.
+ *
+ * Returns: %TRUE if @string_a_UnicodeString and @string_b_UnicodeString are the same.
+ */
+gboolean captive_UnicodeString_strcasecmp
+               (const UNICODE_STRING *string_a_UnicodeString,const UNICODE_STRING *string_b_UnicodeString)
+{
+       g_return_val_if_fail(captive_validate_UnicodeString(string_a_UnicodeString),FALSE);
+       g_return_val_if_fail(captive_validate_UnicodeString(string_b_UnicodeString),FALSE);
+
+       if (string_a_UnicodeString->Length!=string_b_UnicodeString->Length)
+               return FALSE;
+       return captive_ucs2_strcasecmp(string_a_UnicodeString->Buffer,string_b_UnicodeString->Buffer);
+}
+
+
 /* detect required memory size for g_alloca() */
 size_t _captive_UnicodeString_to_utf8_alloca_internal_sizeof(const UNICODE_STRING *string_UnicodeString)
 {