X-Git-Url: https://pd.if.org/git/?p=nbds;a=blobdiff_plain;f=runtime%2Fnstring.c;fp=runtime%2Fnstring.c;h=a3fdd1fb350c59622db4446c61c857b2d750e165;hp=0000000000000000000000000000000000000000;hb=f1098084dd54496a61f9a254541190df77edd166;hpb=7378edffa5751159d35eab31eceb76a1f16231d0 diff --git a/runtime/nstring.c b/runtime/nstring.c new file mode 100644 index 0000000..a3fdd1f --- /dev/null +++ b/runtime/nstring.c @@ -0,0 +1,25 @@ +#include "common.h" +#include "nstring.h" +#include "murmur.h" +#include "mem.h" + +nstring_t *ns_alloc (uint32_t len) { + nstring_t *ns = nbd_malloc(sizeof(nstring_t) + len); + ns->len = len; + return ns; +} + +int ns_cmp (const nstring_t *ns1, const nstring_t *ns2) { + int d = memcmp(ns1->data, ns2->data, (ns1->len < ns2->len) ? ns1->len : ns1->len); + return (d == 0) ? ns1->len - ns2->len : d; +} + +uint32_t ns_hash (const nstring_t *ns) { + return murmur32(ns->data, ns->len); +} + +nstring_t *ns_dup (const nstring_t *ns1) { + nstring_t *ns2 = ns_alloc(ns1->len); + memcpy(ns2->data, ns1->data, ns1->len); + return ns2; +}