=head1 NAME
DEFINE_LIST_OF, OSSL_LIST_MEMBER, OSSL_LIST,
-ossl_list_TYPE_init, ossl_list_TYPE_num,
+ossl_list_TYPE_init, ossl_list_TYPE_init_elem,
+ossl_list_TYPE_is_empty, ossl_list_TYPE_num,
ossl_list_TYPE_head, ossl_list_TYPE_tail,
ossl_list_TYPE_next, ossl_list_TYPE_prev,
ossl_list_TYPE_remove, ossl_list_TYPE_insert_head, ossl_list_TYPE_insert_tail,
DEFINE_LIST_OF(NAME, TYPE);
void ossl_list_TYPE_init(OSSL_LIST(name) *list);
+ void ossl_list_TYPE_init_elem(type *elem);
+ int ossl_list_TYPE_is_empty(const OSSL_LIST(name) *list);
size_t ossl_list_TYPE_num(const OSSL_LIST(name) *list);
type *ossl_list_TYPE_head(const OSSL_LIST(name) *list);
type *ossl_list_TYPE_tail(const OSSL_LIST(name) *list);
B<ossl_list_I<NAME>_init>() initialises the memory pointed to by I<list>
to zero which creates an empty list.
+B<ossl_list_I<NAME>_init_elem>() initialises the list related memory pointed
+to by I<elem> to zero which allows it to be used in lists.
+
+B<ossl_list_I<NAME>_is_empty>() returns nonzero if I<list> has no elements and
+zero otherwise.
+
B<ossl_list_I<NAME>_num>() returns the number of elements in I<list>.
B<ossl_list_I<NAME>_head>() returns the first element in the I<list>
=head1 RETURN VALUES
+B<ossl_list_I<NAME>_is_empty>() returns nonzero if the list is empty and zero
+otherwise.
+
B<ossl_list_I<NAME>_num>() returns the number of elements in the
list.
{ \
memset(list, 0, sizeof(*list)); \
} \
+ static ossl_unused ossl_inline void \
+ ossl_list_##name##_init_elem(type *elem) \
+ { \
+ memset(&elem->ossl_list_ ## name, 0, \
+ sizeof(elem->ossl_list_ ## name)); \
+ } \
+ static ossl_unused ossl_inline int \
+ ossl_list_##name##_is_empty(const OSSL_LIST(name) *list) \
+ { \
+ return list->num_elems == 0; \
+ } \
static ossl_unused ossl_inline size_t \
ossl_list_##name##_num(const OSSL_LIST(name) *list) \
{ \
ossl_list_fizz_init(&a);
ossl_list_buzz_init(&b);
+ if (!TEST_true(ossl_list_fizz_is_empty(&a)))
+ return 0;
+
for (i = 1; i < nelem; i++) {
elem[i].n = i;
if (i % 3 == 0) {
}
}
- if (!TEST_size_t_eq(ossl_list_fizz_num(&a), na)
+ if (!TEST_false(ossl_list_fizz_is_empty(&a))
+ || !TEST_size_t_eq(ossl_list_fizz_num(&a), na)
|| !TEST_size_t_eq(ossl_list_buzz_num(&b), nb)
|| !TEST_ptr(ossl_list_fizz_head(&a))
|| !TEST_ptr(ossl_list_fizz_tail(&a))