/src/openssl35/include/internal/list.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. |
3 | | * |
4 | | * Licensed under the Apache License 2.0 (the "License"). You may not use |
5 | | * this file except in compliance with the License. You can obtain a copy |
6 | | * in the file LICENSE in the source distribution or at |
7 | | * https://www.openssl.org/source/license.html |
8 | | */ |
9 | | |
10 | | #ifndef OSSL_INTERNAL_LIST_H |
11 | | # define OSSL_INTERNAL_LIST_H |
12 | | # pragma once |
13 | | |
14 | | # include <string.h> |
15 | | # include <assert.h> |
16 | | |
17 | | # ifdef NDEBUG |
18 | | # define OSSL_LIST_DBG(x) |
19 | | # else |
20 | 81.9M | # define OSSL_LIST_DBG(x) x; |
21 | | # endif |
22 | | |
23 | | # define OSSL_LIST_FOREACH_FROM(p, name, init) \ |
24 | 153M | for ((p) = (init); \ |
25 | 306M | (p) != NULL; \ |
26 | 153M | (p) = ossl_list_##name##_next(p)) |
27 | | # define OSSL_LIST_FOREACH(p, name, l) \ |
28 | 153M | OSSL_LIST_FOREACH_FROM(p, name, ossl_list_##name##_head(l)) |
29 | | |
30 | | # define OSSL_LIST_FOREACH_REV_FROM(p, name, init) \ |
31 | | for ((p) = (init); \ |
32 | | (p) != NULL; \ |
33 | | (p) = ossl_list_##name##_prev(p)) |
34 | | # define OSSL_LIST_FOREACH_REV(p, name, l) \ |
35 | | OSSL_LIST_FOREACH_FROM(p, name, ossl_list_##name##_tail(l)) |
36 | | |
37 | | # define OSSL_LIST_FOREACH_DELSAFE_FROM(p, pn, name, init) \ |
38 | 2.23M | for ((p) = (init); \ |
39 | 5.48M | (p) != NULL && (((pn) = ossl_list_##name##_next(p)), 1); \ |
40 | 3.24M | (p) = (pn)) |
41 | | #define OSSL_LIST_FOREACH_DELSAFE(p, pn, name, l) \ |
42 | 2.23M | OSSL_LIST_FOREACH_DELSAFE_FROM(p, pn, name, ossl_list_##name##_head(l)) |
43 | | |
44 | | # define OSSL_LIST_FOREACH_REV_DELSAFE_FROM(p, pn, name, init) \ |
45 | | for ((p) = (init); \ |
46 | | (p) != NULL && (((pn) = ossl_list_##name##_prev(p)), 1); \ |
47 | | (p) = (pn)) |
48 | | # define OSSL_LIST_FOREACH_REV_DELSAFE(p, pn, name, l) \ |
49 | | OSSL_LIST_FOREACH_REV_DELSAFE_FROM(p, pn, name, ossl_list_##name##_tail(l)) |
50 | | |
51 | | /* Define a list structure */ |
52 | | # define OSSL_LIST(name) OSSL_LIST_ ## name |
53 | | |
54 | | /* Define fields to include an element of a list */ |
55 | | # define OSSL_LIST_MEMBER(name, type) \ |
56 | | struct { \ |
57 | | type *next, *prev; \ |
58 | | OSSL_LIST_DBG(struct ossl_list_st_ ## name *list) \ |
59 | | } ossl_list_ ## name |
60 | | |
61 | | # define DECLARE_LIST_OF(name, type) \ |
62 | | typedef struct ossl_list_st_ ## name OSSL_LIST(name); \ |
63 | | struct ossl_list_st_ ## name { \ |
64 | | type *alpha, *omega; \ |
65 | | size_t num_elems; \ |
66 | | } \ |
67 | | |
68 | | # define DEFINE_LIST_OF_IMPL(name, type) \ |
69 | | static ossl_unused ossl_inline void \ |
70 | | ossl_list_##name##_init(OSSL_LIST(name) *list) \ |
71 | 831k | { \ |
72 | 831k | memset(list, 0, sizeof(*list)); \ |
73 | 831k | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_init Unexecuted instantiation: t1_lib.c:ossl_list_urxe_init Unexecuted instantiation: quic_impl.c:ossl_list_urxe_init Unexecuted instantiation: quic_method.c:ossl_list_urxe_init Unexecuted instantiation: quic_obj.c:ossl_list_urxe_init Unexecuted instantiation: quic_port.c:ossl_list_urxe_init Unexecuted instantiation: quic_port.c:ossl_list_ch_init Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_init Unexecuted instantiation: quic_port.c:ossl_list_port_init Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_init Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_init Unexecuted instantiation: quic_record_rx.c:ossl_list_rxe_init Unexecuted instantiation: quic_record_tx.c:ossl_list_txe_init Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_init Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_init Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_init Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_init Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_init Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_init Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_init Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_init Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_init Unexecuted instantiation: quic_txp.c:ossl_list_urxe_init Unexecuted instantiation: quic_wire.c:ossl_list_urxe_init uint_set.c:ossl_list_uint_set_init Line | Count | Source | 71 | 531k | { \ | 72 | 531k | memset(list, 0, sizeof(*list)); \ | 73 | 531k | } \ |
Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_init quic_ackm.c:ossl_list_tx_history_init Line | Count | Source | 71 | 299k | { \ | 72 | 299k | memset(list, 0, sizeof(*list)); \ | 73 | 299k | } \ |
Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_init Unexecuted instantiation: quic_channel.c:ossl_list_urxe_init Unexecuted instantiation: quic_channel.c:ossl_list_ch_init Unexecuted instantiation: quic_demux.c:ossl_list_urxe_init Unexecuted instantiation: quic_engine.c:ossl_list_urxe_init Unexecuted instantiation: quic_engine.c:ossl_list_port_init Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_init Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_init Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_init Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_init Unexecuted instantiation: quic-server.c:ossl_list_urxe_init Unexecuted instantiation: quic-client.c:ossl_list_urxe_init |
74 | | static ossl_unused ossl_inline void \ |
75 | | ossl_list_##name##_init_elem(type *elem) \ |
76 | 4.14M | { \ |
77 | 4.14M | memset(&elem->ossl_list_ ## name, 0, \ |
78 | 4.14M | sizeof(elem->ossl_list_ ## name)); \ |
79 | 4.14M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_init_elem Unexecuted instantiation: t1_lib.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_impl.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_method.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_obj.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_port.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_port.c:ossl_list_ch_init_elem Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_init_elem Unexecuted instantiation: quic_port.c:ossl_list_port_init_elem Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_init_elem quic_record_rx.c:ossl_list_rxe_init_elem Line | Count | Source | 76 | 94.3k | { \ | 77 | 94.3k | memset(&elem->ossl_list_ ## name, 0, \ | 78 | 94.3k | sizeof(elem->ossl_list_ ## name)); \ | 79 | 94.3k | } \ |
Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_init_elem quic_record_tx.c:ossl_list_txe_init_elem Line | Count | Source | 76 | 70.6k | { \ | 77 | 70.6k | memset(&elem->ossl_list_ ## name, 0, \ | 78 | 70.6k | sizeof(elem->ossl_list_ ## name)); \ | 79 | 70.6k | } \ |
Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_init_elem Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_init_elem Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_init_elem Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_txp.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_wire.c:ossl_list_urxe_init_elem uint_set.c:ossl_list_uint_set_init_elem Line | Count | Source | 76 | 645k | { \ | 77 | 645k | memset(&elem->ossl_list_ ## name, 0, \ | 78 | 645k | sizeof(elem->ossl_list_ ## name)); \ | 79 | 645k | } \ |
Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_init_elem Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_init_elem Unexecuted instantiation: quic_channel.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_channel.c:ossl_list_ch_init_elem quic_demux.c:ossl_list_urxe_init_elem Line | Count | Source | 76 | 1.61M | { \ | 77 | 1.61M | memset(&elem->ossl_list_ ## name, 0, \ | 78 | 1.61M | sizeof(elem->ossl_list_ ## name)); \ | 79 | 1.61M | } \ |
Unexecuted instantiation: quic_engine.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_engine.c:ossl_list_port_init_elem quic_fifd.c:ossl_list_tx_history_init_elem Line | Count | Source | 76 | 1.71M | { \ | 77 | 1.71M | memset(&elem->ossl_list_ ## name, 0, \ | 78 | 1.71M | sizeof(elem->ossl_list_ ## name)); \ | 79 | 1.71M | } \ |
Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_init_elem Unexecuted instantiation: quic-server.c:ossl_list_urxe_init_elem Unexecuted instantiation: quic-client.c:ossl_list_urxe_init_elem |
80 | | static ossl_unused ossl_inline int \ |
81 | | ossl_list_##name##_is_empty(const OSSL_LIST(name) *list) \ |
82 | 152M | { \ |
83 | 152M | return list->num_elems == 0; \ |
84 | 152M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_is_empty Unexecuted instantiation: t1_lib.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_impl.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_method.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_obj.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_port.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_port.c:ossl_list_ch_is_empty Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_is_empty Unexecuted instantiation: quic_port.c:ossl_list_port_is_empty Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_is_empty quic_record_rx.c:ossl_list_rxe_is_empty Line | Count | Source | 82 | 149M | { \ | 83 | 149M | return list->num_elems == 0; \ | 84 | 149M | } \ |
Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_record_tx.c:ossl_list_txe_is_empty Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_is_empty Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_is_empty Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_is_empty Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_txp.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_wire.c:ossl_list_urxe_is_empty uint_set.c:ossl_list_uint_set_is_empty Line | Count | Source | 82 | 2.22M | { \ | 83 | 2.22M | return list->num_elems == 0; \ | 84 | 2.22M | } \ |
Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_is_empty quic_ackm.c:ossl_list_uint_set_is_empty Line | Count | Source | 82 | 241k | { \ | 83 | 241k | return list->num_elems == 0; \ | 84 | 241k | } \ |
Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_is_empty Unexecuted instantiation: quic_channel.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_channel.c:ossl_list_ch_is_empty Unexecuted instantiation: quic_demux.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_engine.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_engine.c:ossl_list_port_is_empty Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_is_empty Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_is_empty Unexecuted instantiation: quic-server.c:ossl_list_urxe_is_empty Unexecuted instantiation: quic-client.c:ossl_list_urxe_is_empty |
85 | | static ossl_unused ossl_inline size_t \ |
86 | | ossl_list_##name##_num(const OSSL_LIST(name) *list) \ |
87 | 74.4M | { \ |
88 | 74.4M | return list->num_elems; \ |
89 | 74.4M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_num Unexecuted instantiation: t1_lib.c:ossl_list_urxe_num Unexecuted instantiation: quic_impl.c:ossl_list_urxe_num Unexecuted instantiation: quic_method.c:ossl_list_urxe_num Unexecuted instantiation: quic_obj.c:ossl_list_urxe_num quic_port.c:ossl_list_ch_num Line | Count | Source | 87 | 39.3k | { \ | 88 | 39.3k | return list->num_elems; \ | 89 | 39.3k | } \ |
Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_num Unexecuted instantiation: quic_port.c:ossl_list_urxe_num Unexecuted instantiation: quic_port.c:ossl_list_port_num Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_num Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_num Unexecuted instantiation: quic_record_rx.c:ossl_list_rxe_num Unexecuted instantiation: quic_record_tx.c:ossl_list_txe_num Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_num Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_num Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_num Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_num Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_num quic_sstream.c:ossl_list_uint_set_num Line | Count | Source | 87 | 32.6k | { \ | 88 | 32.6k | return list->num_elems; \ | 89 | 32.6k | } \ |
Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_num Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_num Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_num Unexecuted instantiation: quic_txp.c:ossl_list_urxe_num Unexecuted instantiation: quic_wire.c:ossl_list_urxe_num Unexecuted instantiation: uint_set.c:ossl_list_uint_set_num Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_num quic_ackm.c:ossl_list_uint_set_num Line | Count | Source | 87 | 853k | { \ | 88 | 853k | return list->num_elems; \ | 89 | 853k | } \ |
Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_num Unexecuted instantiation: quic_channel.c:ossl_list_urxe_num Unexecuted instantiation: quic_channel.c:ossl_list_ch_num quic_demux.c:ossl_list_urxe_num Line | Count | Source | 87 | 73.4M | { \ | 88 | 73.4M | return list->num_elems; \ | 89 | 73.4M | } \ |
quic_engine.c:ossl_list_port_num Line | Count | Source | 87 | 78.7k | { \ | 88 | 78.7k | return list->num_elems; \ | 89 | 78.7k | } \ |
Unexecuted instantiation: quic_engine.c:ossl_list_urxe_num Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_num Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_num Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_num Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_num Unexecuted instantiation: quic-server.c:ossl_list_urxe_num Unexecuted instantiation: quic-client.c:ossl_list_urxe_num |
90 | | static ossl_unused ossl_inline type * \ |
91 | | ossl_list_##name##_head(const OSSL_LIST(name) *list) \ |
92 | 626M | { \ |
93 | 626M | assert(list->alpha == NULL \ |
94 | 626M | || list->alpha->ossl_list_ ## name.list == list); \ |
95 | 626M | return list->alpha; \ |
96 | 626M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_head Unexecuted instantiation: t1_lib.c:ossl_list_urxe_head Unexecuted instantiation: quic_impl.c:ossl_list_urxe_head Unexecuted instantiation: quic_method.c:ossl_list_urxe_head Unexecuted instantiation: quic_obj.c:ossl_list_urxe_head Unexecuted instantiation: quic_port.c:ossl_list_urxe_head Unexecuted instantiation: quic_port.c:ossl_list_port_head Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_head Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_head Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_head Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_head Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_head Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_head Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_head Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_head Unexecuted instantiation: quic_txp.c:ossl_list_urxe_head Unexecuted instantiation: quic_wire.c:ossl_list_urxe_head Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_head Unexecuted instantiation: quic_channel.c:ossl_list_urxe_head Unexecuted instantiation: quic_channel.c:ossl_list_ch_head Unexecuted instantiation: quic_engine.c:ossl_list_urxe_head Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_head Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_head Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_head Unexecuted instantiation: quic-server.c:ossl_list_urxe_head Unexecuted instantiation: quic-client.c:ossl_list_urxe_head |
97 | | static ossl_unused ossl_inline type * \ |
98 | | ossl_list_##name##_tail(const OSSL_LIST(name) *list) \ |
99 | 10.9M | { \ |
100 | 10.9M | assert(list->omega == NULL \ |
101 | 10.9M | || list->omega->ossl_list_ ## name.list == list); \ |
102 | 10.9M | return list->omega; \ |
103 | 10.9M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_tail Unexecuted instantiation: t1_lib.c:ossl_list_urxe_tail Unexecuted instantiation: quic_impl.c:ossl_list_urxe_tail Unexecuted instantiation: quic_method.c:ossl_list_urxe_tail Unexecuted instantiation: quic_obj.c:ossl_list_urxe_tail Unexecuted instantiation: quic_port.c:ossl_list_urxe_tail Unexecuted instantiation: quic_port.c:ossl_list_ch_tail Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_tail Unexecuted instantiation: quic_port.c:ossl_list_port_tail Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_tail Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_tail Unexecuted instantiation: quic_record_rx.c:ossl_list_rxe_tail Unexecuted instantiation: quic_record_tx.c:ossl_list_txe_tail Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_tail Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_tail Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_tail Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_tail Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_tail Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_tail Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_tail Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_tail Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_tail Unexecuted instantiation: quic_txp.c:ossl_list_urxe_tail Unexecuted instantiation: quic_wire.c:ossl_list_urxe_tail Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_tail Unexecuted instantiation: quic_channel.c:ossl_list_urxe_tail Unexecuted instantiation: quic_channel.c:ossl_list_ch_tail Unexecuted instantiation: quic_demux.c:ossl_list_urxe_tail Unexecuted instantiation: quic_engine.c:ossl_list_urxe_tail Unexecuted instantiation: quic_engine.c:ossl_list_port_tail Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_tail Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_tail Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_tail Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_tail Unexecuted instantiation: quic-server.c:ossl_list_urxe_tail Unexecuted instantiation: quic-client.c:ossl_list_urxe_tail |
104 | | static ossl_unused ossl_inline type * \ |
105 | | ossl_list_##name##_next(const type *elem) \ |
106 | 2.50G | { \ |
107 | 2.50G | assert(elem->ossl_list_ ## name.next == NULL \ |
108 | 2.50G | || elem->ossl_list_ ## name.next \ |
109 | 2.50G | ->ossl_list_ ## name.prev == elem); \ |
110 | 2.50G | return elem->ossl_list_ ## name.next; \ |
111 | 2.50G | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_next Unexecuted instantiation: t1_lib.c:ossl_list_urxe_next Unexecuted instantiation: quic_impl.c:ossl_list_urxe_next Unexecuted instantiation: quic_method.c:ossl_list_urxe_next Unexecuted instantiation: quic_obj.c:ossl_list_urxe_next Unexecuted instantiation: quic_port.c:ossl_list_urxe_next Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_next Unexecuted instantiation: quic_port.c:ossl_list_port_next Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_next Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_next Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_next Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_next Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_next Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_next Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_next Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_next Unexecuted instantiation: quic_txp.c:ossl_list_urxe_next Unexecuted instantiation: quic_wire.c:ossl_list_urxe_next Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_next Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_next Unexecuted instantiation: quic_channel.c:ossl_list_urxe_next Unexecuted instantiation: quic_channel.c:ossl_list_ch_next Unexecuted instantiation: quic_engine.c:ossl_list_urxe_next Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_next Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_next Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_next Unexecuted instantiation: quic-server.c:ossl_list_urxe_next Unexecuted instantiation: quic-client.c:ossl_list_urxe_next |
112 | | static ossl_unused ossl_inline type * \ |
113 | | ossl_list_##name##_prev(const type *elem) \ |
114 | 74.0M | { \ |
115 | 74.0M | assert(elem->ossl_list_ ## name.prev == NULL \ |
116 | 74.0M | || elem->ossl_list_ ## name.prev \ |
117 | 74.0M | ->ossl_list_ ## name.next == elem); \ |
118 | 74.0M | return elem->ossl_list_ ## name.prev; \ |
119 | 74.0M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_prev Unexecuted instantiation: t1_lib.c:ossl_list_urxe_prev Unexecuted instantiation: quic_impl.c:ossl_list_urxe_prev Unexecuted instantiation: quic_method.c:ossl_list_urxe_prev Unexecuted instantiation: quic_obj.c:ossl_list_urxe_prev Unexecuted instantiation: quic_port.c:ossl_list_urxe_prev Unexecuted instantiation: quic_port.c:ossl_list_ch_prev Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_prev Unexecuted instantiation: quic_port.c:ossl_list_port_prev Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_prev Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_prev Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_prev Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_prev Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_prev Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_prev Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_prev Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_prev Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_prev Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_prev Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_prev Unexecuted instantiation: quic_txp.c:ossl_list_urxe_prev Unexecuted instantiation: quic_wire.c:ossl_list_urxe_prev Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_prev Unexecuted instantiation: quic_channel.c:ossl_list_urxe_prev Unexecuted instantiation: quic_channel.c:ossl_list_ch_prev Unexecuted instantiation: quic_engine.c:ossl_list_urxe_prev Unexecuted instantiation: quic_engine.c:ossl_list_port_prev Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_prev Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_prev Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_prev Unexecuted instantiation: quic-server.c:ossl_list_urxe_prev Unexecuted instantiation: quic-client.c:ossl_list_urxe_prev |
120 | | static ossl_unused ossl_inline void \ |
121 | | ossl_list_##name##_remove(OSSL_LIST(name) *list, type *elem) \ |
122 | 38.7M | { \ |
123 | 38.7M | assert(elem->ossl_list_ ## name.list == list); \ |
124 | 38.7M | OSSL_LIST_DBG(elem->ossl_list_ ## name.list = NULL) \ |
125 | 38.7M | if (list->alpha == elem) \ |
126 | 38.7M | list->alpha = elem->ossl_list_ ## name.next; \ |
127 | 38.7M | if (list->omega == elem) \ |
128 | 38.7M | list->omega = elem->ossl_list_ ## name.prev; \ |
129 | 38.7M | if (elem->ossl_list_ ## name.prev != NULL) \ |
130 | 38.7M | elem->ossl_list_ ## name.prev->ossl_list_ ## name.next = \ |
131 | 780k | elem->ossl_list_ ## name.next; \ |
132 | 38.7M | if (elem->ossl_list_ ## name.next != NULL) \ |
133 | 38.7M | elem->ossl_list_ ## name.next->ossl_list_ ## name.prev = \ |
134 | 19.0M | elem->ossl_list_ ## name.prev; \ |
135 | 38.7M | list->num_elems--; \ |
136 | 38.7M | memset(&elem->ossl_list_ ## name, 0, \ |
137 | 38.7M | sizeof(elem->ossl_list_ ## name)); \ |
138 | 38.7M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_remove Unexecuted instantiation: t1_lib.c:ossl_list_urxe_remove Unexecuted instantiation: quic_impl.c:ossl_list_urxe_remove Unexecuted instantiation: quic_method.c:ossl_list_urxe_remove Unexecuted instantiation: quic_obj.c:ossl_list_urxe_remove Unexecuted instantiation: quic_port.c:ossl_list_urxe_remove Unexecuted instantiation: quic_port.c:ossl_list_ch_remove Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_remove Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_remove Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_remove Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_remove Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_remove Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_remove Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_remove Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_remove Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_remove Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_remove Unexecuted instantiation: quic_txp.c:ossl_list_urxe_remove Unexecuted instantiation: quic_wire.c:ossl_list_urxe_remove Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_remove Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_remove Unexecuted instantiation: quic_channel.c:ossl_list_urxe_remove Unexecuted instantiation: quic_engine.c:ossl_list_urxe_remove Unexecuted instantiation: quic_engine.c:ossl_list_port_remove Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_remove Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_remove Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_remove Unexecuted instantiation: quic-server.c:ossl_list_urxe_remove Unexecuted instantiation: quic-client.c:ossl_list_urxe_remove |
139 | | static ossl_unused ossl_inline void \ |
140 | | ossl_list_##name##_insert_head(OSSL_LIST(name) *list, type *elem) \ |
141 | 223k | { \ |
142 | 223k | assert(elem->ossl_list_ ## name.list == NULL); \ |
143 | 223k | OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ |
144 | 223k | if (list->alpha != NULL) \ |
145 | 223k | list->alpha->ossl_list_ ## name.prev = elem; \ |
146 | 223k | elem->ossl_list_ ## name.next = list->alpha; \ |
147 | 223k | elem->ossl_list_ ## name.prev = NULL; \ |
148 | 223k | list->alpha = elem; \ |
149 | 223k | if (list->omega == NULL) \ |
150 | 223k | list->omega = elem; \ |
151 | 223k | list->num_elems++; \ |
152 | 223k | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_insert_head Unexecuted instantiation: t1_lib.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_impl.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_method.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_obj.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_port.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_port.c:ossl_list_ch_insert_head Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_insert_head Unexecuted instantiation: quic_port.c:ossl_list_port_insert_head Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_insert_head Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_insert_head Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_insert_head Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_insert_head Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_txp.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_wire.c:ossl_list_urxe_insert_head Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_insert_head Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_insert_head Unexecuted instantiation: quic_channel.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_channel.c:ossl_list_ch_insert_head Unexecuted instantiation: quic_engine.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_engine.c:ossl_list_port_insert_head Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_insert_head Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_insert_head Unexecuted instantiation: quic-server.c:ossl_list_urxe_insert_head Unexecuted instantiation: quic-client.c:ossl_list_urxe_insert_head |
153 | | static ossl_unused ossl_inline void \ |
154 | | ossl_list_##name##_insert_tail(OSSL_LIST(name) *list, type *elem) \ |
155 | 42.7M | { \ |
156 | 42.7M | assert(elem->ossl_list_ ## name.list == NULL); \ |
157 | 42.7M | OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ |
158 | 42.7M | if (list->omega != NULL) \ |
159 | 42.7M | list->omega->ossl_list_ ## name.next = elem; \ |
160 | 42.7M | elem->ossl_list_ ## name.prev = list->omega; \ |
161 | 42.7M | elem->ossl_list_ ## name.next = NULL; \ |
162 | 42.7M | list->omega = elem; \ |
163 | 42.7M | if (list->alpha == NULL) \ |
164 | 42.7M | list->alpha = elem; \ |
165 | 42.7M | list->num_elems++; \ |
166 | 42.7M | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_insert_tail Unexecuted instantiation: t1_lib.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_impl.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_method.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_obj.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_port.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_port.c:ossl_list_ch_insert_tail Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_insert_tail Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_insert_tail Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_insert_tail Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_txp.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_wire.c:ossl_list_urxe_insert_tail Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_insert_tail Unexecuted instantiation: quic_channel.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_engine.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_engine.c:ossl_list_port_insert_tail Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_insert_tail Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic-server.c:ossl_list_urxe_insert_tail Unexecuted instantiation: quic-client.c:ossl_list_urxe_insert_tail |
167 | | static ossl_unused ossl_inline void \ |
168 | | ossl_list_##name##_insert_before(OSSL_LIST(name) *list, type *e, \ |
169 | | type *elem) \ |
170 | 133k | { \ |
171 | 133k | assert(elem->ossl_list_ ## name.list == NULL); \ |
172 | 133k | OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ |
173 | 133k | elem->ossl_list_ ## name.next = e; \ |
174 | 133k | elem->ossl_list_ ## name.prev = e->ossl_list_ ## name.prev; \ |
175 | 133k | if (e->ossl_list_ ## name.prev != NULL) \ |
176 | 133k | e->ossl_list_ ## name.prev->ossl_list_ ## name.next = elem; \ |
177 | 133k | e->ossl_list_ ## name.prev = elem; \ |
178 | 133k | if (list->alpha == e) \ |
179 | 133k | list->alpha = elem; \ |
180 | 133k | list->num_elems++; \ |
181 | 133k | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_insert_before Unexecuted instantiation: t1_lib.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_impl.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_method.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_obj.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_port.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_port.c:ossl_list_ch_insert_before Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_insert_before Unexecuted instantiation: quic_port.c:ossl_list_port_insert_before Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_insert_before Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_record_rx.c:ossl_list_rxe_insert_before Unexecuted instantiation: quic_record_tx.c:ossl_list_txe_insert_before Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_insert_before Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_insert_before Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_insert_before Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_txp.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_wire.c:ossl_list_urxe_insert_before Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_insert_before Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_insert_before Unexecuted instantiation: quic_channel.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_channel.c:ossl_list_ch_insert_before Unexecuted instantiation: quic_demux.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_engine.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_engine.c:ossl_list_port_insert_before Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_insert_before Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_insert_before Unexecuted instantiation: quic-server.c:ossl_list_urxe_insert_before Unexecuted instantiation: quic-client.c:ossl_list_urxe_insert_before |
182 | | static ossl_unused ossl_inline void \ |
183 | | ossl_list_##name##_insert_after(OSSL_LIST(name) *list, type *e, \ |
184 | | type *elem) \ |
185 | 0 | { \ |
186 | 0 | assert(elem->ossl_list_ ## name.list == NULL); \ |
187 | 0 | OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ |
188 | 0 | elem->ossl_list_ ## name.prev = e; \ |
189 | 0 | elem->ossl_list_ ## name.next = e->ossl_list_ ## name.next; \ |
190 | 0 | if (e->ossl_list_ ## name.next != NULL) \ |
191 | 0 | e->ossl_list_ ## name.next->ossl_list_ ## name.prev = elem; \ |
192 | 0 | e->ossl_list_ ## name.next = elem; \ |
193 | 0 | if (list->omega == e) \ |
194 | 0 | list->omega = elem; \ |
195 | 0 | list->num_elems++; \ |
196 | 0 | } \ Unexecuted instantiation: ssl_lib.c:ossl_list_urxe_insert_after Unexecuted instantiation: t1_lib.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_impl.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_method.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_obj.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_port.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_port.c:ossl_list_ch_insert_after Unexecuted instantiation: quic_port.c:ossl_list_incoming_ch_insert_after Unexecuted instantiation: quic_port.c:ossl_list_port_insert_after Unexecuted instantiation: quic_reactor_wait_ctx.c:ossl_list_quic_reactor_wait_slot_insert_after Unexecuted instantiation: quic_record_rx.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_record_util.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_rstream.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_rstream.c:ossl_list_uint_set_insert_after Unexecuted instantiation: quic_sf_list.c:ossl_list_uint_set_insert_after Unexecuted instantiation: quic_sf_list.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_sstream.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_sstream.c:ossl_list_uint_set_insert_after Unexecuted instantiation: quic_stream_map.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_thread_assist.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_txp.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_wire.c:ossl_list_urxe_insert_after Unexecuted instantiation: rec_layer_s3.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_ackm.c:ossl_list_uint_set_insert_after Unexecuted instantiation: quic_ackm.c:ossl_list_tx_history_insert_after Unexecuted instantiation: quic_channel.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_channel.c:ossl_list_ch_insert_after Unexecuted instantiation: quic_engine.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_engine.c:ossl_list_port_insert_after Unexecuted instantiation: quic_fifd.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_fifd.c:ossl_list_tx_history_insert_after Unexecuted instantiation: quic_rx_depack.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic_rcidm.c:ossl_list_retiring_insert_after Unexecuted instantiation: quic-server.c:ossl_list_urxe_insert_after Unexecuted instantiation: quic-client.c:ossl_list_urxe_insert_after |
197 | | struct ossl_list_st_ ## name |
198 | | |
199 | | # define DEFINE_LIST_OF(name, type) \ |
200 | | DECLARE_LIST_OF(name, type); \ |
201 | | DEFINE_LIST_OF_IMPL(name, type) |
202 | | |
203 | | #endif |