From 5de82baf576996a85c9adc808f14d0c9f9cff3b3 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Wed, 28 May 2025 12:48:28 -0400 Subject: pkbktarr: change cb signatures to make use of pktmpln --- pkbktarr.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'pkbktarr.h') diff --git a/pkbktarr.h b/pkbktarr.h index a263f61..b041edc 100644 --- a/pkbktarr.h +++ b/pkbktarr.h @@ -10,8 +10,8 @@ #define PK_BKT_ARR_HANDLE_B_MAX 0xFFFFFF #define PK_BKT_ARR_HANDLE_I_MAX 64 -typedef bool (pk_bkt_arr_compare_fn)(void *user_data, void *obj_data); -typedef void (pk_bkt_arr_iterate_fn)(void *obj_data); +typedef bool (pk_bkt_arr_compare_fn)(void *user_data, const void *user_obj_data, const void *arr_obj_data); +typedef void (pk_bkt_arr_iterate_fn)(void *user_data, void *arr_obj_data); struct pk_bkt_arr_handle { unsigned int b : 24; @@ -41,8 +41,8 @@ enum PK_BKT_ARR_HANDLE_VALIDATION pk_bkt_arr_handle_validate(struct pk_bkt_arr * void pk_bkt_arr_init(struct pk_bkt_arr *bkt_arr, unsigned long stride, unsigned long alignment, struct pk_bkt_arr_handle limits, struct pk_membucket *bkt_buckets, struct pk_membucket *bkt_data); void pk_bkt_arr_clear(struct pk_bkt_arr *bkt_arr); -struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr, void *user_data, pk_bkt_arr_compare_fn fn); -void pk_bkt_arr_iterate(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_iterate_fn fn); +struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_compare_fn fn, void *user_data, const void *user_obj_data); +void pk_bkt_arr_iterate(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_iterate_fn fn, void *user_data); void pk_bkt_arr_teardown(struct pk_bkt_arr *bkt_arr); struct pk_bkt_arr_handle pk_bkt_arr_new_handle(struct pk_bkt_arr *bkt_arr); void pk_bkt_arr_free_handle(struct pk_bkt_arr *bkt_arr, struct pk_bkt_arr_handle handle); @@ -52,6 +52,7 @@ struct pk_bkt_arr_handle pk_bkt_arr_handle_decrement(struct pk_bkt_arr *arr, str #if defined (__cplusplus) #include +#include template struct pk_bkt_arr_t : public pk_bkt_arr { pk_bkt_arr_t(); @@ -136,7 +137,7 @@ void pk_bkt_arr_clear(struct pk_bkt_arr *bkt_arr) { } } -struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr, void *user_data, pk_bkt_arr_compare_fn fn) { +struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_compare_fn fn, void *user_data, const void *user_obj_data) { assert(bkt_arr != NULL); assert(fn != NULL); struct pk_bkt_arr_handle ret; @@ -150,7 +151,7 @@ struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr if (PK_HAS_FLAG(bkt_arr->idx_unused[b], 1ull << i)) { continue; } - if (fn(user_data, arr+(bkt_arr->stride * i))) { + if (fn(user_data, user_obj_data, arr+(bkt_arr->stride * i))) { ret.b = b; ret.i = i; return ret; @@ -160,7 +161,7 @@ struct pk_bkt_arr_handle pk_bkt_arr_find_first_handle(struct pk_bkt_arr *bkt_arr return ret; } -void pk_bkt_arr_iterate(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_iterate_fn fn) { +void pk_bkt_arr_iterate(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_iterate_fn fn, void *user_data) { assert(bkt_arr != NULL); assert(fn != NULL); unsigned int b, i, ii; @@ -171,7 +172,7 @@ void pk_bkt_arr_iterate(struct pk_bkt_arr *bkt_arr, pk_bkt_arr_iterate_fn fn) { if (PK_HAS_FLAG(bkt_arr->idx_unused[b], 1ull << i)) { continue; } - fn(arr+(bkt_arr->stride * i)); + fn(user_data, arr+(bkt_arr->stride * i)); } } } -- cgit v1.2.3