Coverage Report

Created: 2025-07-23 06:46

/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
ioloop.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
}
lib.c:array_create_i
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
ioloop.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
priorityq.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
lib.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
ioloop.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
array.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
ioloop.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
}
lib.c:array_count_i
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
ioloop.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
ioloop.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
lib.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
priorityq.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