]> pd.if.org Git - nbds/blob - struct/nstring.c
make skiplist and list use strings for keys (slower by 2x...sigh)
[nbds] / struct / nstring.c
1 #include "common.h"
2 #include "nstring.h"
3 #include "mem.h"
4
5 struct nstring {
6     uint32_t len;
7     char data[];
8 };
9
10 nstring_t *ns_alloc (const void *data, uint32_t len) {
11     nstring_t *ns = nbd_malloc(sizeof(nstring_t) + len);
12     ns->len = len;
13     memcpy(ns->data, data, len);
14     return ns;
15 }
16
17 int ns_cmp_raw (nstring_t *ns, const void *data, uint32_t len) {
18     int rc = memcmp(ns->data, data, (len < ns->len) ? len : ns->len);
19     return (rc == 0) ? ns->len - len : rc;
20 }
21
22 const void *ns_data (nstring_t *ns) { return ns->data; }
23
24 uint64_t    ns_len  (nstring_t *ns) { return ns->len; }