diff options
Diffstat (limited to 'src/String/String.c')
| -rw-r--r-- | src/String/String.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/String/String.c b/src/String/String.c index 74f40e2..3bc0337 100644 --- a/src/String/String.c +++ b/src/String/String.c @@ -1,4 +1,5 @@ #include <BH/String.h> +#include <BH/Unicode.h> #include <string.h> #include <stdlib.h> @@ -17,3 +18,31 @@ char *BH_StringDup(const char *string) memcpy(result, string, length); return result; } + + +int BH_StringCompare(const char *s1, + const char *s2) +{ + return strcmp(s1, s2); +} + + +int BH_StringCompareCaseless(const char *s1, + const char *s2) +{ + uint32_t c1, c2; + + while (*s1 && *s2) + { + s1 += BH_UnicodeDecodeUtf8(s1, 4, &c1); + s2 += BH_UnicodeDecodeUtf8(s2, 4, &c2); + + c1 = BH_UnicodeLower(c1); + c2 = BH_UnicodeLower(c2); + + if (c1 != c2) + return (c1 < c2) ? -1 : 1; + } + + return (!*s1) ? (!*s2 ? 0 : -1) : 1; +} |
