/src/dovecot/src/lib/array.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef ARRAY_H |
2 | | #define ARRAY_H |
3 | | |
4 | | /* Array is a buffer accessible using fixed size elements. As long as the |
5 | | compiler provides a typeof() operator, the array provides type safety. If |
6 | | a wrong type is tried to be added to the array, or if the array's contents |
7 | | are tried to be used using a wrong type, the compiler will give a warning. |
8 | | |
9 | | Example usage: |
10 | | |
11 | | struct foo { |
12 | | ARRAY(struct bar) bars; |
13 | | ... |
14 | | }; |
15 | | |
16 | | i_array_init(&foo->bars, 10); |
17 | | |
18 | | struct bar *bar = array_idx(&foo->bars, 5); |
19 | | struct baz *baz = array_idx(&foo->bars, 5); // compiler warning |
20 | | |
21 | | If you want to pass an array as a parameter to a function, you'll need to |
22 | | create a type for the array using ARRAY_DEFINE_TYPE() and use the type in |
23 | | the parameter using ARRAY_TYPE(). Any arrays that you want to be passing |
24 | | around, such as structure members as in the above example, must also be |
25 | | defined using ARRAY_TYPE() too, rather than ARRAY(). |
26 | | |
27 | | Example: |
28 | | |
29 | | ARRAY_DEFINE_TYPE(foo, struct foo); |
30 | | void do_foo(ARRAY_TYPE(foo) *foos) { |
31 | | struct foo *foo = array_idx(foos, 0); |
32 | | } |
33 | | struct foo_manager { |
34 | | ARRAY_TYPE(foo) foos; // pedantically, ARRAY(struct foo) is a different type |
35 | | }; |
36 | | // ... |
37 | | do_foo(&my_foo_manager->foos); // No compiler warning about mismatched types |
38 | | |
39 | | */ |
40 | | #include "array-decl.h" |
41 | | #include "buffer.h" |
42 | | |
43 | | #define p_array_init(array, pool, init_count) \ |
44 | 601k | array_create(array, pool, sizeof(**(array)->v), init_count) // NOLINT(bugprone-sizeof-expression) |
45 | | #define i_array_init(array, init_count) \ |
46 | 25.5k | p_array_init(array, default_pool, init_count) |
47 | | #define t_array_init(array, init_count) \ |
48 | 0 | p_array_init(array, pool_datastack_create(), init_count) |
49 | | |
50 | | #ifdef HAVE_TYPEOF |
51 | | # define ARRAY_TYPE_CAST_CONST(array) \ |
52 | 527k | (typeof(*(array)->v)) |
53 | | # define ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
54 | 2.84M | (typeof(*(array)->v_modifiable)) |
55 | | # define ARRAY_TYPE_CHECK(array, data) \ |
56 | | COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \ |
57 | | **(array)->v_modifiable, *(data)) |
58 | | # define ARRAY_TYPES_CHECK(array1, array2) \ |
59 | | COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE( \ |
60 | | **(array1)->v_modifiable, **(array2)->v_modifiable) |
61 | | |
62 | | #else |
63 | | # define ARRAY_TYPE_CAST_CONST(array) |
64 | | # define ARRAY_TYPE_CAST_MODIFIABLE(array) |
65 | | # define ARRAY_TYPE_CHECK(array, data) 0 |
66 | | # define ARRAY_TYPES_CHECK(array1, array2) 0 |
67 | | #endif |
68 | | |
69 | | /* Usage: |
70 | | ARRAY(struct foo) foo_arr; |
71 | | struct foo *foo; |
72 | | |
73 | | array_foreach(&foo_arr, foo) { |
74 | | .. |
75 | | } |
76 | | |
77 | | Note that deleting an element while iterating will cause the iteration to |
78 | | skip over the next element. So deleting a single element and breaking out |
79 | | of the loop is fine, but continuing the loop is likely a bug. Use |
80 | | array_foreach_reverse() instead when deleting multiple elements. |
81 | | */ |
82 | | #define array_foreach(array, elem) \ |
83 | 0 | for (const void *elem ## __foreach_end = \ |
84 | 0 | (const char *)(elem = *(array)->v) + (array)->arr.buffer->used; \ |
85 | 0 | elem != elem ## __foreach_end; (elem)++) |
86 | | #define array_foreach_modifiable(array, elem) \ |
87 | 824k | for (const void *elem ## _end = \ |
88 | 824k | (const char *)(elem = ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
89 | 824k | buffer_get_modifiable_data((array)->arr.buffer, NULL)) + \ |
90 | 824k | (array)->arr.buffer->used; \ |
91 | 2.38M | elem != elem ## _end; (elem)++) |
92 | | |
93 | | /* Iterate the array in reverse order. */ |
94 | | #define array_foreach_reverse(array, elem) \ |
95 | | for (elem = CONST_PTR_OFFSET(*(array)->v, (array)->arr.buffer->used); \ |
96 | | (const char *)(elem--) > (const char *)*(array)->v; ) |
97 | | #define array_foreach_reverse_modifiable(array, elem) \ |
98 | | for (elem = ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
99 | | ((char *)buffer_get_modifiable_data((array)->arr.buffer, NULL) + \ |
100 | | (array)->arr.buffer->used); \ |
101 | | (const char *)(elem--) > (const char *)*(array)->v; ) |
102 | | |
103 | | /* Usage: |
104 | | ARRAY(struct foo *) foo_ptrs_arr; |
105 | | struct foo *foo; |
106 | | |
107 | | array_foreach_elem(&foo_ptrs_arr, foo) { |
108 | | .. |
109 | | } */ |
110 | | #define array_foreach_elem(array, elem) \ |
111 | 1.18M | for (const void *_foreach_end = \ |
112 | 1.18M | /* NOLINTBEGIN(bugprone-sizeof-expression) */ \ |
113 | 1.18M | CONST_PTR_OFFSET(*(array)->v, (array)->arr.buffer->used), \ |
114 | 1.18M | *_foreach_ptr = CONST_PTR_OFFSET(*(array)->v, ARRAY_TYPE_CHECK(array, &elem) + \ |
115 | 1.18M | COMPILE_ERROR_IF_TRUE(sizeof(elem) > sizeof(void *))) \ |
116 | 1.18M | ; \ |
117 | 1.30M | (_foreach_ptr != _foreach_end && \ |
118 | 1.30M | (memcpy(&elem, _foreach_ptr, sizeof(elem)), TRUE)) \ |
119 | 1.18M | ; \ |
120 | 1.18M | _foreach_ptr = CONST_PTR_OFFSET(_foreach_ptr, sizeof(elem))) \ |
121 | | /* NOLINTEND(bugprone-sizeof-expression) */ \ |
122 | | |
123 | | |
124 | | #define array_ptr_to_idx(array, elem) \ |
125 | 0 | ((elem) - (array)->v[0]) |
126 | | /* Return index of iterated element inside array_foreach() or |
127 | | array_foreach_modifiable() loop. Note that this doesn't work inside |
128 | | array_foreach_elem() loop. */ |
129 | | #define array_foreach_idx(array, elem) \ |
130 | 0 | array_ptr_to_idx(array, elem) |
131 | | |
132 | | static inline void |
133 | | array_create_from_buffer_i(struct array *array, buffer_t *buffer, |
134 | | size_t element_size) |
135 | 601k | { |
136 | 601k | array->buffer = buffer; |
137 | 601k | array->element_size = element_size; |
138 | 601k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_create_from_buffer_i smtp-server-reply.c:array_create_from_buffer_i Line | Count | Source | 135 | 125k | { | 136 | 125k | array->buffer = buffer; | 137 | 125k | array->element_size = element_size; | 138 | 125k | } |
smtp-server-command.c:array_create_from_buffer_i Line | Count | Source | 135 | 6.37k | { | 136 | 6.37k | array->buffer = buffer; | 137 | 6.37k | array->element_size = element_size; | 138 | 6.37k | } |
smtp-server-transaction.c:array_create_from_buffer_i Line | Count | Source | 135 | 2.93k | { | 136 | 2.93k | array->buffer = buffer; | 137 | 2.93k | array->element_size = element_size; | 138 | 2.93k | } |
Unexecuted instantiation: smtp-server-connection.c:array_create_from_buffer_i Unexecuted instantiation: smtp-server.c:array_create_from_buffer_i Unexecuted instantiation: smtp-syntax.c:array_create_from_buffer_i Unexecuted instantiation: smtp-params.c:array_create_from_buffer_i Unexecuted instantiation: smtp-reply.c:array_create_from_buffer_i Unexecuted instantiation: smtp-reply-parser.c:array_create_from_buffer_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_create_from_buffer_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_create_from_buffer_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_create_from_buffer_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_create_from_buffer_i Unexecuted instantiation: settings.c:array_create_from_buffer_i Unexecuted instantiation: settings-parser.c:array_create_from_buffer_i Unexecuted instantiation: expansion-program.c:array_create_from_buffer_i Unexecuted instantiation: var-expand.c:array_create_from_buffer_i Unexecuted instantiation: var-expand-parser.c:array_create_from_buffer_i Unexecuted instantiation: expansion-filter.c:array_create_from_buffer_i Unexecuted instantiation: array.c:array_create_from_buffer_i Unexecuted instantiation: event-filter.c:array_create_from_buffer_i Unexecuted instantiation: iostream.c:array_create_from_buffer_i Unexecuted instantiation: istream.c:array_create_from_buffer_i ioloop.c:array_create_from_buffer_i Line | Count | Source | 135 | 6.37k | { | 136 | 6.37k | array->buffer = buffer; | 137 | 6.37k | array->element_size = element_size; | 138 | 6.37k | } |
ioloop-epoll.c:array_create_from_buffer_i Line | Count | Source | 135 | 12.7k | { | 136 | 12.7k | array->buffer = buffer; | 137 | 12.7k | array->element_size = element_size; | 138 | 12.7k | } |
lib.c:array_create_from_buffer_i Line | Count | Source | 135 | 1 | { | 136 | 1 | array->buffer = buffer; | 137 | 1 | array->element_size = element_size; | 138 | 1 | } |
lib-event.c:array_create_from_buffer_i Line | Count | Source | 135 | 441k | { | 136 | 441k | array->buffer = buffer; | 137 | 441k | array->element_size = element_size; | 138 | 441k | } |
Unexecuted instantiation: lib-signals.c:array_create_from_buffer_i Unexecuted instantiation: mempool.c:array_create_from_buffer_i Unexecuted instantiation: module-dir.c:array_create_from_buffer_i priorityq.c:array_create_from_buffer_i Line | Count | Source | 135 | 6.37k | { | 136 | 6.37k | array->buffer = buffer; | 137 | 6.37k | array->element_size = element_size; | 138 | 6.37k | } |
Unexecuted instantiation: punycode.c:array_create_from_buffer_i Unexecuted instantiation: strfuncs.c:array_create_from_buffer_i Unexecuted instantiation: unichar.c:array_create_from_buffer_i Unexecuted instantiation: env-util.c:array_create_from_buffer_i |
139 | | #define array_create_from_buffer(array, buffer, element_size) \ |
140 | | array_create_from_buffer_i(&(array)->arr, buffer, element_size) |
141 | | |
142 | | static inline void |
143 | | array_create_i(struct array *array, pool_t pool, |
144 | | size_t element_size, unsigned int init_count) |
145 | 601k | { |
146 | 601k | buffer_t *buffer; |
147 | | |
148 | 601k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, |
149 | 601k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : |
150 | 601k | UINT_MAX * element_size); |
151 | 601k | array_create_from_buffer_i(array, buffer, element_size); |
152 | 601k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_create_i smtp-server-reply.c:array_create_i Line | Count | Source | 145 | 125k | { | 146 | 125k | buffer_t *buffer; | 147 | | | 148 | 125k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 125k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 125k | UINT_MAX * element_size); | 151 | 125k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 125k | } |
smtp-server-command.c:array_create_i Line | Count | Source | 145 | 6.37k | { | 146 | 6.37k | buffer_t *buffer; | 147 | | | 148 | 6.37k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 6.37k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 6.37k | UINT_MAX * element_size); | 151 | 6.37k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 6.37k | } |
smtp-server-transaction.c:array_create_i Line | Count | Source | 145 | 2.93k | { | 146 | 2.93k | buffer_t *buffer; | 147 | | | 148 | 2.93k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 2.93k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 2.93k | UINT_MAX * element_size); | 151 | 2.93k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 2.93k | } |
Unexecuted instantiation: smtp-server-connection.c:array_create_i Unexecuted instantiation: smtp-server.c:array_create_i Unexecuted instantiation: smtp-syntax.c:array_create_i Unexecuted instantiation: smtp-params.c:array_create_i Unexecuted instantiation: smtp-reply.c:array_create_i Unexecuted instantiation: smtp-reply-parser.c:array_create_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_create_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_create_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_create_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_create_i Unexecuted instantiation: settings.c:array_create_i Unexecuted instantiation: settings-parser.c:array_create_i Unexecuted instantiation: expansion-program.c:array_create_i Unexecuted instantiation: var-expand.c:array_create_i Unexecuted instantiation: var-expand-parser.c:array_create_i Unexecuted instantiation: expansion-filter.c:array_create_i Unexecuted instantiation: array.c:array_create_i Unexecuted instantiation: event-filter.c:array_create_i Unexecuted instantiation: iostream.c:array_create_i Unexecuted instantiation: istream.c:array_create_i Line | Count | Source | 145 | 6.37k | { | 146 | 6.37k | buffer_t *buffer; | 147 | | | 148 | 6.37k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 6.37k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 6.37k | UINT_MAX * element_size); | 151 | 6.37k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 6.37k | } |
ioloop-epoll.c:array_create_i Line | Count | Source | 145 | 12.7k | { | 146 | 12.7k | buffer_t *buffer; | 147 | | | 148 | 12.7k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 12.7k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 12.7k | UINT_MAX * element_size); | 151 | 12.7k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 12.7k | } |
Line | Count | Source | 145 | 1 | { | 146 | 1 | buffer_t *buffer; | 147 | | | 148 | 1 | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 1 | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 1 | UINT_MAX * element_size); | 151 | 1 | array_create_from_buffer_i(array, buffer, element_size); | 152 | 1 | } |
lib-event.c:array_create_i Line | Count | Source | 145 | 441k | { | 146 | 441k | buffer_t *buffer; | 147 | | | 148 | 441k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 441k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 441k | UINT_MAX * element_size); | 151 | 441k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 441k | } |
Unexecuted instantiation: lib-signals.c:array_create_i Unexecuted instantiation: mempool.c:array_create_i Unexecuted instantiation: module-dir.c:array_create_i priorityq.c:array_create_i Line | Count | Source | 145 | 6.37k | { | 146 | 6.37k | buffer_t *buffer; | 147 | | | 148 | 6.37k | buffer = buffer_create_dynamic_max(pool, init_count * element_size, | 149 | 6.37k | SIZE_MAX / element_size < UINT_MAX ? SIZE_MAX : | 150 | 6.37k | UINT_MAX * element_size); | 151 | 6.37k | array_create_from_buffer_i(array, buffer, element_size); | 152 | 6.37k | } |
Unexecuted instantiation: punycode.c:array_create_i Unexecuted instantiation: strfuncs.c:array_create_i Unexecuted instantiation: unichar.c:array_create_i Unexecuted instantiation: env-util.c:array_create_i |
153 | | #define array_create(array, pool, element_size, init_count) \ |
154 | 601k | array_create_i(&(array)->arr, pool, element_size, init_count) |
155 | | |
156 | | static inline void |
157 | | array_free_i(struct array *array) |
158 | 25.5k | { |
159 | 25.5k | buffer_free(&array->buffer); |
160 | 25.5k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_free_i Unexecuted instantiation: smtp-server-reply.c:array_free_i Unexecuted instantiation: smtp-server-command.c:array_free_i Unexecuted instantiation: smtp-server-transaction.c:array_free_i Unexecuted instantiation: smtp-server-connection.c:array_free_i Unexecuted instantiation: smtp-server.c:array_free_i Unexecuted instantiation: smtp-syntax.c:array_free_i Unexecuted instantiation: smtp-params.c:array_free_i Unexecuted instantiation: smtp-reply.c:array_free_i Unexecuted instantiation: smtp-reply-parser.c:array_free_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_free_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_free_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_free_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_free_i Unexecuted instantiation: settings.c:array_free_i Unexecuted instantiation: settings-parser.c:array_free_i Unexecuted instantiation: expansion-program.c:array_free_i Unexecuted instantiation: var-expand.c:array_free_i Unexecuted instantiation: var-expand-parser.c:array_free_i Unexecuted instantiation: expansion-filter.c:array_free_i Unexecuted instantiation: array.c:array_free_i Unexecuted instantiation: event-filter.c:array_free_i Unexecuted instantiation: iostream.c:array_free_i Unexecuted instantiation: istream.c:array_free_i Line | Count | Source | 158 | 6.37k | { | 159 | 6.37k | buffer_free(&array->buffer); | 160 | 6.37k | } |
ioloop-epoll.c:array_free_i Line | Count | Source | 158 | 12.7k | { | 159 | 12.7k | buffer_free(&array->buffer); | 160 | 12.7k | } |
Unexecuted instantiation: lib.c:array_free_i Unexecuted instantiation: lib-event.c:array_free_i Unexecuted instantiation: lib-signals.c:array_free_i Unexecuted instantiation: mempool.c:array_free_i Unexecuted instantiation: module-dir.c:array_free_i Line | Count | Source | 158 | 6.37k | { | 159 | 6.37k | buffer_free(&array->buffer); | 160 | 6.37k | } |
Unexecuted instantiation: punycode.c:array_free_i Unexecuted instantiation: strfuncs.c:array_free_i Unexecuted instantiation: unichar.c:array_free_i Unexecuted instantiation: env-util.c:array_free_i |
161 | | #define array_free(array) \ |
162 | 25.5k | array_free_i(&(array)->arr) |
163 | | |
164 | | static inline void * ATTR_WARN_UNUSED_RESULT |
165 | | array_free_without_data_i(struct array *array) |
166 | 0 | { |
167 | 0 | return buffer_free_without_data(&array->buffer); |
168 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_free_without_data_i Unexecuted instantiation: smtp-server-reply.c:array_free_without_data_i Unexecuted instantiation: smtp-server-command.c:array_free_without_data_i Unexecuted instantiation: smtp-server-transaction.c:array_free_without_data_i Unexecuted instantiation: smtp-server-connection.c:array_free_without_data_i Unexecuted instantiation: smtp-server.c:array_free_without_data_i Unexecuted instantiation: smtp-syntax.c:array_free_without_data_i Unexecuted instantiation: smtp-params.c:array_free_without_data_i Unexecuted instantiation: smtp-reply.c:array_free_without_data_i Unexecuted instantiation: smtp-reply-parser.c:array_free_without_data_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_free_without_data_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_free_without_data_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_free_without_data_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_free_without_data_i Unexecuted instantiation: settings.c:array_free_without_data_i Unexecuted instantiation: settings-parser.c:array_free_without_data_i Unexecuted instantiation: expansion-program.c:array_free_without_data_i Unexecuted instantiation: var-expand.c:array_free_without_data_i Unexecuted instantiation: var-expand-parser.c:array_free_without_data_i Unexecuted instantiation: expansion-filter.c:array_free_without_data_i Unexecuted instantiation: array.c:array_free_without_data_i Unexecuted instantiation: event-filter.c:array_free_without_data_i Unexecuted instantiation: iostream.c:array_free_without_data_i Unexecuted instantiation: istream.c:array_free_without_data_i Unexecuted instantiation: ioloop.c:array_free_without_data_i Unexecuted instantiation: ioloop-epoll.c:array_free_without_data_i Unexecuted instantiation: lib.c:array_free_without_data_i Unexecuted instantiation: lib-event.c:array_free_without_data_i Unexecuted instantiation: lib-signals.c:array_free_without_data_i Unexecuted instantiation: mempool.c:array_free_without_data_i Unexecuted instantiation: module-dir.c:array_free_without_data_i Unexecuted instantiation: priorityq.c:array_free_without_data_i Unexecuted instantiation: punycode.c:array_free_without_data_i Unexecuted instantiation: strfuncs.c:array_free_without_data_i Unexecuted instantiation: unichar.c:array_free_without_data_i Unexecuted instantiation: env-util.c:array_free_without_data_i |
169 | | #define array_free_without_data(array) \ |
170 | | ARRAY_TYPE_CAST_MODIFIABLE(array)array_free_without_data_i(&(array)->arr) |
171 | | |
172 | | static inline bool |
173 | | array_is_created_i(const struct array *array) |
174 | 4.31M | { |
175 | 4.31M | return array->buffer != NULL; |
176 | 4.31M | } smtp-server-cmd-data.c:array_is_created_i Line | Count | Source | 174 | 2.69k | { | 175 | 2.69k | return array->buffer != NULL; | 176 | 2.69k | } |
smtp-server-reply.c:array_is_created_i Line | Count | Source | 174 | 257k | { | 175 | 257k | return array->buffer != NULL; | 176 | 257k | } |
smtp-server-command.c:array_is_created_i Line | Count | Source | 174 | 641k | { | 175 | 641k | return array->buffer != NULL; | 176 | 641k | } |
smtp-server-transaction.c:array_is_created_i Line | Count | Source | 174 | 75.5k | { | 175 | 75.5k | return array->buffer != NULL; | 176 | 75.5k | } |
Unexecuted instantiation: smtp-server-connection.c:array_is_created_i Unexecuted instantiation: smtp-server.c:array_is_created_i Unexecuted instantiation: smtp-syntax.c:array_is_created_i smtp-params.c:array_is_created_i Line | Count | Source | 174 | 18.6k | { | 175 | 18.6k | return array->buffer != NULL; | 176 | 18.6k | } |
Unexecuted instantiation: smtp-reply.c:array_is_created_i Unexecuted instantiation: smtp-reply-parser.c:array_is_created_i smtp-server-cmd-helo.c:array_is_created_i Line | Count | Source | 174 | 7.12k | { | 175 | 7.12k | return array->buffer != NULL; | 176 | 7.12k | } |
smtp-server-cmd-mail.c:array_is_created_i Line | Count | Source | 174 | 13.4k | { | 175 | 13.4k | return array->buffer != NULL; | 176 | 13.4k | } |
smtp-server-cmd-rcpt.c:array_is_created_i Line | Count | Source | 174 | 14.5k | { | 175 | 14.5k | return array->buffer != NULL; | 176 | 14.5k | } |
Unexecuted instantiation: smtp-server-cmd-xclient.c:array_is_created_i Unexecuted instantiation: settings.c:array_is_created_i Unexecuted instantiation: settings-parser.c:array_is_created_i Unexecuted instantiation: expansion-program.c:array_is_created_i Unexecuted instantiation: var-expand.c:array_is_created_i Unexecuted instantiation: var-expand-parser.c:array_is_created_i Unexecuted instantiation: expansion-filter.c:array_is_created_i Unexecuted instantiation: array.c:array_is_created_i Unexecuted instantiation: event-filter.c:array_is_created_i iostream.c:array_is_created_i Line | Count | Source | 174 | 59.4k | { | 175 | 59.4k | return array->buffer != NULL; | 176 | 59.4k | } |
Unexecuted instantiation: istream.c:array_is_created_i ioloop.c:array_is_created_i Line | Count | Source | 174 | 19.1k | { | 175 | 19.1k | return array->buffer != NULL; | 176 | 19.1k | } |
Unexecuted instantiation: ioloop-epoll.c:array_is_created_i Line | Count | Source | 174 | 2 | { | 175 | 2 | return array->buffer != NULL; | 176 | 2 | } |
lib-event.c:array_is_created_i Line | Count | Source | 174 | 2.47M | { | 175 | 2.47M | return array->buffer != NULL; | 176 | 2.47M | } |
lib-signals.c:array_is_created_i Line | Count | Source | 174 | 12.7k | { | 175 | 12.7k | return array->buffer != NULL; | 176 | 12.7k | } |
mempool.c:array_is_created_i Line | Count | Source | 174 | 718k | { | 175 | 718k | return array->buffer != NULL; | 176 | 718k | } |
Unexecuted instantiation: module-dir.c:array_is_created_i Unexecuted instantiation: priorityq.c:array_is_created_i Unexecuted instantiation: punycode.c:array_is_created_i Unexecuted instantiation: strfuncs.c:array_is_created_i Unexecuted instantiation: unichar.c:array_is_created_i Unexecuted instantiation: env-util.c:array_is_created_i |
177 | | #define array_is_created(array) \ |
178 | 3.99M | array_is_created_i(&(array)->arr) |
179 | | |
180 | | static inline pool_t ATTR_PURE |
181 | | array_get_pool_i(struct array *array) |
182 | 0 | { |
183 | 0 | return buffer_get_pool(array->buffer); |
184 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_get_pool_i Unexecuted instantiation: smtp-server-reply.c:array_get_pool_i Unexecuted instantiation: smtp-server-command.c:array_get_pool_i Unexecuted instantiation: smtp-server-transaction.c:array_get_pool_i Unexecuted instantiation: smtp-server-connection.c:array_get_pool_i Unexecuted instantiation: smtp-server.c:array_get_pool_i Unexecuted instantiation: smtp-syntax.c:array_get_pool_i Unexecuted instantiation: smtp-params.c:array_get_pool_i Unexecuted instantiation: smtp-reply.c:array_get_pool_i Unexecuted instantiation: smtp-reply-parser.c:array_get_pool_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_get_pool_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_get_pool_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_get_pool_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_get_pool_i Unexecuted instantiation: settings.c:array_get_pool_i Unexecuted instantiation: settings-parser.c:array_get_pool_i Unexecuted instantiation: expansion-program.c:array_get_pool_i Unexecuted instantiation: var-expand.c:array_get_pool_i Unexecuted instantiation: var-expand-parser.c:array_get_pool_i Unexecuted instantiation: expansion-filter.c:array_get_pool_i Unexecuted instantiation: array.c:array_get_pool_i Unexecuted instantiation: event-filter.c:array_get_pool_i Unexecuted instantiation: iostream.c:array_get_pool_i Unexecuted instantiation: istream.c:array_get_pool_i Unexecuted instantiation: ioloop.c:array_get_pool_i Unexecuted instantiation: ioloop-epoll.c:array_get_pool_i Unexecuted instantiation: lib.c:array_get_pool_i Unexecuted instantiation: lib-event.c:array_get_pool_i Unexecuted instantiation: lib-signals.c:array_get_pool_i Unexecuted instantiation: mempool.c:array_get_pool_i Unexecuted instantiation: module-dir.c:array_get_pool_i Unexecuted instantiation: priorityq.c:array_get_pool_i Unexecuted instantiation: punycode.c:array_get_pool_i Unexecuted instantiation: strfuncs.c:array_get_pool_i Unexecuted instantiation: unichar.c:array_get_pool_i Unexecuted instantiation: env-util.c:array_get_pool_i |
185 | | #define array_get_pool(array) \ |
186 | | array_get_pool_i(&(array)->arr) |
187 | | |
188 | | static inline void |
189 | | array_clear_i(struct array *array) |
190 | 9.85k | { |
191 | 9.85k | buffer_set_used_size(array->buffer, 0); |
192 | 9.85k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_clear_i Unexecuted instantiation: smtp-server-reply.c:array_clear_i Unexecuted instantiation: smtp-server-command.c:array_clear_i Unexecuted instantiation: smtp-server-transaction.c:array_clear_i Unexecuted instantiation: smtp-server-connection.c:array_clear_i Unexecuted instantiation: smtp-server.c:array_clear_i Unexecuted instantiation: smtp-syntax.c:array_clear_i Unexecuted instantiation: smtp-params.c:array_clear_i Unexecuted instantiation: smtp-reply.c:array_clear_i Unexecuted instantiation: smtp-reply-parser.c:array_clear_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_clear_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_clear_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_clear_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_clear_i Unexecuted instantiation: settings.c:array_clear_i Unexecuted instantiation: settings-parser.c:array_clear_i Unexecuted instantiation: expansion-program.c:array_clear_i Unexecuted instantiation: var-expand.c:array_clear_i Unexecuted instantiation: var-expand-parser.c:array_clear_i Unexecuted instantiation: expansion-filter.c:array_clear_i Unexecuted instantiation: array.c:array_clear_i Unexecuted instantiation: event-filter.c:array_clear_i Unexecuted instantiation: iostream.c:array_clear_i Unexecuted instantiation: istream.c:array_clear_i Line | Count | Source | 190 | 9.85k | { | 191 | 9.85k | buffer_set_used_size(array->buffer, 0); | 192 | 9.85k | } |
Unexecuted instantiation: ioloop-epoll.c:array_clear_i Unexecuted instantiation: lib.c:array_clear_i Unexecuted instantiation: lib-event.c:array_clear_i Unexecuted instantiation: lib-signals.c:array_clear_i Unexecuted instantiation: mempool.c:array_clear_i Unexecuted instantiation: module-dir.c:array_clear_i Unexecuted instantiation: priorityq.c:array_clear_i Unexecuted instantiation: punycode.c:array_clear_i Unexecuted instantiation: strfuncs.c:array_clear_i Unexecuted instantiation: unichar.c:array_clear_i Unexecuted instantiation: env-util.c:array_clear_i |
193 | | #define array_clear(array) \ |
194 | 9.85k | array_clear_i(&(array)->arr) |
195 | | |
196 | | static inline unsigned int ATTR_PURE |
197 | | array_count_i(const struct array *array) |
198 | 491k | { |
199 | 491k | return array->buffer->used / array->element_size; |
200 | 491k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_count_i Unexecuted instantiation: smtp-server-reply.c:array_count_i Unexecuted instantiation: smtp-server-command.c:array_count_i smtp-server-transaction.c:array_count_i Line | Count | Source | 198 | 48.8k | { | 199 | 48.8k | return array->buffer->used / array->element_size; | 200 | 48.8k | } |
Unexecuted instantiation: smtp-server-connection.c:array_count_i Unexecuted instantiation: smtp-server.c:array_count_i Unexecuted instantiation: smtp-syntax.c:array_count_i Unexecuted instantiation: smtp-params.c:array_count_i Unexecuted instantiation: smtp-reply.c:array_count_i Unexecuted instantiation: smtp-reply-parser.c:array_count_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_count_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_count_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_count_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_count_i Unexecuted instantiation: settings.c:array_count_i Unexecuted instantiation: settings-parser.c:array_count_i Unexecuted instantiation: expansion-program.c:array_count_i Unexecuted instantiation: var-expand.c:array_count_i Unexecuted instantiation: var-expand-parser.c:array_count_i Unexecuted instantiation: expansion-filter.c:array_count_i Line | Count | Source | 198 | 150k | { | 199 | 150k | return array->buffer->used / array->element_size; | 200 | 150k | } |
Unexecuted instantiation: event-filter.c:array_count_i Unexecuted instantiation: iostream.c:array_count_i Unexecuted instantiation: istream.c:array_count_i Line | Count | Source | 198 | 39.6k | { | 199 | 39.6k | return array->buffer->used / array->element_size; | 200 | 39.6k | } |
ioloop-epoll.c:array_count_i Line | Count | Source | 198 | 46.0k | { | 199 | 46.0k | return array->buffer->used / array->element_size; | 200 | 46.0k | } |
Line | Count | Source | 198 | 1 | { | 199 | 1 | return array->buffer->used / array->element_size; | 200 | 1 | } |
Unexecuted instantiation: lib-event.c:array_count_i Unexecuted instantiation: lib-signals.c:array_count_i Unexecuted instantiation: mempool.c:array_count_i Unexecuted instantiation: module-dir.c:array_count_i priorityq.c:array_count_i Line | Count | Source | 198 | 205k | { | 199 | 205k | return array->buffer->used / array->element_size; | 200 | 205k | } |
Unexecuted instantiation: punycode.c:array_count_i Unexecuted instantiation: strfuncs.c:array_count_i Unexecuted instantiation: unichar.c:array_count_i Unexecuted instantiation: env-util.c:array_count_i |
201 | | #define array_count(array) \ |
202 | 211k | array_count_i(&(array)->arr) |
203 | | /* No need for the real count if all we're doing is comparing against 0 */ |
204 | | #define array_is_empty(array) \ |
205 | 0 | ((!array_is_created(array)) || ((array)->arr.buffer->used == 0)) |
206 | | #define array_not_empty(array) \ |
207 | 0 | ((array_is_created(array)) && ((array)->arr.buffer->used > 0)) |
208 | | |
209 | | static inline void |
210 | | array_append_i(struct array *array, const void *data, unsigned int count) |
211 | 186k | { |
212 | 186k | buffer_append(array->buffer, data, count * array->element_size); |
213 | 186k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_append_i Unexecuted instantiation: smtp-server-reply.c:array_append_i smtp-server-command.c:array_append_i Line | Count | Source | 211 | 82.8k | { | 212 | 82.8k | buffer_append(array->buffer, data, count * array->element_size); | 213 | 82.8k | } |
smtp-server-transaction.c:array_append_i Line | Count | Source | 211 | 13.9k | { | 212 | 13.9k | buffer_append(array->buffer, data, count * array->element_size); | 213 | 13.9k | } |
Unexecuted instantiation: smtp-server-connection.c:array_append_i Unexecuted instantiation: smtp-server.c:array_append_i Unexecuted instantiation: smtp-syntax.c:array_append_i Unexecuted instantiation: smtp-params.c:array_append_i Unexecuted instantiation: smtp-reply.c:array_append_i Unexecuted instantiation: smtp-reply-parser.c:array_append_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_append_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_append_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_append_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_append_i Unexecuted instantiation: settings.c:array_append_i Unexecuted instantiation: settings-parser.c:array_append_i Unexecuted instantiation: expansion-program.c:array_append_i Unexecuted instantiation: var-expand.c:array_append_i Unexecuted instantiation: var-expand-parser.c:array_append_i Unexecuted instantiation: expansion-filter.c:array_append_i Unexecuted instantiation: array.c:array_append_i Unexecuted instantiation: event-filter.c:array_append_i Unexecuted instantiation: iostream.c:array_append_i Unexecuted instantiation: istream.c:array_append_i Line | Count | Source | 211 | 45.8k | { | 212 | 45.8k | buffer_append(array->buffer, data, count * array->element_size); | 213 | 45.8k | } |
Unexecuted instantiation: ioloop-epoll.c:array_append_i Unexecuted instantiation: lib.c:array_append_i lib-event.c:array_append_i Line | Count | Source | 211 | 6.37k | { | 212 | 6.37k | buffer_append(array->buffer, data, count * array->element_size); | 213 | 6.37k | } |
Unexecuted instantiation: lib-signals.c:array_append_i Unexecuted instantiation: mempool.c:array_append_i Unexecuted instantiation: module-dir.c:array_append_i priorityq.c:array_append_i Line | Count | Source | 211 | 37.5k | { | 212 | 37.5k | buffer_append(array->buffer, data, count * array->element_size); | 213 | 37.5k | } |
Unexecuted instantiation: punycode.c:array_append_i Unexecuted instantiation: strfuncs.c:array_append_i Unexecuted instantiation: unichar.c:array_append_i Unexecuted instantiation: env-util.c:array_append_i |
214 | | |
215 | | #define array_append(array, data, count) \ |
216 | 186k | TYPE_CHECKS(void, ARRAY_TYPE_CHECK(array, data), \ |
217 | 186k | array_append_i(&(array)->arr, data, count)) |
218 | | |
219 | | static inline void |
220 | | array_append_array_i(struct array *dest_array, const struct array *src_array) |
221 | 0 | { |
222 | 0 | i_assert(dest_array->element_size == src_array->element_size); |
223 | 0 | buffer_append_buf(dest_array->buffer, src_array->buffer, 0, SIZE_MAX); |
224 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_append_array_i Unexecuted instantiation: smtp-server-reply.c:array_append_array_i Unexecuted instantiation: smtp-server-command.c:array_append_array_i Unexecuted instantiation: smtp-server-transaction.c:array_append_array_i Unexecuted instantiation: smtp-server-connection.c:array_append_array_i Unexecuted instantiation: smtp-server.c:array_append_array_i Unexecuted instantiation: smtp-syntax.c:array_append_array_i Unexecuted instantiation: smtp-params.c:array_append_array_i Unexecuted instantiation: smtp-reply.c:array_append_array_i Unexecuted instantiation: smtp-reply-parser.c:array_append_array_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_append_array_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_append_array_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_append_array_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_append_array_i Unexecuted instantiation: settings.c:array_append_array_i Unexecuted instantiation: settings-parser.c:array_append_array_i Unexecuted instantiation: expansion-program.c:array_append_array_i Unexecuted instantiation: var-expand.c:array_append_array_i Unexecuted instantiation: var-expand-parser.c:array_append_array_i Unexecuted instantiation: expansion-filter.c:array_append_array_i Unexecuted instantiation: array.c:array_append_array_i Unexecuted instantiation: event-filter.c:array_append_array_i Unexecuted instantiation: iostream.c:array_append_array_i Unexecuted instantiation: istream.c:array_append_array_i Unexecuted instantiation: ioloop.c:array_append_array_i Unexecuted instantiation: ioloop-epoll.c:array_append_array_i Unexecuted instantiation: lib.c:array_append_array_i Unexecuted instantiation: lib-event.c:array_append_array_i Unexecuted instantiation: lib-signals.c:array_append_array_i Unexecuted instantiation: mempool.c:array_append_array_i Unexecuted instantiation: module-dir.c:array_append_array_i Unexecuted instantiation: priorityq.c:array_append_array_i Unexecuted instantiation: punycode.c:array_append_array_i Unexecuted instantiation: strfuncs.c:array_append_array_i Unexecuted instantiation: unichar.c:array_append_array_i Unexecuted instantiation: env-util.c:array_append_array_i |
225 | | #define array_append_array(dest_array, src_array) \ |
226 | | TYPE_CHECKS(void, ARRAY_TYPES_CHECK(dest_array, src_array), \ |
227 | | array_append_array_i(&(dest_array)->arr, &(src_array)->arr)) |
228 | | |
229 | | static inline void |
230 | | array_insert_i(struct array *array, unsigned int idx, |
231 | | const void *data, unsigned int count) |
232 | 0 | { |
233 | 0 | buffer_insert(array->buffer, idx * array->element_size, |
234 | 0 | data, count * array->element_size); |
235 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_insert_i Unexecuted instantiation: smtp-server-reply.c:array_insert_i Unexecuted instantiation: smtp-server-command.c:array_insert_i Unexecuted instantiation: smtp-server-transaction.c:array_insert_i Unexecuted instantiation: smtp-server-connection.c:array_insert_i Unexecuted instantiation: smtp-server.c:array_insert_i Unexecuted instantiation: smtp-syntax.c:array_insert_i Unexecuted instantiation: smtp-params.c:array_insert_i Unexecuted instantiation: smtp-reply.c:array_insert_i Unexecuted instantiation: smtp-reply-parser.c:array_insert_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_insert_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_insert_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_insert_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_insert_i Unexecuted instantiation: settings.c:array_insert_i Unexecuted instantiation: settings-parser.c:array_insert_i Unexecuted instantiation: expansion-program.c:array_insert_i Unexecuted instantiation: var-expand.c:array_insert_i Unexecuted instantiation: var-expand-parser.c:array_insert_i Unexecuted instantiation: expansion-filter.c:array_insert_i Unexecuted instantiation: array.c:array_insert_i Unexecuted instantiation: event-filter.c:array_insert_i Unexecuted instantiation: iostream.c:array_insert_i Unexecuted instantiation: istream.c:array_insert_i Unexecuted instantiation: ioloop.c:array_insert_i Unexecuted instantiation: ioloop-epoll.c:array_insert_i Unexecuted instantiation: lib.c:array_insert_i Unexecuted instantiation: lib-event.c:array_insert_i Unexecuted instantiation: lib-signals.c:array_insert_i Unexecuted instantiation: mempool.c:array_insert_i Unexecuted instantiation: module-dir.c:array_insert_i Unexecuted instantiation: priorityq.c:array_insert_i Unexecuted instantiation: punycode.c:array_insert_i Unexecuted instantiation: strfuncs.c:array_insert_i Unexecuted instantiation: unichar.c:array_insert_i Unexecuted instantiation: env-util.c:array_insert_i |
236 | | |
237 | | #define array_insert(array, idx, data, count) \ |
238 | 0 | TYPE_CHECKS(void, ARRAY_TYPE_CHECK(array, data), \ |
239 | 0 | array_insert_i(&(array)->arr, idx, data, count)) |
240 | | |
241 | | static inline void |
242 | | array_delete_i(struct array *array, unsigned int idx, unsigned int count) |
243 | 67.1k | { |
244 | 67.1k | buffer_delete(array->buffer, idx * array->element_size, |
245 | 67.1k | count * array->element_size); |
246 | 67.1k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_delete_i Unexecuted instantiation: smtp-server-reply.c:array_delete_i Unexecuted instantiation: smtp-server-command.c:array_delete_i Unexecuted instantiation: smtp-server-transaction.c:array_delete_i Unexecuted instantiation: smtp-server-connection.c:array_delete_i Unexecuted instantiation: smtp-server.c:array_delete_i Unexecuted instantiation: smtp-syntax.c:array_delete_i Unexecuted instantiation: smtp-params.c:array_delete_i Unexecuted instantiation: smtp-reply.c:array_delete_i Unexecuted instantiation: smtp-reply-parser.c:array_delete_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_delete_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_delete_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_delete_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_delete_i Unexecuted instantiation: settings.c:array_delete_i Unexecuted instantiation: settings-parser.c:array_delete_i Unexecuted instantiation: expansion-program.c:array_delete_i Unexecuted instantiation: var-expand.c:array_delete_i Unexecuted instantiation: var-expand-parser.c:array_delete_i Unexecuted instantiation: expansion-filter.c:array_delete_i Unexecuted instantiation: array.c:array_delete_i Unexecuted instantiation: event-filter.c:array_delete_i Unexecuted instantiation: iostream.c:array_delete_i Unexecuted instantiation: istream.c:array_delete_i Line | Count | Source | 243 | 29.6k | { | 244 | 29.6k | buffer_delete(array->buffer, idx * array->element_size, | 245 | 29.6k | count * array->element_size); | 246 | 29.6k | } |
Unexecuted instantiation: ioloop-epoll.c:array_delete_i Unexecuted instantiation: lib.c:array_delete_i Unexecuted instantiation: lib-event.c:array_delete_i Unexecuted instantiation: lib-signals.c:array_delete_i Unexecuted instantiation: mempool.c:array_delete_i Unexecuted instantiation: module-dir.c:array_delete_i priorityq.c:array_delete_i Line | Count | Source | 243 | 37.5k | { | 244 | 37.5k | buffer_delete(array->buffer, idx * array->element_size, | 245 | 37.5k | count * array->element_size); | 246 | 37.5k | } |
Unexecuted instantiation: punycode.c:array_delete_i Unexecuted instantiation: strfuncs.c:array_delete_i Unexecuted instantiation: unichar.c:array_delete_i Unexecuted instantiation: env-util.c:array_delete_i |
247 | | #define array_delete(array, idx, count) \ |
248 | 67.1k | array_delete_i(&(array)->arr, idx, count) |
249 | | |
250 | | static inline const void * |
251 | | array_get_i(const struct array *array, unsigned int *count_r) |
252 | 1.66k | { |
253 | 1.66k | *count_r = array_count_i(array); |
254 | 1.66k | return array->buffer->data; |
255 | 1.66k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_get_i Unexecuted instantiation: smtp-server-reply.c:array_get_i Unexecuted instantiation: smtp-server-command.c:array_get_i smtp-server-transaction.c:array_get_i Line | Count | Source | 252 | 1.66k | { | 253 | 1.66k | *count_r = array_count_i(array); | 254 | 1.66k | return array->buffer->data; | 255 | 1.66k | } |
Unexecuted instantiation: smtp-server-connection.c:array_get_i Unexecuted instantiation: smtp-server.c:array_get_i Unexecuted instantiation: smtp-syntax.c:array_get_i Unexecuted instantiation: smtp-params.c:array_get_i Unexecuted instantiation: smtp-reply.c:array_get_i Unexecuted instantiation: smtp-reply-parser.c:array_get_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_get_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_get_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_get_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_get_i Unexecuted instantiation: settings.c:array_get_i Unexecuted instantiation: settings-parser.c:array_get_i Unexecuted instantiation: expansion-program.c:array_get_i Unexecuted instantiation: var-expand.c:array_get_i Unexecuted instantiation: var-expand-parser.c:array_get_i Unexecuted instantiation: expansion-filter.c:array_get_i Unexecuted instantiation: array.c:array_get_i Unexecuted instantiation: event-filter.c:array_get_i Unexecuted instantiation: iostream.c:array_get_i Unexecuted instantiation: istream.c:array_get_i Unexecuted instantiation: ioloop.c:array_get_i Unexecuted instantiation: ioloop-epoll.c:array_get_i Line | Count | Source | 252 | 1 | { | 253 | 1 | *count_r = array_count_i(array); | 254 | 1 | return array->buffer->data; | 255 | 1 | } |
Unexecuted instantiation: lib-event.c:array_get_i Unexecuted instantiation: lib-signals.c:array_get_i Unexecuted instantiation: mempool.c:array_get_i Unexecuted instantiation: module-dir.c:array_get_i Unexecuted instantiation: priorityq.c:array_get_i Unexecuted instantiation: punycode.c:array_get_i Unexecuted instantiation: strfuncs.c:array_get_i Unexecuted instantiation: unichar.c:array_get_i Unexecuted instantiation: env-util.c:array_get_i |
256 | | #define array_get(array, count) \ |
257 | 1.66k | ARRAY_TYPE_CAST_CONST(array)array_get_i(&(array)->arr, count) |
258 | | |
259 | | static inline void * |
260 | | array_get_copy_i(const struct array *array, pool_t pool, unsigned int *count_r) |
261 | 0 | { |
262 | 0 | *count_r = array_count_i(array); |
263 | 0 | if (array->buffer->used == 0) |
264 | 0 | return NULL; |
265 | 0 | return p_memdup(pool, array->buffer->data, array->buffer->used); |
266 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_get_copy_i Unexecuted instantiation: smtp-server-reply.c:array_get_copy_i Unexecuted instantiation: smtp-server-command.c:array_get_copy_i Unexecuted instantiation: smtp-server-transaction.c:array_get_copy_i Unexecuted instantiation: smtp-server-connection.c:array_get_copy_i Unexecuted instantiation: smtp-server.c:array_get_copy_i Unexecuted instantiation: smtp-syntax.c:array_get_copy_i Unexecuted instantiation: smtp-params.c:array_get_copy_i Unexecuted instantiation: smtp-reply.c:array_get_copy_i Unexecuted instantiation: smtp-reply-parser.c:array_get_copy_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_get_copy_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_get_copy_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_get_copy_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_get_copy_i Unexecuted instantiation: settings.c:array_get_copy_i Unexecuted instantiation: settings-parser.c:array_get_copy_i Unexecuted instantiation: expansion-program.c:array_get_copy_i Unexecuted instantiation: var-expand.c:array_get_copy_i Unexecuted instantiation: var-expand-parser.c:array_get_copy_i Unexecuted instantiation: expansion-filter.c:array_get_copy_i Unexecuted instantiation: array.c:array_get_copy_i Unexecuted instantiation: event-filter.c:array_get_copy_i Unexecuted instantiation: iostream.c:array_get_copy_i Unexecuted instantiation: istream.c:array_get_copy_i Unexecuted instantiation: ioloop.c:array_get_copy_i Unexecuted instantiation: ioloop-epoll.c:array_get_copy_i Unexecuted instantiation: lib.c:array_get_copy_i Unexecuted instantiation: lib-event.c:array_get_copy_i Unexecuted instantiation: lib-signals.c:array_get_copy_i Unexecuted instantiation: mempool.c:array_get_copy_i Unexecuted instantiation: module-dir.c:array_get_copy_i Unexecuted instantiation: priorityq.c:array_get_copy_i Unexecuted instantiation: punycode.c:array_get_copy_i Unexecuted instantiation: strfuncs.c:array_get_copy_i Unexecuted instantiation: unichar.c:array_get_copy_i Unexecuted instantiation: env-util.c:array_get_copy_i |
267 | | #define array_get_copy(array, pool, count) \ |
268 | | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
269 | | array_get_copy_i(&(array)->arr, pool, count) |
270 | | |
271 | | /* Re: i_assert() vs. pure: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51971#c1 */ |
272 | | static inline const void * ATTR_PURE |
273 | | array_idx_i(const struct array *array, unsigned int idx) |
274 | 417k | { |
275 | 417k | i_assert(idx < array->buffer->used / array->element_size); |
276 | 417k | return CONST_PTR_OFFSET(array->buffer->data, idx * array->element_size); |
277 | 417k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_idx_i Unexecuted instantiation: smtp-server-reply.c:array_idx_i smtp-server-command.c:array_idx_i Line | Count | Source | 274 | 298k | { | 275 | 298k | i_assert(idx < array->buffer->used / array->element_size); | 276 | 298k | return CONST_PTR_OFFSET(array->buffer->data, idx * array->element_size); | 277 | 298k | } |
Unexecuted instantiation: smtp-server-transaction.c:array_idx_i Unexecuted instantiation: smtp-server-connection.c:array_idx_i Unexecuted instantiation: smtp-server.c:array_idx_i Unexecuted instantiation: smtp-syntax.c:array_idx_i Unexecuted instantiation: smtp-params.c:array_idx_i Unexecuted instantiation: smtp-reply.c:array_idx_i Unexecuted instantiation: smtp-reply-parser.c:array_idx_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_idx_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_idx_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_idx_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_idx_i Unexecuted instantiation: settings.c:array_idx_i Unexecuted instantiation: settings-parser.c:array_idx_i Unexecuted instantiation: expansion-program.c:array_idx_i Unexecuted instantiation: var-expand.c:array_idx_i Unexecuted instantiation: var-expand-parser.c:array_idx_i Unexecuted instantiation: expansion-filter.c:array_idx_i Unexecuted instantiation: array.c:array_idx_i Unexecuted instantiation: event-filter.c:array_idx_i Unexecuted instantiation: iostream.c:array_idx_i Unexecuted instantiation: istream.c:array_idx_i Unexecuted instantiation: ioloop.c:array_idx_i ioloop-epoll.c:array_idx_i Line | Count | Source | 274 | 36.0k | { | 275 | 36.0k | i_assert(idx < array->buffer->used / array->element_size); | 276 | 36.0k | return CONST_PTR_OFFSET(array->buffer->data, idx * array->element_size); | 277 | 36.0k | } |
Unexecuted instantiation: lib.c:array_idx_i Unexecuted instantiation: lib-event.c:array_idx_i Unexecuted instantiation: lib-signals.c:array_idx_i Unexecuted instantiation: mempool.c:array_idx_i Unexecuted instantiation: module-dir.c:array_idx_i Line | Count | Source | 274 | 83.2k | { | 275 | 83.2k | i_assert(idx < array->buffer->used / array->element_size); | 276 | 83.2k | return CONST_PTR_OFFSET(array->buffer->data, idx * array->element_size); | 277 | 83.2k | } |
Unexecuted instantiation: punycode.c:array_idx_i Unexecuted instantiation: strfuncs.c:array_idx_i Unexecuted instantiation: unichar.c:array_idx_i Unexecuted instantiation: env-util.c:array_idx_i |
278 | | |
279 | 83.2k | #define array_front(array) array_idx(array, 0) |
280 | 122k | #define array_front_modifiable(array) array_idx_modifiable(array, 0) |
281 | | #define array_back(array) array_idx(array, array_count(array)-1) |
282 | | #define array_back_modifiable(array) array_idx_modifiable(array, array_count(array)-1) |
283 | 0 | #define array_pop_back(array) array_delete(array, array_count(array)-1, 1); |
284 | 186k | #define array_push_back(array, item) array_append(array, (item), 1) |
285 | | #define array_pop_front(array) array_delete(array, 0, 1) |
286 | | #define array_push_front(array, item) array_insert(array, 0, (item), 1) |
287 | | |
288 | | #define array_idx(array, idx) \ |
289 | 417k | ARRAY_TYPE_CAST_CONST(array)array_idx_i(&(array)->arr, idx) |
290 | | /* Using *array_idx() will fail if the compiler doesn't support typeof(). |
291 | | The same can be done with array_idx_elem() for arrays that have pointers. */ |
292 | | #ifdef HAVE_TYPEOF |
293 | | # define array_idx_elem(array, idx) \ |
294 | 0 | (TRUE ? *array_idx(array, idx) : \ |
295 | 0 | COMPILE_ERROR_IF_TRUE(sizeof(**(array)->v) != sizeof(void *))) |
296 | | #else |
297 | | # define array_idx_elem(array, idx) \ |
298 | | (*(void **)array_idx_i(&(array)->arr, idx)) |
299 | | #endif |
300 | | |
301 | | static inline void * |
302 | | array_get_modifiable_i(struct array *array, unsigned int *count_r) |
303 | 127k | { |
304 | 127k | *count_r = array_count_i(array); |
305 | 127k | return buffer_get_modifiable_data(array->buffer, NULL); |
306 | 127k | } Unexecuted instantiation: smtp-server-cmd-data.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-reply.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-command.c:array_get_modifiable_i smtp-server-transaction.c:array_get_modifiable_i Line | Count | Source | 303 | 2.93k | { | 304 | 2.93k | *count_r = array_count_i(array); | 305 | 2.93k | return buffer_get_modifiable_data(array->buffer, NULL); | 306 | 2.93k | } |
Unexecuted instantiation: smtp-server-connection.c:array_get_modifiable_i Unexecuted instantiation: smtp-server.c:array_get_modifiable_i Unexecuted instantiation: smtp-syntax.c:array_get_modifiable_i Unexecuted instantiation: smtp-params.c:array_get_modifiable_i Unexecuted instantiation: smtp-reply.c:array_get_modifiable_i Unexecuted instantiation: smtp-reply-parser.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_get_modifiable_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_get_modifiable_i Unexecuted instantiation: settings.c:array_get_modifiable_i Unexecuted instantiation: settings-parser.c:array_get_modifiable_i Unexecuted instantiation: expansion-program.c:array_get_modifiable_i Unexecuted instantiation: var-expand.c:array_get_modifiable_i Unexecuted instantiation: var-expand-parser.c:array_get_modifiable_i Unexecuted instantiation: expansion-filter.c:array_get_modifiable_i Unexecuted instantiation: array.c:array_get_modifiable_i Unexecuted instantiation: event-filter.c:array_get_modifiable_i Unexecuted instantiation: iostream.c:array_get_modifiable_i Unexecuted instantiation: istream.c:array_get_modifiable_i Unexecuted instantiation: ioloop.c:array_get_modifiable_i ioloop-epoll.c:array_get_modifiable_i Line | Count | Source | 303 | 46.0k | { | 304 | 46.0k | *count_r = array_count_i(array); | 305 | 46.0k | return buffer_get_modifiable_data(array->buffer, NULL); | 306 | 46.0k | } |
Unexecuted instantiation: lib.c:array_get_modifiable_i Unexecuted instantiation: lib-event.c:array_get_modifiable_i Unexecuted instantiation: lib-signals.c:array_get_modifiable_i Unexecuted instantiation: mempool.c:array_get_modifiable_i Unexecuted instantiation: module-dir.c:array_get_modifiable_i priorityq.c:array_get_modifiable_i Line | Count | Source | 303 | 78.6k | { | 304 | 78.6k | *count_r = array_count_i(array); | 305 | 78.6k | return buffer_get_modifiable_data(array->buffer, NULL); | 306 | 78.6k | } |
Unexecuted instantiation: punycode.c:array_get_modifiable_i Unexecuted instantiation: strfuncs.c:array_get_modifiable_i Unexecuted instantiation: unichar.c:array_get_modifiable_i Unexecuted instantiation: env-util.c:array_get_modifiable_i |
307 | | #define array_get_modifiable(array, count) \ |
308 | 127k | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
309 | 127k | array_get_modifiable_i(&(array)->arr, count) |
310 | | |
311 | | void * |
312 | | array_idx_modifiable_i(const struct array *array, unsigned int idx) ATTR_PURE; |
313 | | #define array_idx_modifiable(array, idx) \ |
314 | 596k | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
315 | 596k | array_idx_modifiable_i(&(array)->arr, idx) |
316 | | |
317 | | void *array_idx_get_space_i(struct array *array, unsigned int idx); |
318 | | #define array_idx_get_space(array, idx) \ |
319 | 105k | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
320 | 105k | array_idx_get_space_i(&(array)->arr, idx) |
321 | | |
322 | | void array_idx_set_i(struct array *array, unsigned int idx, const void *data); |
323 | | #define array_idx_set(array, idx, data) \ |
324 | 0 | TYPE_CHECKS(void, ARRAY_TYPE_CHECK(array, data), \ |
325 | 0 | array_idx_set_i(&(array)->arr, idx, data)) |
326 | | |
327 | | void array_idx_clear_i(struct array *array, unsigned int idx); |
328 | | #define array_idx_clear(array, idx) \ |
329 | 125k | array_idx_clear_i(&(array)->arr, idx) |
330 | | |
331 | | static inline void * |
332 | | array_append_space_i(struct array *array) |
333 | 1.20M | { |
334 | 1.20M | void *data; |
335 | | |
336 | 1.20M | data = buffer_append_space_unsafe(array->buffer, array->element_size); |
337 | 1.20M | memset(data, 0, array->element_size); |
338 | 1.20M | return data; |
339 | 1.20M | } Unexecuted instantiation: smtp-server-cmd-data.c:array_append_space_i Unexecuted instantiation: smtp-server-reply.c:array_append_space_i Unexecuted instantiation: smtp-server-command.c:array_append_space_i Unexecuted instantiation: smtp-server-transaction.c:array_append_space_i Unexecuted instantiation: smtp-server-connection.c:array_append_space_i Unexecuted instantiation: smtp-server.c:array_append_space_i Unexecuted instantiation: smtp-syntax.c:array_append_space_i Unexecuted instantiation: smtp-params.c:array_append_space_i Unexecuted instantiation: smtp-reply.c:array_append_space_i Unexecuted instantiation: smtp-reply-parser.c:array_append_space_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_append_space_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_append_space_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_append_space_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_append_space_i Unexecuted instantiation: settings.c:array_append_space_i Unexecuted instantiation: settings-parser.c:array_append_space_i Unexecuted instantiation: expansion-program.c:array_append_space_i Unexecuted instantiation: var-expand.c:array_append_space_i Unexecuted instantiation: var-expand-parser.c:array_append_space_i Unexecuted instantiation: expansion-filter.c:array_append_space_i Unexecuted instantiation: array.c:array_append_space_i Unexecuted instantiation: event-filter.c:array_append_space_i Unexecuted instantiation: iostream.c:array_append_space_i Unexecuted instantiation: istream.c:array_append_space_i Unexecuted instantiation: ioloop.c:array_append_space_i ioloop-epoll.c:array_append_space_i Line | Count | Source | 333 | 12.7k | { | 334 | 12.7k | void *data; | 335 | | | 336 | 12.7k | data = buffer_append_space_unsafe(array->buffer, array->element_size); | 337 | 12.7k | memset(data, 0, array->element_size); | 338 | 12.7k | return data; | 339 | 12.7k | } |
lib.c:array_append_space_i Line | Count | Source | 333 | 2 | { | 334 | 2 | void *data; | 335 | | | 336 | 2 | data = buffer_append_space_unsafe(array->buffer, array->element_size); | 337 | 2 | memset(data, 0, array->element_size); | 338 | 2 | return data; | 339 | 2 | } |
lib-event.c:array_append_space_i Line | Count | Source | 333 | 1.19M | { | 334 | 1.19M | void *data; | 335 | | | 336 | 1.19M | data = buffer_append_space_unsafe(array->buffer, array->element_size); | 337 | 1.19M | memset(data, 0, array->element_size); | 338 | 1.19M | return data; | 339 | 1.19M | } |
Unexecuted instantiation: lib-signals.c:array_append_space_i Unexecuted instantiation: mempool.c:array_append_space_i Unexecuted instantiation: module-dir.c:array_append_space_i Unexecuted instantiation: priorityq.c:array_append_space_i Unexecuted instantiation: punycode.c:array_append_space_i Unexecuted instantiation: strfuncs.c:array_append_space_i Unexecuted instantiation: unichar.c:array_append_space_i Unexecuted instantiation: env-util.c:array_append_space_i |
340 | | #define array_append_space(array) \ |
341 | 1.19M | ARRAY_TYPE_CAST_MODIFIABLE(array)array_append_space_i(&(array)->arr) |
342 | | #define array_append_zero(array) \ |
343 | 12.7k | (void)array_append_space_i(&(array)->arr) |
344 | | |
345 | | void *array_insert_space_i(struct array *array, unsigned int idx); |
346 | | #define array_insert_space(array, idx) \ |
347 | | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
348 | | array_insert_space_i(&(array)->arr, idx) |
349 | | |
350 | | static inline void |
351 | | array_copy(struct array *dest, unsigned int dest_idx, |
352 | | const struct array *src, unsigned int src_idx, unsigned int count) |
353 | 0 | { |
354 | 0 | i_assert(dest->element_size == src->element_size); |
355 | 0 |
|
356 | 0 | buffer_copy(dest->buffer, dest_idx * dest->element_size, |
357 | 0 | src->buffer, src_idx * src->element_size, |
358 | 0 | count * dest->element_size); |
359 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_copy Unexecuted instantiation: smtp-server-reply.c:array_copy Unexecuted instantiation: smtp-server-command.c:array_copy Unexecuted instantiation: smtp-server-transaction.c:array_copy Unexecuted instantiation: smtp-server-connection.c:array_copy Unexecuted instantiation: smtp-server.c:array_copy Unexecuted instantiation: smtp-syntax.c:array_copy Unexecuted instantiation: smtp-params.c:array_copy Unexecuted instantiation: smtp-reply.c:array_copy Unexecuted instantiation: smtp-reply-parser.c:array_copy Unexecuted instantiation: smtp-server-cmd-helo.c:array_copy Unexecuted instantiation: smtp-server-cmd-mail.c:array_copy Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_copy Unexecuted instantiation: smtp-server-cmd-xclient.c:array_copy Unexecuted instantiation: settings.c:array_copy Unexecuted instantiation: settings-parser.c:array_copy Unexecuted instantiation: expansion-program.c:array_copy Unexecuted instantiation: var-expand.c:array_copy Unexecuted instantiation: var-expand-parser.c:array_copy Unexecuted instantiation: expansion-filter.c:array_copy Unexecuted instantiation: array.c:array_copy Unexecuted instantiation: event-filter.c:array_copy Unexecuted instantiation: iostream.c:array_copy Unexecuted instantiation: istream.c:array_copy Unexecuted instantiation: ioloop.c:array_copy Unexecuted instantiation: ioloop-epoll.c:array_copy Unexecuted instantiation: lib.c:array_copy Unexecuted instantiation: lib-event.c:array_copy Unexecuted instantiation: lib-signals.c:array_copy Unexecuted instantiation: mempool.c:array_copy Unexecuted instantiation: module-dir.c:array_copy Unexecuted instantiation: priorityq.c:array_copy Unexecuted instantiation: punycode.c:array_copy Unexecuted instantiation: strfuncs.c:array_copy Unexecuted instantiation: unichar.c:array_copy Unexecuted instantiation: env-util.c:array_copy |
360 | | |
361 | | bool array_cmp_i(const struct array *array1, |
362 | | const struct array *array2) ATTR_PURE; |
363 | | #define array_cmp(array1, array2) \ |
364 | | array_cmp_i(&(array1)->arr, &(array2)->arr) |
365 | | |
366 | | /* Test equality via a comparator */ |
367 | | bool array_equal_fn_i(const struct array *array1, |
368 | | const struct array *array2, |
369 | | int (*cmp)(const void*, const void *)) ATTR_PURE; |
370 | | #define array_equal_fn(array1, array2, cmp) \ |
371 | | TYPE_CHECKS(bool, \ |
372 | | ARRAY_TYPES_CHECK(array1, array2) || \ |
373 | | CALLBACK_TYPECHECK(cmp, int (*)(typeof(*(array1)->v), \ |
374 | | typeof(*(array2)->v))), \ |
375 | | array_equal_fn_i(&(array1)->arr, &(array2)->arr, \ |
376 | | (int (*)(const void *, const void *))cmp)) |
377 | | bool array_equal_fn_ctx_i(const struct array *array1, |
378 | | const struct array *array2, |
379 | | int (*cmp)(const void*, const void *, const void *), |
380 | | const void *context) ATTR_PURE; |
381 | | /* Same, but with a context pointer. |
382 | | context can't be void* as ``const typeof(context)'' won't compile, |
383 | | so ``const typeof(*context)*'' is required instead, and that requires a |
384 | | complete type. */ |
385 | | #define array_equal_fn_ctx(array1, array2, cmp, ctx) \ |
386 | | TYPE_CHECKS(bool, \ |
387 | | ARRAY_TYPES_CHECK(array1, array2) || \ |
388 | | CALLBACK_TYPECHECK(cmp, int (*)(typeof(*(array1)->v), \ |
389 | | typeof(*(array2)->v), \ |
390 | | const typeof(*ctx)*)), \ |
391 | | array_equal_fn_ctx_i(&(array1)->arr, &(array2)->arr, \ |
392 | | (int (*)(const void *, const void *, const void *))cmp, ctx)) |
393 | | |
394 | | void array_reverse_i(struct array *array); |
395 | | #define array_reverse(array) \ |
396 | | array_reverse_i(&(array)->arr) |
397 | | |
398 | | void array_sort_i(struct array *array, int (*cmp)(const void *, const void *)); |
399 | | #define array_sort(array, cmp) \ |
400 | 5.97k | TYPE_CHECKS(void, \ |
401 | 5.97k | CALLBACK_TYPECHECK(cmp, int (*)(typeof(*(array)->v), \ |
402 | 5.97k | typeof(*(array)->v))), \ |
403 | 5.97k | array_sort_i(&(array)->arr, (int (*)(const void *, const void *))cmp)) |
404 | | |
405 | | #define ARRAY_SEARCH_CALL(func, array, key, cmp) \ |
406 | 108k | TYPE_CHECKS(void *, \ |
407 | 108k | CALLBACK_TYPECHECK(cmp, int (*)(typeof(const typeof(*key) *), \ |
408 | 108k | typeof(*(array)->v))), \ |
409 | 108k | array_##func##_i( \ |
410 | 108k | &(array)->arr, (const void *)key, \ |
411 | 108k | (int (*)(const void *, const void *))cmp)) |
412 | | |
413 | | const void *array_bsearch_i(const struct array *array, const void *key, |
414 | | int (*cmp)(const void *, const void *)); |
415 | | static inline void *array_bsearch_modifiable_i(struct array *array, const void *key, |
416 | | int (*cmp)(const void *, const void *)) |
417 | 0 | { |
418 | 0 | return (void *)array_bsearch_i(array, key, cmp); |
419 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-reply.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-command.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-transaction.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-connection.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-syntax.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-params.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-reply.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-reply-parser.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_bsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_bsearch_modifiable_i Unexecuted instantiation: settings.c:array_bsearch_modifiable_i Unexecuted instantiation: settings-parser.c:array_bsearch_modifiable_i Unexecuted instantiation: expansion-program.c:array_bsearch_modifiable_i Unexecuted instantiation: var-expand.c:array_bsearch_modifiable_i Unexecuted instantiation: var-expand-parser.c:array_bsearch_modifiable_i Unexecuted instantiation: expansion-filter.c:array_bsearch_modifiable_i Unexecuted instantiation: array.c:array_bsearch_modifiable_i Unexecuted instantiation: event-filter.c:array_bsearch_modifiable_i Unexecuted instantiation: iostream.c:array_bsearch_modifiable_i Unexecuted instantiation: istream.c:array_bsearch_modifiable_i Unexecuted instantiation: ioloop.c:array_bsearch_modifiable_i Unexecuted instantiation: ioloop-epoll.c:array_bsearch_modifiable_i Unexecuted instantiation: lib.c:array_bsearch_modifiable_i Unexecuted instantiation: lib-event.c:array_bsearch_modifiable_i Unexecuted instantiation: lib-signals.c:array_bsearch_modifiable_i Unexecuted instantiation: mempool.c:array_bsearch_modifiable_i Unexecuted instantiation: module-dir.c:array_bsearch_modifiable_i Unexecuted instantiation: priorityq.c:array_bsearch_modifiable_i Unexecuted instantiation: punycode.c:array_bsearch_modifiable_i Unexecuted instantiation: strfuncs.c:array_bsearch_modifiable_i Unexecuted instantiation: unichar.c:array_bsearch_modifiable_i Unexecuted instantiation: env-util.c:array_bsearch_modifiable_i |
420 | | |
421 | | #define array_bsearch(array, key, cmp) \ |
422 | 108k | ARRAY_TYPE_CAST_CONST(array) \ |
423 | 108k | ARRAY_SEARCH_CALL(bsearch, array, key, cmp) |
424 | | #define array_bsearch_modifiable(array, key, cmp) \ |
425 | | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
426 | | ARRAY_SEARCH_CALL(bsearch_modifiable, array, key, cmp) |
427 | | |
428 | | /* Returns pointer to first element for which cmp(key,elem)==0, or NULL */ |
429 | | const void *array_lsearch_i(const struct array *array, const void *key, |
430 | | int (*cmp)(const void *, const void *)); |
431 | | static inline void *array_lsearch_modifiable_i(struct array *array, const void *key, |
432 | | int (*cmp)(const void *, const void *)) |
433 | 0 | { |
434 | 0 | return (void *)array_lsearch_i(array, key, cmp); |
435 | 0 | } Unexecuted instantiation: smtp-server-cmd-data.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-reply.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-command.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-transaction.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-connection.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-syntax.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-params.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-reply.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-reply-parser.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-helo.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-mail.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-rcpt.c:array_lsearch_modifiable_i Unexecuted instantiation: smtp-server-cmd-xclient.c:array_lsearch_modifiable_i Unexecuted instantiation: settings.c:array_lsearch_modifiable_i Unexecuted instantiation: settings-parser.c:array_lsearch_modifiable_i Unexecuted instantiation: expansion-program.c:array_lsearch_modifiable_i Unexecuted instantiation: var-expand.c:array_lsearch_modifiable_i Unexecuted instantiation: var-expand-parser.c:array_lsearch_modifiable_i Unexecuted instantiation: expansion-filter.c:array_lsearch_modifiable_i Unexecuted instantiation: array.c:array_lsearch_modifiable_i Unexecuted instantiation: event-filter.c:array_lsearch_modifiable_i Unexecuted instantiation: iostream.c:array_lsearch_modifiable_i Unexecuted instantiation: istream.c:array_lsearch_modifiable_i Unexecuted instantiation: ioloop.c:array_lsearch_modifiable_i Unexecuted instantiation: ioloop-epoll.c:array_lsearch_modifiable_i Unexecuted instantiation: lib.c:array_lsearch_modifiable_i Unexecuted instantiation: lib-event.c:array_lsearch_modifiable_i Unexecuted instantiation: lib-signals.c:array_lsearch_modifiable_i Unexecuted instantiation: mempool.c:array_lsearch_modifiable_i Unexecuted instantiation: module-dir.c:array_lsearch_modifiable_i Unexecuted instantiation: priorityq.c:array_lsearch_modifiable_i Unexecuted instantiation: punycode.c:array_lsearch_modifiable_i Unexecuted instantiation: strfuncs.c:array_lsearch_modifiable_i Unexecuted instantiation: unichar.c:array_lsearch_modifiable_i Unexecuted instantiation: env-util.c:array_lsearch_modifiable_i |
436 | | |
437 | | #define array_lsearch(array, key, cmp) \ |
438 | 0 | ARRAY_TYPE_CAST_CONST(array) \ |
439 | 0 | ARRAY_SEARCH_CALL(lsearch, array, key, cmp) |
440 | | #define array_lsearch_modifiable(array, key, cmp) \ |
441 | 0 | ARRAY_TYPE_CAST_MODIFIABLE(array) \ |
442 | 0 | ARRAY_SEARCH_CALL(lsearch_modifiable, array, key, cmp) |
443 | | |
444 | | /* Search a pointer from an array */ |
445 | | const void *array_lsearch_ptr_i(const struct array *array, const void *key); |
446 | | #define array_lsearch_ptr(array, key) \ |
447 | 6.37k | TYPE_CHECKS(const void *, \ |
448 | 6.37k | COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE(***(array)->v, *(key)), \ |
449 | 6.37k | array_lsearch_ptr_i(&(array)->arr, key)) |
450 | | #define array_lsearch_ptr_modifiable(array, key) \ |
451 | | (void *)array_lsearch_ptr(array, key) |
452 | | |
453 | | bool array_lsearch_ptr_idx_i(const struct array *array, const void *key, |
454 | | unsigned int *idx_r); |
455 | | #define array_lsearch_ptr_idx(array, key, idx_r) \ |
456 | 29.6k | TYPE_CHECKS(bool, \ |
457 | | COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE(***(array)->v, *(key)), \ |
458 | | array_lsearch_ptr_idx_i(&(array)->arr, key, idx_r)) |
459 | | |
460 | | #endif |