commit 20bc826
default
·
2024-05-02 22:23:02 +0000 UTC
parent 4817585
Backport from xs.
2 files changed,
+7,
-43
M
xs.h
M
xs.h
+6,
-42
1@@ -110,11 +110,8 @@ xs_list *xs_split_n(const char *str, const char *sep, int times);
2 xs_list *xs_list_cat(xs_list *l1, const xs_list *l2);
3
4 xs_dict *xs_dict_new(void);
5-xs_dict *xs_dict_append_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz);
6-#define xs_dict_append(dict, key, data) xs_dict_append_m(dict, key, data, xs_size(data))
7-xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz);
8-#define xs_dict_prepend(dict, key, data) xs_dict_prepend_m(dict, key, data, xs_size(data))
9-int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value);
10+xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value);
11+xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value);
12 int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt);
13 xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def);
14 #define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL)
15@@ -1042,50 +1039,17 @@ xs_dict *_xs_dict_write_ditem(xs_dict *dict, int offset, const xs_str *key,
16 }
17
18
19-xs_dict *xs_dict_append_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz)
20+xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value)
21 /* appends a memory block to the dict */
22 {
23- return _xs_dict_write_ditem(dict, xs_size(dict) - 1, key, mem, dsz);
24+ return _xs_dict_write_ditem(dict, xs_size(dict) - 1, key, value, xs_size(value));
25 }
26
27
28-xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz)
29+xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value)
30 /* prepends a memory block to the dict */
31 {
32- return _xs_dict_write_ditem(dict, 4, key, mem, dsz);
33-}
34-
35-
36-int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value)
37-/* iterates a dict value */
38-{
39- int goon = 1;
40-
41- xs_val *p = *dict;
42-
43- /* skip the start of the list */
44- if (xs_type(p) == XSTYPE_DICT)
45- p += 1 + _XS_TYPE_SIZE;
46-
47- /* an element? */
48- if (xs_type(p) == XSTYPE_DITEM) {
49- p++;
50-
51- *key = p;
52- p += xs_size(*key);
53-
54- *value = p;
55- p += xs_size(*value);
56- }
57- else {
58- /* end of list */
59- goon = 0;
60- }
61-
62- /* store back the pointer */
63- *dict = p;
64-
65- return goon;
66+ return _xs_dict_write_ditem(dict, 4, key, value, xs_size(value));
67 }
68
69
+1,
-1
1@@ -1 +1 @@
2-/* 0206a65508e86f66b6aa329418ddc8f6f8c1ecb2 2024-04-22T07:31:05+02:00 */
3+/* f3818ad611f09313008a2102a5e543c232e1d824 2024-05-02T23:45:38+02:00 */