diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-08-28 14:02:26 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-08-28 14:02:26 -0400 |
| commit | f8e456532ffaa9225894e77d5851c8d93a8fdad2 (patch) | |
| tree | 89a0494b8d99f79e78084dcd1a0d66072cbfe3eb | |
| parent | 3e3d08f83f4e19d0f90d1c0356f78058e227f6fe (diff) | |
pkiter: promote to first-class feature
| -rw-r--r-- | pk.h.in | 3 | ||||
| -rw-r--r-- | pkarr.h | 8 | ||||
| -rw-r--r-- | pkbktarr.h | 9 | ||||
| -rw-r--r-- | pkiter.h | 7 | ||||
| -rw-r--r-- | test/pkarr.cpp | 32 | ||||
| -rw-r--r-- | test/pkbktarr.cpp | 4 |
6 files changed, 25 insertions, 38 deletions
@@ -305,9 +305,6 @@ # ifndef PK_IMPL_EV # define PK_IMPL_EV # endif -# ifndef PK_IMPL_ITER -# define PK_IMPL_ITER -# endif # ifndef PK_IMPL_ARR # define PK_IMPL_ARR # endif @@ -3,6 +3,7 @@ #include <stdint.h> #include "pkmem.h" /* deleteme */ +#include "pkiter.h" /*deleteme*/ struct pk_arr { uint32_t next; @@ -25,13 +26,10 @@ void pk_arr_remove_at(struct pk_arr *arr, uint32_t index); void pk_arr_clone(struct pk_arr *lhs, struct pk_arr *rhs); void pk_arr_swap(struct pk_arr *lhs, struct pk_arr *rhs); uint32_t pk_arr_find_first_index(struct pk_arr *arr, void *user_data, pk_arr_item_compare *fn); -#ifdef PK_IMPL_ITER -#include "pkiter.h" /*deleteme*/ bool pk_arr_iter_begin(struct pk_arr *arr, struct pk_iter *it); bool pk_arr_iter_end(struct pk_arr *arr, struct pk_iter *it); bool pk_arr_iter_increment(struct pk_arr *arr, struct pk_iter *it); bool pk_arr_iter_decrement(struct pk_arr *arr, struct pk_iter *it); -#endif /* PK_IMPL_ITER */ #if defined(__cplusplus) template<typename T> @@ -301,8 +299,6 @@ pk_arr_find_first_index(struct pk_arr *arr, void *user_data, pk_arr_item_compare return -1; } -#ifdef PK_IMPL_ITER - bool pk_arr_iter_begin(struct pk_arr *arr, struct pk_iter *it) { it->data = nullptr; @@ -345,6 +341,4 @@ pk_arr_iter_decrement(struct pk_arr *arr, struct pk_iter *it) { return true; } -#endif /* PK_IMPL_ITER */ - #endif /* PK_IMPL_ARR */ @@ -3,6 +3,7 @@ #include "./pkmem.h" /* deleteme */ #include "./pkmacros.h" /* deleteme */ +#include "pkiter.h" /*deleteme*/ #ifndef PK_BKT_ARR_ALL_UNUSED_VAL #define PK_BKT_ARR_ALL_UNUSED_VAL 0xFFFFFFFFFFFFFFFF @@ -62,14 +63,10 @@ void pk_bkt_arr_free_handle(struct pk_bkt_arr *bkt_arr, struct pk_bkt_arr_handle int pk_bkt_arr_handle_compare(struct pk_bkt_arr_handle lhs, struct pk_bkt_arr_handle rhs); struct pk_bkt_arr_handle pk_bkt_arr_handle_increment(struct pk_bkt_arr *arr, struct pk_bkt_arr_handle h); struct pk_bkt_arr_handle pk_bkt_arr_handle_decrement(struct pk_bkt_arr *arr, struct pk_bkt_arr_handle h); - -#ifdef PK_IMPL_ITER -#include "pkiter.h" /*deleteme*/ bool pk_bkt_arr_iter_begin(struct pk_bkt_arr *arr, struct pk_iter *it); bool pk_bkt_arr_iter_end(struct pk_bkt_arr *arr, struct pk_iter *it); bool pk_bkt_arr_iter_increment(struct pk_bkt_arr *arr, struct pk_iter *it); bool pk_bkt_arr_iter_decrement(struct pk_bkt_arr *arr, struct pk_iter *it); -#endif #if defined (__cplusplus) #include "pktmpln.h" /*deleteme*/ @@ -338,8 +335,6 @@ struct pk_bkt_arr_handle pk_bkt_arr_handle_decrement(struct pk_bkt_arr *arr, str return h; } -#ifdef PK_IMPL_ITER - bool pk_bkt_arr_iter_begin(struct pk_bkt_arr *arr, struct pk_iter *it) { it->data = nullptr; it->id.bkt.b = 0; @@ -408,6 +403,4 @@ bool pk_bkt_arr_iter_decrement(struct pk_bkt_arr *arr, struct pk_iter *it) { return true; } -#endif /* PK_IMPL_ITER */ - #endif /* PK_IMPL_BKTARR */ @@ -19,8 +19,11 @@ struct pk_iter { #if defined (__cplusplus) template <typename T> struct pk_iter_t : public pk_iter { - operator T&() { - return *reinterpret_cast<T*>(this->data); + operator T*() { + return reinterpret_cast<T*>(this->data); + } + T* operator->() { + return reinterpret_cast<T*>(this->data); } }; #endif diff --git a/test/pkarr.cpp b/test/pkarr.cpp index db42ad8..8879ca4 100644 --- a/test/pkarr.cpp +++ b/test/pkarr.cpp @@ -171,26 +171,26 @@ int main(int argc, char *argv[]) res = pk_arr_iter_begin(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 0) exit(1); - if (it != 3) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 3) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_increment(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 1) exit(1); - if (it != 2) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 2) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_increment(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 2) exit(1); - if (it != 1) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 1) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_increment(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 3) exit(1); - if (it != 0) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 0) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_increment(&arr, &it); if (res == true) exit(1); @@ -214,26 +214,26 @@ int main(int argc, char *argv[]) res = pk_arr_iter_end(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 3) exit(1); - if (it != 0) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 0) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_decrement(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 2) exit(1); - if (it != 1) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 1) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_decrement(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 1) exit(1); - if (it != 2) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 2) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_decrement(&arr, &it); if (res == false) exit(1); if (it.id.arr.i != 0) exit(1); - if (it != 3) exit(1); - PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *(uint8_t*)it.data); + if (*it != 3) exit(1); + PK_LOGV_INF("iter.data: %p iter.val: %i\n", it.data, *it); res = pk_arr_iter_decrement(&arr, &it); if (res == true) exit(1); diff --git a/test/pkbktarr.cpp b/test/pkbktarr.cpp index db30e56..dd92534 100644 --- a/test/pkbktarr.cpp +++ b/test/pkbktarr.cpp @@ -212,7 +212,7 @@ int main(int argc, char *argv[]) fprintf(stdout, "it.data: %p, val: %i\n", it.data, *(uint8_t*)it.data); if (it.id.bkt.b != u) exit(1); if (it.id.bkt.i != uu) exit(1); - if (it != uu) exit(1); + if (*it != uu) exit(1); } } @@ -264,7 +264,7 @@ int main(int argc, char *argv[]) fprintf(stdout, "it.data: %p, val: %i\n", it.data, *(uint8_t*)it.data); if (it.id.bkt.b != u-1) exit(1); if (it.id.bkt.i != uu-1) exit(1); - if (it != uu-1) exit(1); + if (*it != uu-1) exit(1); } } |
