From 7894904d822f91e89c27ab6c54fc3a4d3d9a4cb3 Mon Sep 17 00:00:00 2001 From: Mistivia Date: Sun, 8 Jun 2025 23:10:19 +0800 Subject: add void ptr --- src/basic_traits.c | 1 + src/basic_traits.h | 1 + src/hash_table.c | 3 +++ src/hash_table.h | 3 +++ src/pqueue.c | 1 + src/pqueue.h | 1 + src/type_alias.h | 1 + src/vec.c | 1 + src/vec.h | 1 + 9 files changed, 13 insertions(+) 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 -- cgit v1.0