summaryrefslogtreecommitdiff
path: root/xs.h
diff options
context:
space:
mode:
Diffstat (limited to 'xs.h')
-rw-r--r--xs.h34
1 files changed, 17 insertions, 17 deletions
diff --git a/xs.h b/xs.h
index b46f0e1..f361830 100644
--- a/xs.h
+++ b/xs.h
@@ -94,8 +94,8 @@ xs_list *xs_list_new(void);
94xs_list *xs_list_append_m(xs_list *list, const char *mem, int dsz); 94xs_list *xs_list_append_m(xs_list *list, const char *mem, int dsz);
95xs_list *_xs_list_append(xs_list *list, const xs_val *vals[]); 95xs_list *_xs_list_append(xs_list *list, const xs_val *vals[]);
96#define xs_list_append(list, ...) _xs_list_append(list, (const xs_val *[]){ __VA_ARGS__, NULL }) 96#define xs_list_append(list, ...) _xs_list_append(list, (const xs_val *[]){ __VA_ARGS__, NULL })
97int xs_list_iter(xs_list **list, xs_val **value); 97int xs_list_iter(xs_list **list, const xs_val **value);
98int xs_list_next(const xs_list *list, xs_val **value, int *ctxt); 98int xs_list_next(const xs_list *list, const xs_val **value, int *ctxt);
99int xs_list_len(const xs_list *list); 99int xs_list_len(const xs_list *list);
100const xs_val *xs_list_get(const xs_list *list, int num); 100const xs_val *xs_list_get(const xs_list *list, int num);
101xs_list *xs_list_del(xs_list *list, int num); 101xs_list *xs_list_del(xs_list *list, int num);
@@ -118,7 +118,7 @@ xs_keyval *xs_keyval_make(xs_keyval *keyval, const xs_str *key, const xs_val *va
118xs_dict *xs_dict_new(void); 118xs_dict *xs_dict_new(void);
119xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value); 119xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value);
120xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value); 120xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value);
121int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt); 121int xs_dict_next(const xs_dict *dict, const xs_str **key, const xs_val **value, int *ctxt);
122const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def); 122const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def);
123#define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL) 123#define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL)
124xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key); 124xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key);
@@ -726,7 +726,7 @@ xs_list *_xs_list_append(xs_list *list, const xs_val *vals[])
726} 726}
727 727
728 728
729int xs_list_iter(xs_list **list, xs_val **value) 729int xs_list_iter(xs_list **list, const xs_val **value)
730/* iterates a list value */ 730/* iterates a list value */
731{ 731{
732 int goon = 1; 732 int goon = 1;
@@ -757,7 +757,7 @@ int xs_list_iter(xs_list **list, xs_val **value)
757} 757}
758 758
759 759
760int xs_list_next(const xs_list *list, xs_val **value, int *ctxt) 760int xs_list_next(const xs_list *list, const xs_val **value, int *ctxt)
761/* iterates a list, with context */ 761/* iterates a list, with context */
762{ 762{
763 if (xs_type(list) != XSTYPE_LIST) 763 if (xs_type(list) != XSTYPE_LIST)
@@ -765,7 +765,7 @@ int xs_list_next(const xs_list *list, xs_val **value, int *ctxt)
765 765
766 int goon = 1; 766 int goon = 1;
767 767
768 char *p = (char *)list; 768 const char *p = list;
769 769
770 /* skip the start of the list */ 770 /* skip the start of the list */
771 if (*ctxt == 0) 771 if (*ctxt == 0)
@@ -800,7 +800,7 @@ int xs_list_len(const xs_list *list)
800 800
801 int c = 0; 801 int c = 0;
802 xs_list *p = (xs_list *)list; 802 xs_list *p = (xs_list *)list;
803 xs_val *v; 803 const xs_val *v;
804 804
805 while (xs_list_iter(&p, &v)) 805 while (xs_list_iter(&p, &v))
806 c++; 806 c++;
@@ -819,7 +819,7 @@ const xs_val *xs_list_get(const xs_list *list, int num)
819 819
820 int c = 0; 820 int c = 0;
821 xs_list *p = (xs_list *)list; 821 xs_list *p = (xs_list *)list;
822 xs_val *v; 822 const xs_val *v;
823 823
824 while (xs_list_iter(&p, &v)) { 824 while (xs_list_iter(&p, &v)) {
825 if (c == num) 825 if (c == num)
@@ -881,7 +881,7 @@ xs_list *xs_list_dequeue(xs_list *list, xs_val **data, int last)
881 XS_ASSERT_TYPE(list, XSTYPE_LIST); 881 XS_ASSERT_TYPE(list, XSTYPE_LIST);
882 882
883 xs_list *p = list; 883 xs_list *p = list;
884 xs_val *v = NULL; 884 const xs_val *v = NULL;
885 885
886 if (!last) { 886 if (!last) {
887 /* get the first */ 887 /* get the first */
@@ -910,7 +910,7 @@ int xs_list_in(const xs_list *list, const xs_val *val)
910 910
911 int n = 0; 911 int n = 0;
912 xs_list *p = (xs_list *)list; 912 xs_list *p = (xs_list *)list;
913 xs_val *v; 913 const xs_val *v;
914 int sz = xs_size(val); 914 int sz = xs_size(val);
915 915
916 while (xs_list_iter(&p, &v)) { 916 while (xs_list_iter(&p, &v)) {
@@ -931,7 +931,7 @@ xs_str *xs_join(const xs_list *list, const char *sep)
931 931
932 xs_str *s = NULL; 932 xs_str *s = NULL;
933 xs_list *p = (xs_list *)list; 933 xs_list *p = (xs_list *)list;
934 xs_val *v; 934 const xs_val *v;
935 int c = 0; 935 int c = 0;
936 int offset = 0; 936 int offset = 0;
937 int ssz = strlen(sep); 937 int ssz = strlen(sep);
@@ -1087,7 +1087,7 @@ xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value)
1087} 1087}
1088 1088
1089 1089
1090int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt) 1090int xs_dict_next(const xs_dict *dict, const xs_str **key, const xs_val **value, int *ctxt)
1091/* iterates a dict, with context */ 1091/* iterates a dict, with context */
1092{ 1092{
1093 if (xs_type(dict) != XSTYPE_DICT) 1093 if (xs_type(dict) != XSTYPE_DICT)
@@ -1131,8 +1131,8 @@ const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_v
1131 XS_ASSERT_TYPE(dict, XSTYPE_DICT); 1131 XS_ASSERT_TYPE(dict, XSTYPE_DICT);
1132 XS_ASSERT_TYPE(key, XSTYPE_STRING); 1132 XS_ASSERT_TYPE(key, XSTYPE_STRING);
1133 1133
1134 xs_str *k; 1134 const xs_str *k;
1135 xs_val *v; 1135 const xs_val *v;
1136 int c = 0; 1136 int c = 0;
1137 1137
1138 while (xs_dict_next(dict, &k, &v, &c)) { 1138 while (xs_dict_next(dict, &k, &v, &c)) {
@@ -1150,14 +1150,14 @@ xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key)
1150 XS_ASSERT_TYPE(dict, XSTYPE_DICT); 1150 XS_ASSERT_TYPE(dict, XSTYPE_DICT);
1151 XS_ASSERT_TYPE(key, XSTYPE_STRING); 1151 XS_ASSERT_TYPE(key, XSTYPE_STRING);
1152 1152
1153 xs_str *k; 1153 const xs_str *k;
1154 xs_val *v; 1154 const xs_val *v;
1155 int c = 0; 1155 int c = 0;
1156 1156
1157 while (xs_dict_next(dict, &k, &v, &c)) { 1157 while (xs_dict_next(dict, &k, &v, &c)) {
1158 if (strcmp(k, key) == 0) { 1158 if (strcmp(k, key) == 0) {
1159 /* the address of the item is just behind the key */ 1159 /* the address of the item is just behind the key */
1160 char *i = k - 1; 1160 char *i = (char *)k - 1;
1161 1161
1162 dict = xs_collapse(dict, i - dict, xs_size(i)); 1162 dict = xs_collapse(dict, i - dict, xs_size(i));
1163 break; 1163 break;