Properly compare al_strings

This commit is contained in:
Chris Robinson
2014-04-03 13:46:09 -07:00
parent 482fb37b68
commit 569374da2c
2 changed files with 26 additions and 7 deletions
+2 -5
View File
@@ -26,11 +26,8 @@ inline const al_string_char_type *al_string_get_cstr(const_al_string str)
void al_string_clear(al_string *str);
inline int al_string_cmp(const_al_string str1, const_al_string str2)
{ return strcmp(al_string_get_cstr(str1), al_string_get_cstr(str2)); }
inline int al_string_cmp_cstr(const_al_string str1, const al_string_char_type *str2)
{ return strcmp(al_string_get_cstr(str1), str2); }
int al_string_cmp(const_al_string str1, const_al_string str2);
int al_string_cmp_cstr(const_al_string str1, const al_string_char_type *str2);
void al_string_copy(al_string *str, const_al_string from);
void al_string_copy_cstr(al_string *str, const al_string_char_type *from);
+24 -2
View File
@@ -84,6 +84,7 @@ DEFINE_DEVPROPKEY(DEVPKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80,
#endif
#include "alMain.h"
#include "alu.h"
#include "atomic.h"
#include "uintmap.h"
#include "vector.h"
@@ -799,8 +800,6 @@ ALboolean vector_resize(void *ptr, size_t base_size, size_t obj_count, size_t ob
extern inline ALsizei al_string_length(const_al_string str);
extern inline ALsizei al_string_empty(const_al_string str);
extern inline const al_string_char_type *al_string_get_cstr(const_al_string str);
extern inline int al_string_cmp(const_al_string str1, const_al_string str2);
extern inline int al_string_cmp_cstr(const_al_string str1, const al_string_char_type *str2);
void al_string_clear(al_string *str)
{
@@ -812,6 +811,29 @@ void al_string_clear(al_string *str)
*VECTOR_ITER_END(*str) = 0;
}
static inline int al_string_compare(const al_string_char_type *str1, ALsizei str1len,
const al_string_char_type *str2, ALsizei str2len)
{
ALsizei complen = mini(str1len, str2len);
int ret = memcmp(str1, str2, complen);
if(ret == 0)
{
if(str1len > str2len) return 1;
if(str1len < str2len) return -1;
}
return ret;
}
int al_string_cmp(const_al_string str1, const_al_string str2)
{
return al_string_compare(&VECTOR_FRONT(str1), al_string_length(str1),
&VECTOR_FRONT(str2), al_string_length(str2));
}
int al_string_cmp_cstr(const_al_string str1, const al_string_char_type *str2)
{
return al_string_compare(&VECTOR_FRONT(str1), al_string_length(str1),
str2, (ALsizei)strlen(str2));
}
void al_string_copy(al_string *str, const_al_string from)
{
ALsizei len = VECTOR_SIZE(from);