# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED = FR_DLIST_HEAD
+EXPAND_AS_DEFINED = FR_DLIST_HEAD \
+ fr_dbuff_set \
+ FR_SBUFF_SET_RETURN \
+ MEM \
+ fr_assert
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
return fr_dlist_next(list, current);
}
+/** @hidecallergraph */
static void test_list_init(test_item_list_t *list)
{
fr_dlist_talloc_init(&list->head, test_item_t, entry);
* @return
* - 0 on success.
* - -1 on failure.
+ *
+ * @hidecallergraph
*/
static inline CC_HINT(nonnull) int fr_dlist_insert_tail(fr_dlist_head_t *list_head, void *ptr)
{
* @return
* - The HEAD item.
* - NULL if no items exist in the list.
+ *
+ * @hidecallergraph
*/
static inline CC_HINT(nonnull) void *fr_dlist_head(fr_dlist_head_t const *list_head)
{
* - The next item in the list if ptr is not NULL.
* - The head of the list if ptr is NULL.
* - NULL if ptr is the tail of the list (no more items).
+ * @hidecallergraph
*/
static inline CC_HINT(nonnull(1)) void *fr_dlist_next(fr_dlist_head_t const *list_head, void const *ptr)
{
* @return
* - The previous item in the list (makes iteration easier).
* - NULL if we just removed the head of the list.
+ *
+ * @hidecallergraph
*/
static inline CC_HINT(nonnull(1)) void *fr_dlist_remove(fr_dlist_head_t *list_head, void *ptr)
{
#define HEAP_RIGHT(_x) (2 * (_x) + 1 )
#define HEAP_SWAP(_a, _b) { void *_tmp = _a; _a = _b; _b = _tmp; }
+/**
+ * @hidecallergraph
+ */
static inline uint8_t depth(fr_minmax_heap_index_t i)
{
return fr_high_bit_pos(i) - 1;
/** Initialise a pair list header
*
* @param[in,out] list to initialise
+ *
+ * @hidecallergraph
*/
void fr_pair_list_init(fr_pair_list_t *list)
{
* @return
* - 0 on success.
* - -1 on failure (pair already in list).
+ *
+ * @hidecallergraph
*/
int fr_pair_append(fr_pair_list_t *list, fr_pair_t *to_add)
{
* fr_value_box_t which gives us much greater packing efficiency.
*/
uint8_t pad[offsetof(fr_value_box_t, type) + sizeof(fr_type_t)];
-
+
fr_pair_list_t children; //!< Nested attributes of this pair.
};
};
} while (0)
/* Initialisation */
+/** @hidecallergraph */
void fr_pair_list_init(fr_pair_list_t *head) CC_HINT(nonnull);
void fr_pair_init_null(fr_pair_t *vp) CC_HINT(nonnull);
unsigned int fr_pair_count_by_da(fr_pair_list_t const *list, fr_dict_attr_t const *da)
CC_HINT(nonnull);
+/** @hidecallergraph */
fr_pair_t *fr_pair_find_by_da(fr_pair_list_t const *list,
fr_pair_t const *prev, fr_dict_attr_t const *da) CC_HINT(nonnull(1,3));
fr_dict_attr_t const *parent, unsigned int attr,
unsigned int idx) CC_HINT(nonnull);
+/** @hidecallergraph */
int fr_pair_append(fr_pair_list_t *list, fr_pair_t *vp) CC_HINT(nonnull);
int fr_pair_prepend(fr_pair_list_t *list, fr_pair_t *vp) CC_HINT(nonnull);
/** Return a 32-bit random number
*
+ * @hidecallergraph
*/
uint32_t fr_rand(void)
{
void fr_isaac(fr_randctx *ctx);
void fr_rand_init(fr_randctx *ctx, int flag);
+/** @hidecallergraph */
uint32_t fr_rand(void); /* like rand(), but better. */
void fr_rand_buffer(void *start, size_t length) CC_HINT(nonnull);
void fr_rand_str(uint8_t *out, size_t len, char class);
#define fr_time_delta_max() (fr_time_delta_t){ .value = INT64_MAX }
#define fr_time_delta_min() (fr_time_delta_t){ .value = INT64_MIN }
#define fr_time_delta_wrap(_time) (fr_time_delta_t){ .value = (_time) }
+/** @hidecallergraph */
static inline int64_t fr_time_delta_unwrap(fr_time_delta_t time) { return time.value; } /* func to stop mixing with fr_time_t */
#define fr_time_delta_overflow_add(_a, _b) (fr_time_overflow_ispos(_a, true, _b) ? fr_time_delta_max() : fr_time_delta_min())
#define fr_time_delta_overflow_sub(_a, _b) (fr_time_overflow_ispos(_a, false, _b) ? fr_time_delta_max() : fr_time_delta_min())
return fr_time_delta_wrap(out);
}
+/** @hidecallergraph */
static inline fr_time_delta_t fr_time_delta_from_sec(int64_t sec)
{
int64_t out;
*
* @param[in] type to return name for.
* @return name of the type
+ *
+ * @hidecallergraph
*/
static inline char const *fr_type_to_str(fr_type_t type)
{
* @param[in] type to set.
* @param[in] enumv Enumeration values.
* @param[in] tainted Whether data will come from an untrusted source.
+ *
+ * @hidecallergraph
*/
static inline CC_HINT(nonnull(1), always_inline)
void fr_value_box_init(fr_value_box_t *vb, fr_type_t type, fr_dict_attr_t const *enumv, bool tainted)
* @return
* - A new fr_value_box_t.
* - NULL on error.
+ *
+ * @hidecallergraph
*/
static inline CC_HINT(always_inline)
fr_value_box_t *fr_value_box_alloc_null(TALLOC_CTX *ctx)