aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-08 23:10:19 +0800
committerMistivia <i@mistivia.com>2025-06-08 23:10:19 +0800
commit7894904d822f91e89c27ab6c54fc3a4d3d9a4cb3 (patch)
treed2579ba62ed7827d577e2cd5d4fb3324f4f56731 /src
parentd265d0292afde05985f06241c5277a5a9ca7de78 (diff)
add void ptr
Diffstat (limited to 'src')
-rw-r--r--src/basic_traits.c1
-rw-r--r--src/basic_traits.h1
-rw-r--r--src/hash_table.c3
-rw-r--r--src/hash_table.h3
-rw-r--r--src/pqueue.c1
-rw-r--r--src/pqueue.h1
-rw-r--r--src/type_alias.h1
-rw-r--r--src/vec.c1
-rw-r--r--src/vec.h1
9 files changed, 13 insertions, 0 deletions
diff --git a/src/basic_traits.c b/src/basic_traits.c
index 386c72f..e3e6b1b 100644
--- a/src/basic_traits.c
+++ b/src/basic_traits.c
@@ -25,6 +25,7 @@ BASIC_TRAITS_IMPL(UInt);
BASIC_TRAITS_IMPL(ULong);
BASIC_TRAITS_IMPL(Double);
BASIC_TRAITS_IMPL(Float);
+BASIC_TRAITS_IMPL(VoidPtr);
bool String_eq(String* lhs, String *rhs) {
return strcmp(*lhs, *rhs) == 0;
diff --git a/src/basic_traits.h b/src/basic_traits.h
index 2bc4d8c..7c70863 100644
--- a/src/basic_traits.h
+++ b/src/basic_traits.h
@@ -17,6 +17,7 @@ BASIC_TRAITS_DEF(UInt);
BASIC_TRAITS_DEF(ULong);
BASIC_TRAITS_DEF(Double);
BASIC_TRAITS_DEF(Float);
+BASIC_TRAITS_DEF(VoidPtr);
BASIC_TRAITS_DEF(String);
diff --git a/src/hash_table.c b/src/hash_table.c
index 8d97875..0e7bd41 100644
--- a/src/hash_table.c
+++ b/src/hash_table.c
@@ -12,8 +12,11 @@
HASH_TABLE_IMPL(String, Int);
HASH_TABLE_IMPL(String, String);
HASH_TABLE_IMPL(String, Double);
+HASH_TABLE_IMPL(String, VoidPtr);
HASH_TABLE_IMPL(Int, Int);
HASH_TABLE_IMPL(Int, Double);
+HASH_TABLE_IMPL(VoidPtr, Int);
+HASH_TABLE_IMPL(VoidPtr, String);
static void rebuild(HashTable *ht, VoidHashFn hash, VoidEqFn eq) {
diff --git a/src/hash_table.h b/src/hash_table.h
index 857c688..429142c 100644
--- a/src/hash_table.h
+++ b/src/hash_table.h
@@ -79,8 +79,11 @@ typedef struct hash_table HashTable;
HASH_TABLE_DEF(String, Int);
HASH_TABLE_DEF(String, String);
HASH_TABLE_DEF(String, Double);
+HASH_TABLE_DEF(String, VoidPtr);
HASH_TABLE_DEF(Int, Int);
HASH_TABLE_DEF(Int, Double);
+HASH_TABLE_DEF(VoidPtr, Int);
+HASH_TABLE_DEF(VoidPtr, String);
void init_hash_table(HashTable *ht, int64_t elemsz, int64_t cap);
bool hash_table_insert(HashTable *ht, void *elem, VoidHashFn hash, VoidEqFn eq);
diff --git a/src/pqueue.c b/src/pqueue.c
index b1cd733..d070735 100644
--- a/src/pqueue.c
+++ b/src/pqueue.c
@@ -14,3 +14,4 @@ PQUEUE_IMPL(ULong);
PQUEUE_IMPL(Double);
PQUEUE_IMPL(Float);
PQUEUE_IMPL(String);
+PQUEUE_IMPL(VoidPtr);
diff --git a/src/pqueue.h b/src/pqueue.h
index 34b8a55..d91b9a2 100644
--- a/src/pqueue.h
+++ b/src/pqueue.h
@@ -23,6 +23,7 @@ PQUEUE_DEF(ULong);
PQUEUE_DEF(Double);
PQUEUE_DEF(Float);
PQUEUE_DEF(String);
+PQUEUE_DEF(VoidPtr);
#define PQUEUE_IMPL(T) \
static int T##PQueue_cmp(T##PQueue *self, int a, int b) { \
diff --git a/src/type_alias.h b/src/type_alias.h
index ae6b7ff..7af783a 100644
--- a/src/type_alias.h
+++ b/src/type_alias.h
@@ -13,6 +13,7 @@ typedef char Char;
typedef float Float;
typedef double Double;
typedef const char *String;
+typedef const void *VoidPtr;
typedef uint64_t (*VoidHashFn)(void*);
typedef bool (*VoidEqFn)(void*, void*);
diff --git a/src/vec.c b/src/vec.c
index be1ea65..da3d9e0 100644
--- a/src/vec.c
+++ b/src/vec.c
@@ -11,3 +11,4 @@ VECTOR_IMPL(ULong);
VECTOR_IMPL(Double);
VECTOR_IMPL(Float);
VECTOR_IMPL(String);
+VECTOR_IMPL(VoidPtr);
diff --git a/src/vec.h b/src/vec.h
index bd8723c..f2d9712 100644
--- a/src/vec.h
+++ b/src/vec.h
@@ -92,5 +92,6 @@ VECTOR_DEF(ULong);
VECTOR_DEF(Double);
VECTOR_DEF(Float);
VECTOR_DEF(String);
+VECTOR_DEF(VoidPtr);
#endif