extern int ReadUTF16(const Uint16 *Str16, Uint32 *Codepoint);
extern size_t UTF16_ConvertToUTF8(size_t DestLen, char *Dest, size_t SrcLen, const Uint16 *Source);
+extern int UTF16_CompareWithUTF8Ex(size_t Str16Len, const Uint16 *Str16, const char *Str8, int bIgnoreCase);
extern int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8);
+extern int UTF16_CompareWithUTF8CI(size_t Str16Len, const Uint16 *Str16, const char *Str8);
#endif
* utf16.c
* - UTF-16 Translation/Manipulation
*/
-#define DEBUG 1
+#define DEBUG 0
#include <acess.h>
#include <utf16.h>
return len;
}
-int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+int UTF16_CompareWithUTF8Ex(size_t Str16Len, const Uint16 *Str16, const char *Str8, int bCaseInsensitive)
{
int pos16 = 0, pos8 = 0;
const Uint8 *str8 = (const Uint8 *)Str8;
Uint32 cp8, cp16;
pos16 += ReadUTF16(Str16+pos16, &cp16);
pos8 += ReadUTF8(str8 + pos8, &cp8);
+ if( bCaseInsensitive ) {
+ cp16 = toupper(cp16);
+ cp8 = toupper(cp8);
+ }
LOG("cp16 = %x, cp8 = %x", cp16, cp8);
if(cp16 == cp8) continue ;
return -1;
}
+int UTF16_CompareWithUTF8(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+{
+ return UTF16_CompareWithUTF8Ex(Str16Len, Str16, Str8, 0);
+}
+
+int UTF16_CompareWithUTF8CI(size_t Str16Len, const Uint16 *Str16, const char *Str8)
+{
+ return UTF16_CompareWithUTF8Ex(Str16Len, Str16, Str8, 1);
+}
+