From e5df584d6d8dc8c9036210943e42e43b30ac3def Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Thu, 17 Apr 2025 09:43:52 -0400 Subject: (w)str: Consistency between cmp() and eq() Signed-off-by: Andrew Opalach --- include/al/str.h | 6 +++--- include/al/wstr.h | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/al/str.h b/include/al/str.h index d7dab1c..4ff936b 100644 --- a/include/al/str.h +++ b/include/al/str.h @@ -103,11 +103,11 @@ static inline void al_str_prepend(str *s, str *c) al_str_insert(s, 0, c); } -static inline s32 al_str_cmp(str *s, str *c, u32 i, u32 length) +static inline s32 al_str_cmp(str *s, str *c, u32 start, u32 length) { if (length > c->length) return 1; - else if (length + i > s->length) return -1; - return al_memcmp(&al_str_at(s, i), c->data, length); + else if (length + start > s->length) return -1; + return al_memcmp(&al_str_at(s, start), c->data, length); } static inline bool al_str_eq(str *s, str *c) diff --git a/include/al/wstr.h b/include/al/wstr.h index 5d5f6ac..efecbfe 100644 --- a/include/al/wstr.h +++ b/include/al/wstr.h @@ -170,6 +170,8 @@ static inline s32 al_wstr_width(wstr *w) static inline s32 al_wstr_cmp(wstr *w, wstr *c, u32 start, u32 length) { #ifdef AL_HAVE_WIDE_STRING + if (length > c->length) return 1; + else if (length + start > w->length) return -1; return wcsncmp(&al_wstr_at(w, start), c->data, length); #else (void)w; @@ -180,6 +182,11 @@ static inline s32 al_wstr_cmp(wstr *w, wstr *c, u32 start, u32 length) #endif } +static inline bool al_wstr_eq(wstr *w, wstr *c) +{ + return al_wstr_cmp(w, c, 0, MAX(w->length, c->length)) == 0; +} + static inline u32 al_wstr_find(wstr *w, wchar_t c) { for (u32 i = 0; i < w->length; i++) { -- cgit v1.2.3-101-g0448