commit 49428e8f6aca508f8b173f0bfcb22e65d335b881
parent c1bc2053bfe7544aaa61a9b2e5069de39e27b78e
Author: William Casarin <jb55@jb55.com>
Date: Mon, 19 Aug 2024 14:23:22 -0700
filter: allow mutable int elements
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/nostrdb.c b/src/nostrdb.c
@@ -649,10 +649,10 @@ ndb_filter_get_string_element(const struct ndb_filter *filter, const struct ndb_
return (const char *)ndb_filter_elements_data(filter, els->elements[index]);
}
-uint64_t
-ndb_filter_get_int_element(const struct ndb_filter_elements *els, int index)
+uint64_t *
+ndb_filter_get_int_element(struct ndb_filter_elements *els, int index)
{
- return els->elements[index];
+ return &els->elements[index];
}
int ndb_filter_init(struct ndb_filter *filter)
@@ -4839,7 +4839,7 @@ static int cursor_push_json_elem_array(struct cursor *cur,
return 0;
break;
case NDB_ELEMENT_INT:
- val = ndb_filter_get_int_element(elems, i);
+ val = *ndb_filter_get_int_element(elems, i);
if (!cursor_push_int_str(cur, val))
return 0;
break;
@@ -4910,19 +4910,19 @@ int ndb_filter_json(const struct ndb_filter *filter, char *buf, int buflen)
case NDB_FILTER_SINCE:
if (!cursor_push_str(c, "\"since\":"))
return 0;
- if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0)))
+ if (!cursor_push_int_str(c, *ndb_filter_get_int_element(elems, 0)))
return 0;
break;
case NDB_FILTER_UNTIL:
if (!cursor_push_str(c, "\"until\":"))
return 0;
- if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0)))
+ if (!cursor_push_int_str(c, *ndb_filter_get_int_element(elems, 0)))
return 0;
break;
case NDB_FILTER_LIMIT:
if (!cursor_push_str(c, "\"limit\":"))
return 0;
- if (!cursor_push_int_str(c, ndb_filter_get_int_element(elems, 0)))
+ if (!cursor_push_int_str(c, *ndb_filter_get_int_element(elems, 0)))
return 0;
break;
}
diff --git a/src/nostrdb.h b/src/nostrdb.h
@@ -499,7 +499,7 @@ int ndb_filter_from_json(const char *, int len, struct ndb_filter *filter, unsig
// getting field elements
unsigned char *ndb_filter_get_id_element(const struct ndb_filter *, const struct ndb_filter_elements *, int index);
const char *ndb_filter_get_string_element(const struct ndb_filter *, const struct ndb_filter_elements *, int index);
-uint64_t ndb_filter_get_int_element(const struct ndb_filter_elements *, int index);
+uint64_t *ndb_filter_get_int_element(struct ndb_filter_elements *, int index);
struct ndb_filter_elements *ndb_filter_current_element(const struct ndb_filter *);
struct ndb_filter_elements *ndb_filter_get_elements(const struct ndb_filter *, int);
diff --git a/test.c b/test.c
@@ -862,17 +862,17 @@ static void test_parse_filter_json()
case 1:
assert(elems->field.type == NDB_FILTER_KINDS);
assert(elems->count == 3);
- val = ndb_filter_get_int_element(elems, 0);
+ val = *ndb_filter_get_int_element(elems, 0);
assert(val == 1);
- val = ndb_filter_get_int_element(elems, 1);
+ val = *ndb_filter_get_int_element(elems, 1);
assert(val == 2);
- val = ndb_filter_get_int_element(elems, 2);
+ val = *ndb_filter_get_int_element(elems, 2);
assert(val == 3);
break;
case 2:
assert(elems->field.type == NDB_FILTER_LIMIT);
- val = ndb_filter_get_int_element(elems, 0);
+ val = *ndb_filter_get_int_element(elems, 0);
assert(val == 10);
break;