diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-28 12:48:28 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-28 12:48:28 -0400 |
| commit | 5de82baf576996a85c9adc808f14d0c9f9cff3b3 (patch) | |
| tree | 6105a0217b804cef0303a9145f75ffa98265ba3b /pkbktarr.h | |
| parent | 3612806d5ea470f5dd2fb5a6e7f5be9de716a67e (diff) | |
pkbktarr: change cb signatures to make use of pktmpln
Diffstat (limited to 'pkbktarr.h')
| -rw-r--r-- | pkbktarr.h | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -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 <assert.h> +#include <future> template<typename T> 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)); } } } |
