summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-05-28 17:11:25 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-05-28 17:11:25 -0400
commit41eec42394ad2df6ad5cd6d400e950d17184bb00 (patch)
tree196299a17d69eb3163d6c95e29a4b65c9f4cf692
parent5de82baf576996a85c9adc808f14d0c9f9cff3b3 (diff)
pkbktarr: handle: MAX + ==operator
-rw-r--r--pkbktarr.h12
-rw-r--r--test/pkbktarr.c26
-rw-r--r--test/pkbktarr.cpp15
3 files changed, 21 insertions, 32 deletions
diff --git a/pkbktarr.h b/pkbktarr.h
index b041edc..60f05bc 100644
--- a/pkbktarr.h
+++ b/pkbktarr.h
@@ -18,6 +18,18 @@ struct pk_bkt_arr_handle {
unsigned int i : 8;
};
+#if ! defined(__cplusplus)
+#define pk_bkt_arr_handle_MAX ((struct pk_bkt_arr_handle){ .b = PK_BKT_ARR_HANDLE_B_MAX, .i = PK_BKT_ARR_HANDLE_I_MAX })
+#else
+#define pk_bkt_arr_handle_MAX (pk_bkt_arr_handle{ .b = PK_BKT_ARR_HANDLE_B_MAX, .i = PK_BKT_ARR_HANDLE_I_MAX })
+constexpr struct pk_bkt_arr_handle pk_bkt_arr_handle_MAX_constexpr = pk_bkt_arr_handle_MAX;
+inline constexpr bool
+operator==(const pk_bkt_arr_handle &lhs, const pk_bkt_arr_handle &rhs)
+{
+ return lhs.b == rhs.b && lhs.i == rhs.i;
+}
+#endif
+
struct pk_bkt_arr {
struct pk_membucket *bkt_buckets;
struct pk_membucket *bkt_data;
diff --git a/test/pkbktarr.c b/test/pkbktarr.c
index 9a93b4c..cb39651 100644
--- a/test/pkbktarr.c
+++ b/test/pkbktarr.c
@@ -111,10 +111,7 @@ int main(int argc, char *argv[])
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
struct pk_bkt_arr arr = {0};
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- pk_bkt_arr_init(&arr, sizeof(int), alignof(int), limits, bkt_buckets, bkt_data);
+ pk_bkt_arr_init(&arr, sizeof(int), alignof(int), pk_bkt_arr_handle_MAX, bkt_buckets, bkt_data);
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
if (h.b != 0) exit(1);
@@ -146,10 +143,7 @@ int main(int argc, char *argv[])
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
struct pk_bkt_arr arr = {0};
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- pk_bkt_arr_init(&arr, sizeof(int), alignof(int), limits, bkt_buckets, bkt_data);
+ pk_bkt_arr_init(&arr, sizeof(int), alignof(int), pk_bkt_arr_handle_MAX, bkt_buckets, bkt_data);
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
if (h.b != 0) exit(1);
@@ -191,10 +185,7 @@ int main(int argc, char *argv[])
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
struct pk_bkt_arr arr = {0};
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- pk_bkt_arr_init(&arr, sizeof(int), alignof(int), limits, bkt_buckets, bkt_data);
+ pk_bkt_arr_init(&arr, sizeof(int), alignof(int), pk_bkt_arr_handle_MAX, bkt_buckets, bkt_data);
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
if (h.b != 0) exit(1);
@@ -223,10 +214,7 @@ int main(int argc, char *argv[])
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
struct pk_bkt_arr arr = {0};
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- pk_bkt_arr_init(&arr, sizeof(int), alignof(int), limits, bkt_buckets, bkt_data);
+ pk_bkt_arr_init(&arr, sizeof(int), alignof(int), pk_bkt_arr_handle_MAX, bkt_buckets, bkt_data);
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
if (h.b != 0) exit(1);
@@ -253,10 +241,8 @@ int main(int argc, char *argv[])
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
struct pk_bkt_arr arr = {0};
- struct pk_bkt_arr_handle h1, h2, limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- pk_bkt_arr_init(&arr, sizeof(int), alignof(int), limits, bkt_buckets, bkt_data);
+ struct pk_bkt_arr_handle h1, h2;
+ pk_bkt_arr_init(&arr, sizeof(int), alignof(int), pk_bkt_arr_handle_MAX, bkt_buckets, bkt_data);
h1 = pk_bkt_arr_new_handle(&arr);
h2 = pk_bkt_arr_new_handle(&arr);
diff --git a/test/pkbktarr.cpp b/test/pkbktarr.cpp
index 2069c8b..e152537 100644
--- a/test/pkbktarr.cpp
+++ b/test/pkbktarr.cpp
@@ -32,10 +32,7 @@ int main(int argc, char *argv[])
{
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- struct pk_bkt_arr_t<int> arr(limits, bkt_buckets, bkt_data);
+ struct pk_bkt_arr_t<int> arr(pk_bkt_arr_handle_MAX_constexpr, bkt_buckets, bkt_data);
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
arr[h] = 128;
@@ -70,10 +67,7 @@ int main(int argc, char *argv[])
{
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- struct pk_bkt_arr_t<int> arr(limits, bkt_buckets, bkt_data);
+ struct pk_bkt_arr_t<int> arr(pk_bkt_arr_handle_MAX_constexpr, bkt_buckets, bkt_data);
int val = 128;
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);
@@ -109,10 +103,7 @@ int main(int argc, char *argv[])
{
assert(bkt_buckets != nullptr);
assert(bkt_data != nullptr);
- struct pk_bkt_arr_handle limits;
- limits.b = PK_BKT_ARR_HANDLE_B_MAX;
- limits.i = PK_BKT_ARR_HANDLE_I_MAX;
- struct pk_bkt_arr_t<int> arr(limits, bkt_buckets, bkt_data);
+ struct pk_bkt_arr_t<int> arr(pk_bkt_arr_handle_MAX_constexpr, bkt_buckets, bkt_data);
int val = 128;
struct pk_bkt_arr_handle h = pk_bkt_arr_new_handle(&arr);