From a8b14fba55007002d3f1a24b3bfc2d1a63c7d578 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 27 May 2025 10:57:57 -0400 Subject: pke: remove event templates --- src/event.cpp | 138 ---------------------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 src/event.cpp (limited to 'src/event.cpp') diff --git a/src/event.cpp b/src/event.cpp deleted file mode 100644 index 41c1d7a..0000000 --- a/src/event.cpp +++ /dev/null @@ -1,138 +0,0 @@ - -#include "event.hpp" -#include "pk.h" - -#include -#include - -struct BaseEventBucket { - char name[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -}; - -template -struct EventBucket : public BaseEventBucket { - using BaseEventBucket::name; - pk_arr_t callbacks; -}; -using EventArr = pk_arr_t>; -using TickArr = pk_arr_t>; -EventArr eventBuckets; -TickArr tickBuckets; - -template -void EventBucketFind(const char *name, BaseEventBucket*& bkt) { - assert(strlen(name) <= 16); - char safeName[16]; - memset(safeName, '\0', 16); - memcpy(safeName, name, strlen(name)); - - BaseEventBucket *baseBkt = nullptr; - pk_arr *arr = nullptr; - - if constexpr(std::is_same::value) { - arr = &eventBuckets; - } - if constexpr(std::is_same::value) { - arr = &tickBuckets; - } - assert(arr != nullptr); - for (long i = 0; i < arr->next; ++i) { - if constexpr(std::is_same::value) { - EventArr &tArr = *reinterpret_cast(arr); - baseBkt = &tArr[i]; - } - if constexpr(std::is_same::value) { - TickArr &tArr = *reinterpret_cast(arr); - baseBkt = &tArr[i]; - } - assert(baseBkt != nullptr); - if (strncmp(safeName, baseBkt->name, 16) == 0) { - bkt = baseBkt; - return; - } - } - if constexpr(std::is_same::value) { - EventArr &tArr = *reinterpret_cast(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - if constexpr(std::is_same::value) { - TickArr &tArr = *reinterpret_cast(arr); - pk_arr_append_t(&tArr, {}); - bkt = &tArr[tArr.next-1]; - } - assert(bkt != nullptr); - memcpy(bkt->name, safeName, 16); -} - -template<> -void Event_RegisterCallback(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback(const char *name, EventHandler handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - if (tBkt->callbacks[i] == handler) { - pk_arr_remove_at(&tBkt->callbacks, i); - break; - } - } -} - -template<> -void Event_Dispatch(const char *name) { - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - for (int64_t i = 0; i < tBkt->callbacks.next; ++i) { - tBkt->callbacks[i](); - } -} - -template<> -void Event_RegisterCallback(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - pk_arr_append_t(&tBkt->callbacks, handler); -} - -template<> -void Event_UnregisterCallback(const char *name, TickEvent handler) { - assert(handler != nullptr); - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - if (tBkt->callbacks[i] == handler) { - pk_arr_remove_at(&tBkt->callbacks, i); - break; - } - } -} - -template<> -void Event_Dispatch(const char *name, double d) { - BaseEventBucket *bkt = nullptr; - EventBucketFind(name, bkt); - EventBucket *tBkt = reinterpret_cast *>(bkt); - for (uint32_t i = 0; i < tBkt->callbacks.next; ++i) { - tBkt->callbacks[i](d); - } -} - -void Event_Teardown() { - pk_arr_reset(&tickBuckets); - pk_arr_reset(&eventBuckets); -} - -- cgit v1.2.3