From: Arran Cudbard-Bell Date: Thu, 18 Aug 2022 06:30:19 +0000 (+0700) Subject: Add inverse of fr_pair_list_to_dlist X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc0baf0709aa2a45e42bac719b2660b33a804123;p=thirdparty%2Ffreeradius-server.git Add inverse of fr_pair_list_to_dlist --- diff --git a/src/lib/util/pair.h b/src/lib/util/pair.h index 112099b4b52..6e08f7c592b 100644 --- a/src/lib/util/pair.h +++ b/src/lib/util/pair.h @@ -598,7 +598,9 @@ bool fr_pair_list_empty(fr_pair_list_t const *list) CC_HINT(nonnull); size_t fr_pair_list_num_elements(fr_pair_list_t const *list) CC_HINT(nonnull); -fr_dlist_head_t *fr_pair_list_dlist_head(fr_pair_list_t const *list) CC_HINT(nonnull); +fr_dlist_head_t *fr_pair_list_to_dlist(fr_pair_list_t const *list) CC_HINT(nonnull); + +fr_pair_list_t *fr_pair_list_from_dlist(fr_dlist_head_t const *list) CC_HINT(nonnull); void fr_pair_list_sort(fr_pair_list_t *list, fr_cmp_t cmp) CC_HINT(nonnull); diff --git a/src/lib/util/pair_inline.c b/src/lib/util/pair_inline.c index 042ba347d96..fe242b3f668 100644 --- a/src/lib/util/pair_inline.c +++ b/src/lib/util/pair_inline.c @@ -147,13 +147,23 @@ _INLINE size_t fr_pair_list_num_elements(fr_pair_list_t const *list) * * @param[in] list to get the head from * - * @return number of entries in the list + * @return the pointer to the dlist wihin the pair list. */ -_INLINE fr_dlist_head_t *fr_pair_list_dlist_head(fr_pair_list_t const *list) +_INLINE fr_dlist_head_t *fr_pair_list_to_dlist(fr_pair_list_t const *list) { return fr_pair_order_list_dlist_head(&list->order); } +/** Get the pair list head from a dlist + * + * @param[in] list The order list from a pair list. + * @return The pair list head. + */ +_INLINE fr_pair_list_t *fr_pair_list_from_dlist(fr_dlist_head_t const *list) +{ + return (uintptr_t)list - offsetof(fr_pair_list_t, order); +} + /** Appends a list of fr_pair_t from a temporary list to a destination list * * @param dst list to move pairs into