commit a292080

default  ·  2024-05-25 06:24:08 +0000 UTC
parent f631fc5
Backport from xs (fix regex.h compilation with tcc).
5 files changed,  +21, -20
M xs.h
M xs.h
+11, -13
 1@@ -798,11 +798,10 @@ int xs_list_len(const xs_list *list)
 2 {
 3     XS_ASSERT_TYPE_NULL(list, XSTYPE_LIST);
 4 
 5-    int c = 0;
 6-    xs_list *p = (xs_list *)list;
 7+    int c = 0, ct = 0;
 8     const xs_val *v;
 9 
10-    while (xs_list_iter(&p, &v))
11+    while (xs_list_next(list, &v, &ct))
12         c++;
13 
14     return c;
15@@ -817,11 +816,10 @@ const xs_val *xs_list_get(const xs_list *list, int num)
16     if (num < 0)
17         num = xs_list_len(list) + num;
18 
19-    int c = 0;
20-    xs_list *p = (xs_list *)list;
21+    int c = 0, ct = 0;
22     const xs_val *v;
23 
24-    while (xs_list_iter(&p, &v)) {
25+    while (xs_list_next(list, &v, &ct)) {
26         if (c == num)
27             return v;
28 
29@@ -880,16 +878,16 @@ xs_list *xs_list_dequeue(xs_list *list, xs_val **data, int last)
30 {
31     XS_ASSERT_TYPE(list, XSTYPE_LIST);
32 
33-    xs_list *p = list;
34+    int ct = 0;
35     const xs_val *v = NULL;
36 
37     if (!last) {
38         /* get the first */
39-        xs_list_iter(&p, &v);
40+        xs_list_next(list, &v, &ct);
41     }
42     else {
43         /* iterate to the end */
44-        while (xs_list_iter(&p, &v));
45+        while (xs_list_next(list, &v, &ct));
46     }
47 
48     if (v != NULL) {
49@@ -909,11 +907,11 @@ int xs_list_in(const xs_list *list, const xs_val *val)
50     XS_ASSERT_TYPE_NULL(list, XSTYPE_LIST);
51 
52     int n = 0;
53-    xs_list *p = (xs_list *)list;
54+    int ct = 0;
55     const xs_val *v;
56     int sz = xs_size(val);
57 
58-    while (xs_list_iter(&p, &v)) {
59+    while (xs_list_next(list, &v, &ct)) {
60         if (sz == xs_size(v) && memcmp(val, v, sz) == 0)
61             return n;
62 
63@@ -930,13 +928,13 @@ xs_str *xs_join(const xs_list *list, const char *sep)
64     XS_ASSERT_TYPE(list, XSTYPE_LIST);
65 
66     xs_str *s = NULL;
67-    xs_list *p = (xs_list *)list;
68     const xs_val *v;
69     int c = 0;
70+    int ct = 0;
71     int offset = 0;
72     int ssz = strlen(sep);
73 
74-    while (xs_list_iter(&p, &v)) {
75+    while (xs_list_next(list, &v, &ct)) {
76         /* refuse to join non-string values */
77         if (xs_type(v) == XSTYPE_STRING) {
78             int sz;
+5, -0
 1@@ -16,6 +16,11 @@ xs_list *xs_regex_replace_in(xs_str *str, const char *rx, const char *rep, int c
 2 
 3 #ifdef XS_IMPLEMENTATION
 4 
 5+#ifdef __TINYC__
 6+/* fix a compilation error in tcc */
 7+#define _REGEX_NELTS(n)
 8+#endif
 9+
10 #include <regex.h>
11 
12 xs_list *xs_regex_split_n(const char *str, const char *rx, int count)
+2, -3
 1@@ -85,7 +85,6 @@ int xs_set_add(xs_set *s, const xs_val *data)
 2 {
 3     /* is it 'full'? */
 4     if (s->used >= s->elems / 2) {
 5-        char *p;
 6         const xs_val *v;
 7 
 8         /* expand! */
 9@@ -96,8 +95,8 @@ int xs_set_add(xs_set *s, const xs_val *data)
10         memset(s->hash, '\0', s->elems * sizeof(int));
11 
12         /* add the list elements back */
13-        p = s->list;
14-        while (xs_list_iter(&p, &v))
15+        int ct = 0;
16+        while (xs_list_next(s->list, &v, &ct))
17             _store_hash(s, v, v - s->list);
18     }
19 
+2, -3
 1@@ -51,11 +51,10 @@ xs_dict *xs_url_vars(const char *str)
 2         /* split by arguments */
 3         xs *args = xs_split(str, "&");
 4 
 5-        xs_list *l;
 6+        int ct = 0;
 7         const xs_val *v;
 8 
 9-        l = args;
10-        while (xs_list_iter(&l, &v)) {
11+        while (xs_list_next(args, &v, &ct)) {
12             xs *kv = xs_split_n(v, "=", 1);
13 
14             if (xs_list_len(kv) == 2) {
+1, -1
1@@ -1 +1 @@
2-/* 65265483c102909393287bfb173d1a7ae9c3be00 2024-05-23T09:57:20+02:00 */
3+/* 65769f25ed99b886a643522bef21628396cd118d 2024-05-25T08:18:51+02:00 */