diff options
Diffstat (limited to 'xs.h')
-rw-r--r-- | xs.h | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -798,11 +798,10 @@ int xs_list_len(const xs_list *list) { XS_ASSERT_TYPE_NULL(list, XSTYPE_LIST); - int c = 0; - xs_list *p = (xs_list *)list; + int c = 0, ct = 0; const xs_val *v; - while (xs_list_iter(&p, &v)) + while (xs_list_next(list, &v, &ct)) c++; return c; @@ -817,11 +816,10 @@ const xs_val *xs_list_get(const xs_list *list, int num) if (num < 0) num = xs_list_len(list) + num; - int c = 0; - xs_list *p = (xs_list *)list; + int c = 0, ct = 0; const xs_val *v; - while (xs_list_iter(&p, &v)) { + while (xs_list_next(list, &v, &ct)) { if (c == num) return v; @@ -880,16 +878,16 @@ xs_list *xs_list_dequeue(xs_list *list, xs_val **data, int last) { XS_ASSERT_TYPE(list, XSTYPE_LIST); - xs_list *p = list; + int ct = 0; const xs_val *v = NULL; if (!last) { /* get the first */ - xs_list_iter(&p, &v); + xs_list_next(list, &v, &ct); } else { /* iterate to the end */ - while (xs_list_iter(&p, &v)); + while (xs_list_next(list, &v, &ct)); } if (v != NULL) { @@ -909,11 +907,11 @@ int xs_list_in(const xs_list *list, const xs_val *val) XS_ASSERT_TYPE_NULL(list, XSTYPE_LIST); int n = 0; - xs_list *p = (xs_list *)list; + int ct = 0; const xs_val *v; int sz = xs_size(val); - while (xs_list_iter(&p, &v)) { + while (xs_list_next(list, &v, &ct)) { if (sz == xs_size(v) && memcmp(val, v, sz) == 0) return n; @@ -930,13 +928,13 @@ xs_str *xs_join(const xs_list *list, const char *sep) XS_ASSERT_TYPE(list, XSTYPE_LIST); xs_str *s = NULL; - xs_list *p = (xs_list *)list; const xs_val *v; int c = 0; + int ct = 0; int offset = 0; int ssz = strlen(sep); - while (xs_list_iter(&p, &v)) { + while (xs_list_next(list, &v, &ct)) { /* refuse to join non-string values */ if (xs_type(v) == XSTYPE_STRING) { int sz; |