From 1ffbd80c6781bc1ffea28c4fb6399db1de7c7669 Mon Sep 17 00:00:00 2001 From: William Casarin Date: Sat, 23 Dec 2023 09:30:08 -0800 Subject: [PATCH] nostrdb: move everything to src Signed-off-by: William Casarin --- nostrdb/Makefile | 59 +++++++++--------- nostrdb/bench.c | 51 --------------- nostrdb/bolt11/libnostrdb.a | Bin 172632 -> 0 bytes nostrdb/{ => src}/bindings/c/.dir | 0 .../bindings/c/flatbuffers_common_builder.h | 0 .../bindings/c/flatbuffers_common_reader.h | 0 nostrdb/{ => src}/bindings/c/meta_builder.h | 0 .../{ => src}/bindings/c/meta_json_parser.h | 0 nostrdb/{ => src}/bindings/c/meta_reader.h | 0 nostrdb/{ => src}/bindings/c/meta_verifier.h | 0 .../{ => src}/bindings/c/profile_builder.h | 0 .../bindings/c/profile_json_parser.h | 0 nostrdb/{ => src}/bindings/c/profile_reader.h | 0 .../{ => src}/bindings/c/profile_verifier.h | 0 nostrdb/{ => src}/bindings/rust/.dir | 0 nostrdb/{ => src}/bindings/rust/ndb_meta.rs | 0 .../{ => src}/bindings/rust/ndb_profile.rs | 0 .../{ => src}/bindings/swift/NdbMeta.swift | 0 .../{ => src}/bindings/swift/NdbProfile.swift | 0 nostrdb/{ => src}/bolt11/alignof.h | 0 nostrdb/{ => src}/bolt11/amount.c | 0 nostrdb/{ => src}/bolt11/amount.h | 0 nostrdb/{ => src}/bolt11/array_size.h | 0 nostrdb/{ => src}/bolt11/bech32.c | 0 nostrdb/{ => src}/bolt11/bech32.h | 0 nostrdb/{ => src}/bolt11/bech32_util.c | 0 nostrdb/{ => src}/bolt11/bech32_util.h | 0 nostrdb/{ => src}/bolt11/bolt11.c | 0 nostrdb/{ => src}/bolt11/bolt11.h | 0 nostrdb/{ => src}/bolt11/build_assert.h | 0 nostrdb/{ => src}/bolt11/check_type.h | 0 nostrdb/{ => src}/bolt11/container_of.h | 0 nostrdb/{ => src}/bolt11/cppmagic.h | 0 nostrdb/{ => src}/bolt11/debug.h | 0 nostrdb/{ => src}/bolt11/error.c | 0 nostrdb/{ => src}/bolt11/error.h | 0 nostrdb/{ => src}/bolt11/hash_u5.c | 0 nostrdb/{ => src}/bolt11/hash_u5.h | 0 nostrdb/{ => src}/bolt11/likely.h | 0 nostrdb/{ => src}/bolt11/list.c | 0 nostrdb/{ => src}/bolt11/list.h | 0 nostrdb/{ => src}/bolt11/mem.c | 0 nostrdb/{ => src}/bolt11/mem.h | 0 nostrdb/{ => src}/bolt11/node_id.c | 0 nostrdb/{ => src}/bolt11/node_id.h | 0 nostrdb/{ => src}/bolt11/overflows.h | 0 nostrdb/{ => src}/bolt11/short_types.h | 0 nostrdb/{ => src}/bolt11/str.h | 0 nostrdb/{ => src}/bolt11/str_debug.h | 0 nostrdb/{ => src}/bolt11/structeq.h | 0 nostrdb/{ => src}/bolt11/take.c | 0 nostrdb/{ => src}/bolt11/take.h | 0 nostrdb/{ => src}/bolt11/tal.c | 0 nostrdb/{ => src}/bolt11/tal.h | 0 nostrdb/{ => src}/bolt11/talstr.c | 0 nostrdb/{ => src}/bolt11/talstr.h | 0 nostrdb/{ => src}/bolt11/typesafe_cb.h | 0 nostrdb/{ => src}/bolt11/utf8.c | 0 nostrdb/{ => src}/bolt11/utf8.h | 0 nostrdb/{ => src}/compiler.h | 6 ++ nostrdb/{ => src}/config.h | 0 nostrdb/{ => src}/configurator.c | 0 nostrdb/{ => src}/cpu.h | 0 nostrdb/{ => src}/cursor.h | 0 nostrdb/{ => src}/endian.h | 0 nostrdb/{ => src}/hex.h | 0 nostrdb/{ => src}/io.h | 0 nostrdb/{ => src}/jsmn.h | 0 nostrdb/{ => src}/lmdb_util.h | 0 nostrdb/{ => src}/memchr.h | 0 nostrdb/{ => src}/nostr_bech32.c | 0 nostrdb/{ => src}/nostr_bech32.h | 0 nostrdb/{ => src}/nostrdb.c | 0 nostrdb/{ => src}/nostrdb.h | 0 nostrdb/{ => src}/print_util.h | 0 nostrdb/{ => src}/protected_queue.h | 0 nostrdb/{ => src}/random.h | 0 nostrdb/{ => src}/sha256.c | 0 nostrdb/{ => src}/sha256.h | 0 nostrdb/{ => src}/threadpool.h | 0 nostrdb/{ => src}/typedefs.h | 0 nostrdb/{ => src}/util.h | 0 82 files changed, 34 insertions(+), 82 deletions(-) delete mode 100644 nostrdb/bench.c delete mode 100644 nostrdb/bolt11/libnostrdb.a rename nostrdb/{ => src}/bindings/c/.dir (100%) rename nostrdb/{ => src}/bindings/c/flatbuffers_common_builder.h (100%) rename nostrdb/{ => src}/bindings/c/flatbuffers_common_reader.h (100%) rename nostrdb/{ => src}/bindings/c/meta_builder.h (100%) rename nostrdb/{ => src}/bindings/c/meta_json_parser.h (100%) rename nostrdb/{ => src}/bindings/c/meta_reader.h (100%) rename nostrdb/{ => src}/bindings/c/meta_verifier.h (100%) rename nostrdb/{ => src}/bindings/c/profile_builder.h (100%) rename nostrdb/{ => src}/bindings/c/profile_json_parser.h (100%) rename nostrdb/{ => src}/bindings/c/profile_reader.h (100%) rename nostrdb/{ => src}/bindings/c/profile_verifier.h (100%) rename nostrdb/{ => src}/bindings/rust/.dir (100%) rename nostrdb/{ => src}/bindings/rust/ndb_meta.rs (100%) rename nostrdb/{ => src}/bindings/rust/ndb_profile.rs (100%) rename nostrdb/{ => src}/bindings/swift/NdbMeta.swift (100%) rename nostrdb/{ => src}/bindings/swift/NdbProfile.swift (100%) rename nostrdb/{ => src}/bolt11/alignof.h (100%) rename nostrdb/{ => src}/bolt11/amount.c (100%) rename nostrdb/{ => src}/bolt11/amount.h (100%) rename nostrdb/{ => src}/bolt11/array_size.h (100%) rename nostrdb/{ => src}/bolt11/bech32.c (100%) rename nostrdb/{ => src}/bolt11/bech32.h (100%) rename nostrdb/{ => src}/bolt11/bech32_util.c (100%) rename nostrdb/{ => src}/bolt11/bech32_util.h (100%) rename nostrdb/{ => src}/bolt11/bolt11.c (100%) rename nostrdb/{ => src}/bolt11/bolt11.h (100%) rename nostrdb/{ => src}/bolt11/build_assert.h (100%) rename nostrdb/{ => src}/bolt11/check_type.h (100%) rename nostrdb/{ => src}/bolt11/container_of.h (100%) rename nostrdb/{ => src}/bolt11/cppmagic.h (100%) rename nostrdb/{ => src}/bolt11/debug.h (100%) rename nostrdb/{ => src}/bolt11/error.c (100%) rename nostrdb/{ => src}/bolt11/error.h (100%) rename nostrdb/{ => src}/bolt11/hash_u5.c (100%) rename nostrdb/{ => src}/bolt11/hash_u5.h (100%) rename nostrdb/{ => src}/bolt11/likely.h (100%) rename nostrdb/{ => src}/bolt11/list.c (100%) rename nostrdb/{ => src}/bolt11/list.h (100%) rename nostrdb/{ => src}/bolt11/mem.c (100%) rename nostrdb/{ => src}/bolt11/mem.h (100%) rename nostrdb/{ => src}/bolt11/node_id.c (100%) rename nostrdb/{ => src}/bolt11/node_id.h (100%) rename nostrdb/{ => src}/bolt11/overflows.h (100%) rename nostrdb/{ => src}/bolt11/short_types.h (100%) rename nostrdb/{ => src}/bolt11/str.h (100%) rename nostrdb/{ => src}/bolt11/str_debug.h (100%) rename nostrdb/{ => src}/bolt11/structeq.h (100%) rename nostrdb/{ => src}/bolt11/take.c (100%) rename nostrdb/{ => src}/bolt11/take.h (100%) rename nostrdb/{ => src}/bolt11/tal.c (100%) rename nostrdb/{ => src}/bolt11/tal.h (100%) rename nostrdb/{ => src}/bolt11/talstr.c (100%) rename nostrdb/{ => src}/bolt11/talstr.h (100%) rename nostrdb/{ => src}/bolt11/typesafe_cb.h (100%) rename nostrdb/{ => src}/bolt11/utf8.c (100%) rename nostrdb/{ => src}/bolt11/utf8.h (100%) rename nostrdb/{ => src}/compiler.h (98%) rename nostrdb/{ => src}/config.h (100%) rename nostrdb/{ => src}/configurator.c (100%) rename nostrdb/{ => src}/cpu.h (100%) rename nostrdb/{ => src}/cursor.h (100%) rename nostrdb/{ => src}/endian.h (100%) rename nostrdb/{ => src}/hex.h (100%) rename nostrdb/{ => src}/io.h (100%) rename nostrdb/{ => src}/jsmn.h (100%) rename nostrdb/{ => src}/lmdb_util.h (100%) rename nostrdb/{ => src}/memchr.h (100%) rename nostrdb/{ => src}/nostr_bech32.c (100%) rename nostrdb/{ => src}/nostr_bech32.h (100%) rename nostrdb/{ => src}/nostrdb.c (100%) rename nostrdb/{ => src}/nostrdb.h (100%) rename nostrdb/{ => src}/print_util.h (100%) rename nostrdb/{ => src}/protected_queue.h (100%) rename nostrdb/{ => src}/random.h (100%) rename nostrdb/{ => src}/sha256.c (100%) rename nostrdb/{ => src}/sha256.h (100%) rename nostrdb/{ => src}/threadpool.h (100%) rename nostrdb/{ => src}/typedefs.h (100%) rename nostrdb/{ => src}/util.h (100%) diff --git a/nostrdb/Makefile b/nostrdb/Makefile index f7328e96..ba4b1db5 100644 --- a/nostrdb/Makefile +++ b/nostrdb/Makefile @@ -1,8 +1,8 @@ CFLAGS = -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include -HEADERS = sha256.h nostrdb.h cursor.h hex.h jsmn.h config.h sha256.h random.h memchr.h cpu.h $(C_BINDINGS) +HEADERS = src/sha256.h src/nostrdb.h src/cursor.h src/hex.h src/jsmn.h src/config.h src/sha256.h src/random.h src/memchr.h src/cpu.h $(C_BINDINGS) FLATCC_SRCS=deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c -BOLT11_SRCS = bolt11/bolt11.c bolt11/bech32.c bolt11/tal.c bolt11/talstr.c bolt11/take.c bolt11/list.c bolt11/utf8.c bolt11/amount.c bolt11/hash_u5.c -SRCS = nostrdb.c sha256.c $(BOLT11_SRCS) $(FLATCC_SRCS) +BOLT11_SRCS = src/bolt11/bolt11.c src/bolt11/bech32.c src/bolt11/tal.c src/bolt11/talstr.c src/bolt11/take.c src/bolt11/list.c src/bolt11/utf8.c src/bolt11/amount.c src/bolt11/hash_u5.c +SRCS = src/nostrdb.c src/sha256.c $(BOLT11_SRCS) $(FLATCC_SRCS) LDS = $(OBJS) $(ARS) OBJS = $(SRCS:.c=.o) DEPS = $(OBJS) $(HEADERS) $(ARS) @@ -11,11 +11,11 @@ LMDB_VER=0.9.31 FLATCC_VER=05dc16dc2b0316e61063bb1fc75426647badce48 PREFIX ?= /usr/local SUBMODULES = deps/secp256k1 -C_BINDINGS_PROFILE=bindings/c/profile_builder.h bindings/c/profile_reader.h bindings/c/profile_verifier.h bindings/c/profile_json_parser.h -C_BINDINGS_META=bindings/c/meta_builder.h bindings/c/meta_reader.h bindings/c/meta_verifier.h bindings/c/meta_json_parser.h -C_BINDINGS_COMMON=bindings/c/flatbuffers_common_builder.h bindings/c/flatbuffers_common_reader.h +BINDINGS=src/bindings +C_BINDINGS_PROFILE=$(BINDINGS)/c/profile_builder.h $(BINDINGS)/c/profile_reader.h $(BINDINGS)/c/profile_verifier.h $(BINDINGS)/c/profile_json_parser.h +C_BINDINGS_META=$(BINDINGS)/c/meta_builder.h $(BINDINGS)/c/meta_reader.h $(BINDINGS)/c/meta_verifier.h $(BINDINGS)/c/meta_json_parser.h +C_BINDINGS_COMMON=$(BINDINGS)/c/flatbuffers_common_builder.h $(BINDINGS)/c/flatbuffers_common_reader.h C_BINDINGS=$(C_BINDINGS_COMMON) $(C_BINDINGS_PROFILE) $(C_BINDINGS_META) -BINDINGS=bindings BIN=ndb CHECKDATA=testdata/db/v0/data.mdb @@ -25,7 +25,7 @@ all: lib ndb lib: benches test ndb: ndb.c $(DEPS) - $(CC) $(CFLAGS) ndb.c $(LDS) -o $@ + $(CC) -Isrc $(CFLAGS) ndb.c $(LDS) -o $@ bindings: bindings-swift bindings-rust bindings-c @@ -53,42 +53,42 @@ config.h: configurator bindings-c: $(C_BINDINGS) -bindings/%/.dir: +src/bindings/%/.dir: mkdir -p $(shell dirname $@) touch $@ -bindings/c/%_builder.h: schemas/%.fbs bindings/c/.dir - flatcc --builder $< -o bindings/c +src/bindings/c/%_builder.h: schemas/%.fbs $(BINDINGS)/c/.dir + flatcc --builder $< -o $(BINDINGS)/c -bindings/c/%_verifier.h bindings/c/%_reader.h: schemas/%.fbs bindings/c/.dir - flatcc --verifier -o bindings/c $< +src/bindings/c/%_verifier.h bindings/c/%_reader.h: schemas/%.fbs $(BINDINGS)/c/.dir + flatcc --verifier -o $(BINDINGS)/c $< -bindings/c/flatbuffers_common_reader.h: bindings/c/.dir - flatcc --common_reader -o bindings/c +src/bindings/c/flatbuffers_common_reader.h: $(BINDINGS)/c/.dir + flatcc --common_reader -o $(BINDINGS)/c -bindings/c/flatbuffers_common_builder.h: bindings/c/.dir - flatcc --common_builder -o bindings/c +src/bindings/c/flatbuffers_common_builder.h: $(BINDINGS)/c/.dir + flatcc --common_builder -o $(BINDINGS)/c -bindings/c/%_json_parser.h: schemas/%.fbs bindings/c/.dir - flatcc --json-parser $< -o bindings/c +src/bindings/c/%_json_parser.h: schemas/%.fbs $(BINDINGS)/c/.dir + flatcc --json-parser $< -o $(BINDINGS)/c -bindings-rust: bindings/rust/ndb_profile.rs bindings/rust/ndb_meta.rs +bindings-rust: $(BINDINGS)/rust/ndb_profile.rs $(BINDINGS)/rust/ndb_meta.rs -bindings/rust/ndb_profile.rs: schemas/profile.fbs bindings/rust +$(BINDINGS)/rust/ndb_profile.rs: schemas/profile.fbs $(BINDINGS)/rust flatc --gen-json-emit --rust $< @mv profile_generated.rs $@ -bindings/rust/ndb_meta.rs: schemas/meta.fbs bindings/swift +$(BINDINGS)/rust/ndb_meta.rs: schemas/meta.fbs $(BINDINGS)/swift flatc --rust $< @mv meta_generated.rs $@ -bindings-swift: bindings/swift/NdbProfile.swift bindings/swift/NdbMeta.swift +bindings-swift: $(BINDINGS)/swift/NdbProfile.swift $(BINDINGS)/swift/NdbMeta.swift -bindings/swift/NdbProfile.swift: schemas/profile.fbs bindings/swift +$(BINDINGS)/swift/NdbProfile.swift: schemas/profile.fbs $(BINDINGS)/swift flatc --gen-json-emit --swift $< @mv profile_generated.swift $@ -bindings/swift/NdbMeta.swift: schemas/meta.fbs bindings/swift +$(BINDINGS)/swift/NdbMeta.swift: schemas/meta.fbs $(BINDINGS)/swift flatc --swift $< @mv meta_generated.swift $@ @@ -135,9 +135,6 @@ deps/secp256k1/config.log: deps/secp256k1/configure deps/lmdb/liblmdb.a: deps/lmdb/lmdb.h $(MAKE) -C deps/lmdb liblmdb.a -bench: bench.c $(DEPS) - $(CC) $(CFLAGS) bench.c $(LDS) -o $@ - testdata/db/ndb-v0.tar.zst: curl https://cdn.jb55.com/s/ndb-v0.tar.zst -o $@ @@ -155,14 +152,14 @@ testdata/many-events.json.zst: testdata/many-events.json: testdata/many-events.json.zst zstd -d $< -bench-ingest-many: bench-ingest-many.c $(DEPS) testdata/many-events.json - $(CC) $(CFLAGS) $< $(LDS) -o $@ +bench: bench-ingest-many.c $(DEPS) testdata/many-events.json + $(CC) -Isrc $(CFLAGS) $< $(LDS) -o $@ testdata/db/.dir: @mkdir -p testdata/db touch testdata/db/.dir test: test.c $(DEPS) testdata/db/.dir - $(CC) $(CFLAGS) test.c $(LDS) -o $@ + $(CC) -Isrc $(CFLAGS) test.c $(LDS) -o $@ .PHONY: tags clean diff --git a/nostrdb/bench.c b/nostrdb/bench.c deleted file mode 100644 index 6dbef99f..00000000 --- a/nostrdb/bench.c +++ /dev/null @@ -1,51 +0,0 @@ - -#include "io.h" -#include "nostrdb.h" -#include -#include -#include - -static int bench_parser(int times, const char *json, int len) -{ - static unsigned char buf[2<<18]; - - struct timespec t1, t2; - int i; - long nanos, ms; - struct ndb_note *note; - - clock_gettime(CLOCK_MONOTONIC, &t1); - for (i = 0; i < times; i++) { - if (!ndb_note_from_json(json, len, ¬e, buf, sizeof(buf))) { - return 0; - } - } - clock_gettime(CLOCK_MONOTONIC, &t2); - - nanos = (t2.tv_sec - t1.tv_sec) * (long)1e9 + (t2.tv_nsec - t1.tv_nsec); - ms = nanos / 1e6; - printf("ns/run\t%ld\nms/run\t%f\nns\t%ld\nms\t%ld\n", - nanos/times, (double)ms/(double)times, nanos, ms); - - return 1; -} - -int main(int argc, char *argv[], char **env) -{ - static const int alloc_size = 2 << 18; - int times = 10000, len = 0; - unsigned char buf[alloc_size]; - - if (!read_file("testdata/contacts.json", buf, alloc_size, &len)) - return 1; - - if (argc >= 2) - times = atoi(argv[1]); - - fprintf(stderr, "benching parser %d times\n", times); - if (!bench_parser(times, (const char*)&buf[0], len)) - return 2; - - return 0; -} - diff --git a/nostrdb/bolt11/libnostrdb.a b/nostrdb/bolt11/libnostrdb.a deleted file mode 100644 index 32e2bc1c6cdf47cffe68364f05162e9af763283e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172632 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 diff --git a/nostrdb/bindings/c/.dir b/nostrdb/src/bindings/c/.dir similarity index 100% rename from nostrdb/bindings/c/.dir rename to nostrdb/src/bindings/c/.dir diff --git a/nostrdb/bindings/c/flatbuffers_common_builder.h b/nostrdb/src/bindings/c/flatbuffers_common_builder.h similarity index 100% rename from nostrdb/bindings/c/flatbuffers_common_builder.h rename to nostrdb/src/bindings/c/flatbuffers_common_builder.h diff --git a/nostrdb/bindings/c/flatbuffers_common_reader.h b/nostrdb/src/bindings/c/flatbuffers_common_reader.h similarity index 100% rename from nostrdb/bindings/c/flatbuffers_common_reader.h rename to nostrdb/src/bindings/c/flatbuffers_common_reader.h diff --git a/nostrdb/bindings/c/meta_builder.h b/nostrdb/src/bindings/c/meta_builder.h similarity index 100% rename from nostrdb/bindings/c/meta_builder.h rename to nostrdb/src/bindings/c/meta_builder.h diff --git a/nostrdb/bindings/c/meta_json_parser.h b/nostrdb/src/bindings/c/meta_json_parser.h similarity index 100% rename from nostrdb/bindings/c/meta_json_parser.h rename to nostrdb/src/bindings/c/meta_json_parser.h diff --git a/nostrdb/bindings/c/meta_reader.h b/nostrdb/src/bindings/c/meta_reader.h similarity index 100% rename from nostrdb/bindings/c/meta_reader.h rename to nostrdb/src/bindings/c/meta_reader.h diff --git a/nostrdb/bindings/c/meta_verifier.h b/nostrdb/src/bindings/c/meta_verifier.h similarity index 100% rename from nostrdb/bindings/c/meta_verifier.h rename to nostrdb/src/bindings/c/meta_verifier.h diff --git a/nostrdb/bindings/c/profile_builder.h b/nostrdb/src/bindings/c/profile_builder.h similarity index 100% rename from nostrdb/bindings/c/profile_builder.h rename to nostrdb/src/bindings/c/profile_builder.h diff --git a/nostrdb/bindings/c/profile_json_parser.h b/nostrdb/src/bindings/c/profile_json_parser.h similarity index 100% rename from nostrdb/bindings/c/profile_json_parser.h rename to nostrdb/src/bindings/c/profile_json_parser.h diff --git a/nostrdb/bindings/c/profile_reader.h b/nostrdb/src/bindings/c/profile_reader.h similarity index 100% rename from nostrdb/bindings/c/profile_reader.h rename to nostrdb/src/bindings/c/profile_reader.h diff --git a/nostrdb/bindings/c/profile_verifier.h b/nostrdb/src/bindings/c/profile_verifier.h similarity index 100% rename from nostrdb/bindings/c/profile_verifier.h rename to nostrdb/src/bindings/c/profile_verifier.h diff --git a/nostrdb/bindings/rust/.dir b/nostrdb/src/bindings/rust/.dir similarity index 100% rename from nostrdb/bindings/rust/.dir rename to nostrdb/src/bindings/rust/.dir diff --git a/nostrdb/bindings/rust/ndb_meta.rs b/nostrdb/src/bindings/rust/ndb_meta.rs similarity index 100% rename from nostrdb/bindings/rust/ndb_meta.rs rename to nostrdb/src/bindings/rust/ndb_meta.rs diff --git a/nostrdb/bindings/rust/ndb_profile.rs b/nostrdb/src/bindings/rust/ndb_profile.rs similarity index 100% rename from nostrdb/bindings/rust/ndb_profile.rs rename to nostrdb/src/bindings/rust/ndb_profile.rs diff --git a/nostrdb/bindings/swift/NdbMeta.swift b/nostrdb/src/bindings/swift/NdbMeta.swift similarity index 100% rename from nostrdb/bindings/swift/NdbMeta.swift rename to nostrdb/src/bindings/swift/NdbMeta.swift diff --git a/nostrdb/bindings/swift/NdbProfile.swift b/nostrdb/src/bindings/swift/NdbProfile.swift similarity index 100% rename from nostrdb/bindings/swift/NdbProfile.swift rename to nostrdb/src/bindings/swift/NdbProfile.swift diff --git a/nostrdb/bolt11/alignof.h b/nostrdb/src/bolt11/alignof.h similarity index 100% rename from nostrdb/bolt11/alignof.h rename to nostrdb/src/bolt11/alignof.h diff --git a/nostrdb/bolt11/amount.c b/nostrdb/src/bolt11/amount.c similarity index 100% rename from nostrdb/bolt11/amount.c rename to nostrdb/src/bolt11/amount.c diff --git a/nostrdb/bolt11/amount.h b/nostrdb/src/bolt11/amount.h similarity index 100% rename from nostrdb/bolt11/amount.h rename to nostrdb/src/bolt11/amount.h diff --git a/nostrdb/bolt11/array_size.h b/nostrdb/src/bolt11/array_size.h similarity index 100% rename from nostrdb/bolt11/array_size.h rename to nostrdb/src/bolt11/array_size.h diff --git a/nostrdb/bolt11/bech32.c b/nostrdb/src/bolt11/bech32.c similarity index 100% rename from nostrdb/bolt11/bech32.c rename to nostrdb/src/bolt11/bech32.c diff --git a/nostrdb/bolt11/bech32.h b/nostrdb/src/bolt11/bech32.h similarity index 100% rename from nostrdb/bolt11/bech32.h rename to nostrdb/src/bolt11/bech32.h diff --git a/nostrdb/bolt11/bech32_util.c b/nostrdb/src/bolt11/bech32_util.c similarity index 100% rename from nostrdb/bolt11/bech32_util.c rename to nostrdb/src/bolt11/bech32_util.c diff --git a/nostrdb/bolt11/bech32_util.h b/nostrdb/src/bolt11/bech32_util.h similarity index 100% rename from nostrdb/bolt11/bech32_util.h rename to nostrdb/src/bolt11/bech32_util.h diff --git a/nostrdb/bolt11/bolt11.c b/nostrdb/src/bolt11/bolt11.c similarity index 100% rename from nostrdb/bolt11/bolt11.c rename to nostrdb/src/bolt11/bolt11.c diff --git a/nostrdb/bolt11/bolt11.h b/nostrdb/src/bolt11/bolt11.h similarity index 100% rename from nostrdb/bolt11/bolt11.h rename to nostrdb/src/bolt11/bolt11.h diff --git a/nostrdb/bolt11/build_assert.h b/nostrdb/src/bolt11/build_assert.h similarity index 100% rename from nostrdb/bolt11/build_assert.h rename to nostrdb/src/bolt11/build_assert.h diff --git a/nostrdb/bolt11/check_type.h b/nostrdb/src/bolt11/check_type.h similarity index 100% rename from nostrdb/bolt11/check_type.h rename to nostrdb/src/bolt11/check_type.h diff --git a/nostrdb/bolt11/container_of.h b/nostrdb/src/bolt11/container_of.h similarity index 100% rename from nostrdb/bolt11/container_of.h rename to nostrdb/src/bolt11/container_of.h diff --git a/nostrdb/bolt11/cppmagic.h b/nostrdb/src/bolt11/cppmagic.h similarity index 100% rename from nostrdb/bolt11/cppmagic.h rename to nostrdb/src/bolt11/cppmagic.h diff --git a/nostrdb/bolt11/debug.h b/nostrdb/src/bolt11/debug.h similarity index 100% rename from nostrdb/bolt11/debug.h rename to nostrdb/src/bolt11/debug.h diff --git a/nostrdb/bolt11/error.c b/nostrdb/src/bolt11/error.c similarity index 100% rename from nostrdb/bolt11/error.c rename to nostrdb/src/bolt11/error.c diff --git a/nostrdb/bolt11/error.h b/nostrdb/src/bolt11/error.h similarity index 100% rename from nostrdb/bolt11/error.h rename to nostrdb/src/bolt11/error.h diff --git a/nostrdb/bolt11/hash_u5.c b/nostrdb/src/bolt11/hash_u5.c similarity index 100% rename from nostrdb/bolt11/hash_u5.c rename to nostrdb/src/bolt11/hash_u5.c diff --git a/nostrdb/bolt11/hash_u5.h b/nostrdb/src/bolt11/hash_u5.h similarity index 100% rename from nostrdb/bolt11/hash_u5.h rename to nostrdb/src/bolt11/hash_u5.h diff --git a/nostrdb/bolt11/likely.h b/nostrdb/src/bolt11/likely.h similarity index 100% rename from nostrdb/bolt11/likely.h rename to nostrdb/src/bolt11/likely.h diff --git a/nostrdb/bolt11/list.c b/nostrdb/src/bolt11/list.c similarity index 100% rename from nostrdb/bolt11/list.c rename to nostrdb/src/bolt11/list.c diff --git a/nostrdb/bolt11/list.h b/nostrdb/src/bolt11/list.h similarity index 100% rename from nostrdb/bolt11/list.h rename to nostrdb/src/bolt11/list.h diff --git a/nostrdb/bolt11/mem.c b/nostrdb/src/bolt11/mem.c similarity index 100% rename from nostrdb/bolt11/mem.c rename to nostrdb/src/bolt11/mem.c diff --git a/nostrdb/bolt11/mem.h b/nostrdb/src/bolt11/mem.h similarity index 100% rename from nostrdb/bolt11/mem.h rename to nostrdb/src/bolt11/mem.h diff --git a/nostrdb/bolt11/node_id.c b/nostrdb/src/bolt11/node_id.c similarity index 100% rename from nostrdb/bolt11/node_id.c rename to nostrdb/src/bolt11/node_id.c diff --git a/nostrdb/bolt11/node_id.h b/nostrdb/src/bolt11/node_id.h similarity index 100% rename from nostrdb/bolt11/node_id.h rename to nostrdb/src/bolt11/node_id.h diff --git a/nostrdb/bolt11/overflows.h b/nostrdb/src/bolt11/overflows.h similarity index 100% rename from nostrdb/bolt11/overflows.h rename to nostrdb/src/bolt11/overflows.h diff --git a/nostrdb/bolt11/short_types.h b/nostrdb/src/bolt11/short_types.h similarity index 100% rename from nostrdb/bolt11/short_types.h rename to nostrdb/src/bolt11/short_types.h diff --git a/nostrdb/bolt11/str.h b/nostrdb/src/bolt11/str.h similarity index 100% rename from nostrdb/bolt11/str.h rename to nostrdb/src/bolt11/str.h diff --git a/nostrdb/bolt11/str_debug.h b/nostrdb/src/bolt11/str_debug.h similarity index 100% rename from nostrdb/bolt11/str_debug.h rename to nostrdb/src/bolt11/str_debug.h diff --git a/nostrdb/bolt11/structeq.h b/nostrdb/src/bolt11/structeq.h similarity index 100% rename from nostrdb/bolt11/structeq.h rename to nostrdb/src/bolt11/structeq.h diff --git a/nostrdb/bolt11/take.c b/nostrdb/src/bolt11/take.c similarity index 100% rename from nostrdb/bolt11/take.c rename to nostrdb/src/bolt11/take.c diff --git a/nostrdb/bolt11/take.h b/nostrdb/src/bolt11/take.h similarity index 100% rename from nostrdb/bolt11/take.h rename to nostrdb/src/bolt11/take.h diff --git a/nostrdb/bolt11/tal.c b/nostrdb/src/bolt11/tal.c similarity index 100% rename from nostrdb/bolt11/tal.c rename to nostrdb/src/bolt11/tal.c diff --git a/nostrdb/bolt11/tal.h b/nostrdb/src/bolt11/tal.h similarity index 100% rename from nostrdb/bolt11/tal.h rename to nostrdb/src/bolt11/tal.h diff --git a/nostrdb/bolt11/talstr.c b/nostrdb/src/bolt11/talstr.c similarity index 100% rename from nostrdb/bolt11/talstr.c rename to nostrdb/src/bolt11/talstr.c diff --git a/nostrdb/bolt11/talstr.h b/nostrdb/src/bolt11/talstr.h similarity index 100% rename from nostrdb/bolt11/talstr.h rename to nostrdb/src/bolt11/talstr.h diff --git a/nostrdb/bolt11/typesafe_cb.h b/nostrdb/src/bolt11/typesafe_cb.h similarity index 100% rename from nostrdb/bolt11/typesafe_cb.h rename to nostrdb/src/bolt11/typesafe_cb.h diff --git a/nostrdb/bolt11/utf8.c b/nostrdb/src/bolt11/utf8.c similarity index 100% rename from nostrdb/bolt11/utf8.c rename to nostrdb/src/bolt11/utf8.c diff --git a/nostrdb/bolt11/utf8.h b/nostrdb/src/bolt11/utf8.h similarity index 100% rename from nostrdb/bolt11/utf8.h rename to nostrdb/src/bolt11/utf8.h diff --git a/nostrdb/compiler.h b/nostrdb/src/compiler.h similarity index 98% rename from nostrdb/compiler.h rename to nostrdb/src/compiler.h index a9b5aa70..36d141e4 100644 --- a/nostrdb/compiler.h +++ b/nostrdb/src/compiler.h @@ -3,6 +3,12 @@ #define CCAN_COMPILER_H #include "config.h" +#if HAVE_UNALIGNED_ACCESS +#define alignment_ok(p, n) 1 +#else +#define alignment_ok(p, n) ((size_t)(p) % (n) == 0) +#endif + #ifndef COLD #if HAVE_ATTRIBUTE_COLD /** diff --git a/nostrdb/config.h b/nostrdb/src/config.h similarity index 100% rename from nostrdb/config.h rename to nostrdb/src/config.h diff --git a/nostrdb/configurator.c b/nostrdb/src/configurator.c similarity index 100% rename from nostrdb/configurator.c rename to nostrdb/src/configurator.c diff --git a/nostrdb/cpu.h b/nostrdb/src/cpu.h similarity index 100% rename from nostrdb/cpu.h rename to nostrdb/src/cpu.h diff --git a/nostrdb/cursor.h b/nostrdb/src/cursor.h similarity index 100% rename from nostrdb/cursor.h rename to nostrdb/src/cursor.h diff --git a/nostrdb/endian.h b/nostrdb/src/endian.h similarity index 100% rename from nostrdb/endian.h rename to nostrdb/src/endian.h diff --git a/nostrdb/hex.h b/nostrdb/src/hex.h similarity index 100% rename from nostrdb/hex.h rename to nostrdb/src/hex.h diff --git a/nostrdb/io.h b/nostrdb/src/io.h similarity index 100% rename from nostrdb/io.h rename to nostrdb/src/io.h diff --git a/nostrdb/jsmn.h b/nostrdb/src/jsmn.h similarity index 100% rename from nostrdb/jsmn.h rename to nostrdb/src/jsmn.h diff --git a/nostrdb/lmdb_util.h b/nostrdb/src/lmdb_util.h similarity index 100% rename from nostrdb/lmdb_util.h rename to nostrdb/src/lmdb_util.h diff --git a/nostrdb/memchr.h b/nostrdb/src/memchr.h similarity index 100% rename from nostrdb/memchr.h rename to nostrdb/src/memchr.h diff --git a/nostrdb/nostr_bech32.c b/nostrdb/src/nostr_bech32.c similarity index 100% rename from nostrdb/nostr_bech32.c rename to nostrdb/src/nostr_bech32.c diff --git a/nostrdb/nostr_bech32.h b/nostrdb/src/nostr_bech32.h similarity index 100% rename from nostrdb/nostr_bech32.h rename to nostrdb/src/nostr_bech32.h diff --git a/nostrdb/nostrdb.c b/nostrdb/src/nostrdb.c similarity index 100% rename from nostrdb/nostrdb.c rename to nostrdb/src/nostrdb.c diff --git a/nostrdb/nostrdb.h b/nostrdb/src/nostrdb.h similarity index 100% rename from nostrdb/nostrdb.h rename to nostrdb/src/nostrdb.h diff --git a/nostrdb/print_util.h b/nostrdb/src/print_util.h similarity index 100% rename from nostrdb/print_util.h rename to nostrdb/src/print_util.h diff --git a/nostrdb/protected_queue.h b/nostrdb/src/protected_queue.h similarity index 100% rename from nostrdb/protected_queue.h rename to nostrdb/src/protected_queue.h diff --git a/nostrdb/random.h b/nostrdb/src/random.h similarity index 100% rename from nostrdb/random.h rename to nostrdb/src/random.h diff --git a/nostrdb/sha256.c b/nostrdb/src/sha256.c similarity index 100% rename from nostrdb/sha256.c rename to nostrdb/src/sha256.c diff --git a/nostrdb/sha256.h b/nostrdb/src/sha256.h similarity index 100% rename from nostrdb/sha256.h rename to nostrdb/src/sha256.h diff --git a/nostrdb/threadpool.h b/nostrdb/src/threadpool.h similarity index 100% rename from nostrdb/threadpool.h rename to nostrdb/src/threadpool.h diff --git a/nostrdb/typedefs.h b/nostrdb/src/typedefs.h similarity index 100% rename from nostrdb/typedefs.h rename to nostrdb/src/typedefs.h diff --git a/nostrdb/util.h b/nostrdb/src/util.h similarity index 100% rename from nostrdb/util.h rename to nostrdb/src/util.h