diff options
| author | 2024-05-03 00:23:02 +0200 | |
|---|---|---|
| committer | 2024-05-03 00:23:02 +0200 | |
| commit | 20bc82630032a6b8cdf9092651b7c50d7c581eee (patch) | |
| tree | e6b5b037e3d6cdc9db6b2b1106a066899d1a8136 | |
| parent | Updated RELEASE_NOTES. (diff) | |
| download | penes-snac2-20bc82630032a6b8cdf9092651b7c50d7c581eee.tar.gz penes-snac2-20bc82630032a6b8cdf9092651b7c50d7c581eee.tar.xz penes-snac2-20bc82630032a6b8cdf9092651b7c50d7c581eee.zip | |
Backport from xs.
| -rw-r--r-- | xs.h | 48 | ||||
| -rw-r--r-- | xs_version.h | 2 |
2 files changed, 7 insertions, 43 deletions
| @@ -110,11 +110,8 @@ xs_list *xs_split_n(const char *str, const char *sep, int times); | |||
| 110 | xs_list *xs_list_cat(xs_list *l1, const xs_list *l2); | 110 | xs_list *xs_list_cat(xs_list *l1, const xs_list *l2); |
| 111 | 111 | ||
| 112 | xs_dict *xs_dict_new(void); | 112 | xs_dict *xs_dict_new(void); |
| 113 | xs_dict *xs_dict_append_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz); | 113 | xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value); |
| 114 | #define xs_dict_append(dict, key, data) xs_dict_append_m(dict, key, data, xs_size(data)) | 114 | xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value); |
| 115 | xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz); | ||
| 116 | #define xs_dict_prepend(dict, key, data) xs_dict_prepend_m(dict, key, data, xs_size(data)) | ||
| 117 | int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value); | ||
| 118 | int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt); | 115 | int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt); |
| 119 | xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def); | 116 | xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def); |
| 120 | #define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL) | 117 | #define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL) |
| @@ -1042,50 +1039,17 @@ xs_dict *_xs_dict_write_ditem(xs_dict *dict, int offset, const xs_str *key, | |||
| 1042 | } | 1039 | } |
| 1043 | 1040 | ||
| 1044 | 1041 | ||
| 1045 | xs_dict *xs_dict_append_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz) | 1042 | xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value) |
| 1046 | /* appends a memory block to the dict */ | 1043 | /* appends a memory block to the dict */ |
| 1047 | { | 1044 | { |
| 1048 | return _xs_dict_write_ditem(dict, xs_size(dict) - 1, key, mem, dsz); | 1045 | return _xs_dict_write_ditem(dict, xs_size(dict) - 1, key, value, xs_size(value)); |
| 1049 | } | 1046 | } |
| 1050 | 1047 | ||
| 1051 | 1048 | ||
| 1052 | xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz) | 1049 | xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value) |
| 1053 | /* prepends a memory block to the dict */ | 1050 | /* prepends a memory block to the dict */ |
| 1054 | { | 1051 | { |
| 1055 | return _xs_dict_write_ditem(dict, 4, key, mem, dsz); | 1052 | return _xs_dict_write_ditem(dict, 4, key, value, xs_size(value)); |
| 1056 | } | ||
| 1057 | |||
| 1058 | |||
| 1059 | int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value) | ||
| 1060 | /* iterates a dict value */ | ||
| 1061 | { | ||
| 1062 | int goon = 1; | ||
| 1063 | |||
| 1064 | xs_val *p = *dict; | ||
| 1065 | |||
| 1066 | /* skip the start of the list */ | ||
| 1067 | if (xs_type(p) == XSTYPE_DICT) | ||
| 1068 | p += 1 + _XS_TYPE_SIZE; | ||
| 1069 | |||
| 1070 | /* an element? */ | ||
| 1071 | if (xs_type(p) == XSTYPE_DITEM) { | ||
| 1072 | p++; | ||
| 1073 | |||
| 1074 | *key = p; | ||
| 1075 | p += xs_size(*key); | ||
| 1076 | |||
| 1077 | *value = p; | ||
| 1078 | p += xs_size(*value); | ||
| 1079 | } | ||
| 1080 | else { | ||
| 1081 | /* end of list */ | ||
| 1082 | goon = 0; | ||
| 1083 | } | ||
| 1084 | |||
| 1085 | /* store back the pointer */ | ||
| 1086 | *dict = p; | ||
| 1087 | |||
| 1088 | return goon; | ||
| 1089 | } | 1053 | } |
| 1090 | 1054 | ||
| 1091 | 1055 | ||
diff --git a/xs_version.h b/xs_version.h index f926e06..a672ef4 100644 --- a/xs_version.h +++ b/xs_version.h | |||
| @@ -1 +1 @@ | |||
| /* 0206a65508e86f66b6aa329418ddc8f6f8c1ecb2 2024-04-22T07:31:05+02:00 */ | /* f3818ad611f09313008a2102a5e543c232e1d824 2024-05-02T23:45:38+02:00 */ | ||