commit 45278af

default  ·  2024-08-11 19:50:45 +0000 UTC
parent 3dbeee8
Backport from xs.
2 files changed,  +14, -6
M xs.h
M xs.h
+13, -5
 1@@ -60,6 +60,7 @@ xstype xs_type(const xs_val *data);
 2 int xs_size(const xs_val *data);
 3 int xs_is_null(const xs_val *data);
 4 int xs_cmp(const xs_val *v1, const xs_val *v2);
 5+const xs_val *xs_or(const xs_val *v1, const xs_val *v2);
 6 xs_val *xs_dup(const xs_val *data);
 7 xs_val *xs_expand(xs_val *data, int offset, int size);
 8 xs_val *xs_collapse(xs_val *data, int offset, int size);
 9@@ -119,8 +120,8 @@ xs_dict *xs_dict_new(void);
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, const xs_str **key, const xs_val **value, int *ctxt);
13-const 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+const xs_val *xs_dict_get(const xs_dict *dict, const xs_str *key);
16+#define xs_dict_get_def(dict, key, def) xs_or(xs_dict_get(dict, key), def)
17 xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key);
18 xs_dict *xs_dict_set(xs_dict *dict, const xs_str *key, const xs_val *data);
19 xs_dict *xs_dict_gc(const xs_dict *dict);
20@@ -360,6 +361,13 @@ int xs_cmp(const xs_val *v1, const xs_val *v2)
21 }
22 
23 
24+const xs_val *xs_or(const xs_val *v1, const xs_val *v2)
25+/* returns v1 if it's not NULL, else v2 */
26+{
27+    return v1 == NULL ? v2 : v1;
28+}
29+
30+
31 xs_val *xs_dup(const xs_val *data)
32 /* creates a duplicate of data */
33 {
34@@ -1211,8 +1219,8 @@ xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key)
35 }
36 
37 
38-const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_str *def)
39-/* gets a value by key, or returns def */
40+const xs_val *xs_dict_get(const xs_dict *dict, const xs_str *key)
41+/* gets a value by key, or NULL */
42 {
43     if (xs_type(dict) == XSTYPE_DICT) {
44         int *o = _xs_dict_locate(dict, key);
45@@ -1226,7 +1234,7 @@ const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_s
46         }
47     }
48 
49-    return def;
50+    return NULL;
51 }
52 
53 
+1, -1
1@@ -1 +1 @@
2-/* 3536c4e2ab0849eccf81c50741028453e9ad7f3a 2024-08-05T18:37:46+02:00 */
3+/* 7c7c38b6d14c07cb85698223bcff4d3193245437 2024-08-11T21:48:09+02:00 */