nostrdb

an unfairly fast embedded nostr database backed by lmdb
git clone git://jb55.com/nostrdb
Log | Files | Refs | Submodules | README | LICENSE

commit 9936d1576bed79c10a449f9db5f4e769e8aacee9
parent 49428e8f6aca508f8b173f0bfcb22e65d335b881
Author: William Casarin <jb55@jb55.com>
Date:   Mon, 19 Aug 2024 14:35:04 -0700

filter: retain const variant of get_int_elemnet

otherwise rust gets bitchy at as

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
Msrc/nostrdb.c | 16+++++++++++-----
Msrc/nostrdb.h | 3++-
Mtest.c | 8++++----
3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/nostrdb.c b/src/nostrdb.c @@ -650,11 +650,17 @@ ndb_filter_get_string_element(const struct ndb_filter *filter, const struct ndb_ } uint64_t * -ndb_filter_get_int_element(struct ndb_filter_elements *els, int index) +ndb_filter_get_int_element_ptr(struct ndb_filter_elements *els, int index) { return &els->elements[index]; } +uint64_t +ndb_filter_get_int_element(const struct ndb_filter_elements *els, int index) +{ + return els->elements[index]; +} + int ndb_filter_init(struct ndb_filter *filter) { struct cursor cur; @@ -4839,7 +4845,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 +4916,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,8 @@ 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(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_ptr(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;