Radcli library 2.0.0
A simple radius library -- new API reference
Loading...
Searching...
No Matches
radcli_avp_iter Struct Reference

#include <radcli2.h>

Data Fields

const radcli_avp_list * list
const radcli_avp * cur

Detailed Description

Iterator over a radcli_avp_list.

A plain value: construct with radcli_avp_list_iter(), advance with radcli_avp_iter_next(). No allocation, safe to copy, safe to run several independent iterators over the same list concurrently (as long as nothing mutates the list while any of them are in use – see radcli_avp_list_st's locking note in lib/avp.c). Fields are an implementation detail; do not access them directly. Deliberately not opaque via an incomplete type: a two-pointer cursor belongs on the caller's stack at zero cost, the way any ccan/list or kernel list cursor does, not behind a heap allocation.

Usage:

const radcli_avp *a;
while ((a = radcli_avp_iter_next(&it)) != NULL) {
...
}
radcli_avp_iter radcli_avp_list_iter(const radcli_avp_list *list)
Begin iterating list.
Definition avp.c:666
const radcli_avp * radcli_avp_iter_next(radcli_avp_iter *it)
Return the current attribute and advance.
Definition avp.c:680

Definition at line 389 of file radcli2.h.

Field Documentation

◆ cur

const radcli_avp* radcli_avp_iter::cur

Definition at line 391 of file radcli2.h.

◆ list

const radcli_avp_list* radcli_avp_iter::list

Definition at line 390 of file radcli2.h.


The documentation for this struct was generated from the following file: