Coverage Report

Created: 2026-06-28 06:23

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/boringssl/include/openssl/stack.h
Line
Count
Source
1
// Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef OPENSSL_HEADER_STACK_H
16
#define OPENSSL_HEADER_STACK_H
17
18
#include <openssl/base.h>   // IWYU pragma: export
19
20
#if defined(__cplusplus)
21
extern "C" {
22
#endif
23
24
25
// A stack, in OpenSSL, is an array of pointers. They are the most commonly
26
// used collection object.
27
//
28
// This file defines macros for type-safe use of the stack functions. A stack
29
// type is named like `STACK_OF(FOO)` and is accessed with functions named
30
// like `sk_FOO_*`. Note the stack will typically contain /pointers/ to `FOO`.
31
//
32
// The `DECLARE_STACK_OF` macro makes `STACK_OF(FOO)` available, and
33
// `DEFINE_STACK_OF` makes the corresponding functions available.
34
35
36
// Defining stacks.
37
38
// STACK_OF expands to the stack type for `type`.
39
267k
#define STACK_OF(type) struct stack_st_##type
40
41
// DECLARE_STACK_OF declares the `STACK_OF(type)` type. It does not make the
42
// corresponding `sk_type_*` functions available. This macro should be used in
43
// files which only need the type.
44
#define DECLARE_STACK_OF(type) STACK_OF(type);
45
46
// DEFINE_NAMED_STACK_OF defines `STACK_OF(name)` to be a stack whose elements
47
// are `type` *. This macro makes the `sk_name_*` functions available.
48
//
49
// It is not necessary to use `DECLARE_STACK_OF` in files which use this macro.
50
//
51
// Must be used from the global namespace.
52
#define DEFINE_NAMED_STACK_OF(name, type)                    \
53
  BORINGSSL_DEFINE_STACK_OF_IMPL(name, type *, const type *) \
54
  BORINGSSL_DEFINE_STACK_TRAITS(name, type, false)
55
56
// DEFINE_STACK_OF defines `STACK_OF(type)` to be a stack whose elements are
57
// `type` *. This macro makes the `sk_type_*` functions available.
58
//
59
// It is not necessary to use `DECLARE_STACK_OF` in files which use this macro.
60
//
61
// Must be used from the global namespace.
62
#define DEFINE_STACK_OF(type) DEFINE_NAMED_STACK_OF(type, type)
63
64
// DEFINE_CONST_STACK_OF defines `STACK_OF(type)` to be a stack whose elements
65
// are const `type` *. This macro makes the `sk_type_*` functions available.
66
//
67
// It is not necessary to use `DECLARE_STACK_OF` in files which use this macro.
68
//
69
// Must be used from the global namespace.
70
#define DEFINE_CONST_STACK_OF(type)                                \
71
  BORINGSSL_DEFINE_STACK_OF_IMPL(type, const type *, const type *) \
72
  BORINGSSL_DEFINE_STACK_TRAITS(type, const type, true)
73
74
// DEFINE_NAMESPACED_STACK_OF is same as `DEFINE_STACK_OF` but to be used for
75
// internal stacks from within the bssl namespace.
76
//
77
// Such stacks then can only be accessed using `STACK_OF` if in the `bssl`
78
// namespace or if the `bssl` namespace has been imported with a
79
// using-directive.
80
#define DEFINE_NAMESPACED_STACK_OF(type)                     \
81
  BORINGSSL_DEFINE_STACK_OF_IMPL(type, type *, const type *) \
82
  BSSL_NAMESPACE_END                                         \
83
  BORINGSSL_DEFINE_STACK_TRAITS(type, type, false)           \
84
  BSSL_NAMESPACE_BEGIN
85
86
87
// Using stacks.
88
//
89
// After the `DEFINE_STACK_OF` macro is used, the following functions are
90
// available.
91
92
#if 0  // Sample
93
94
// sk_SAMPLE_free_func is a callback to free an element in a stack.
95
typedef void (*sk_SAMPLE_free_func)(SAMPLE *);
96
97
// sk_SAMPLE_copy_func is a callback to copy an element in a stack. It should
98
// return the copy or NULL on error.
99
typedef SAMPLE *(*sk_SAMPLE_copy_func)(const SAMPLE *);
100
101
// sk_SAMPLE_cmp_func is a callback to compare `*a` to `*b`. It should return a
102
// value < 0, 0, or > 0 if `*a` is less than, equal to, or greater than `*b`,
103
// respectively.  Note the extra indirection - the function is given a pointer
104
// to a pointer to the element. This is the `qsort`/`bsearch` comparison
105
// function applied to an array of `SAMPLE*`.
106
typedef int (*sk_SAMPLE_cmp_func)(const SAMPLE *const *a,
107
                                  const SAMPLE *const *b);
108
109
// sk_SAMPLE_new creates a new, empty stack with the given comparison function,
110
// which may be NULL. It returns the new stack or NULL on allocation failure.
111
STACK_OF(SAMPLE) *sk_SAMPLE_new(sk_SAMPLE_cmp_func comp);
112
113
// sk_SAMPLE_new_null creates a new, empty stack. It returns the new stack or
114
// NULL on allocation failure.
115
STACK_OF(SAMPLE) *sk_SAMPLE_new_null(void);
116
117
// sk_SAMPLE_num returns the number of elements in `sk`. It is safe to cast this
118
// value to `int`. `sk` is guaranteed to have at most `INT_MAX` elements. If
119
// `sk` is NULL, it is treated as the empty list and this function returns zero.
120
size_t sk_SAMPLE_num(const STACK_OF(SAMPLE) *sk);
121
122
// sk_SAMPLE_zero resets `sk` to the empty state but does nothing to free the
123
// individual elements themselves.
124
void sk_SAMPLE_zero(STACK_OF(SAMPLE) *sk);
125
126
// sk_SAMPLE_value returns the `i`th pointer in `sk`, or NULL if `i` is out of
127
// range. If `sk` is NULL, it is treated as an empty list and the function
128
// returns NULL.
129
SAMPLE *sk_SAMPLE_value(const STACK_OF(SAMPLE) *sk, size_t i);
130
131
// sk_SAMPLE_set sets the `i`th pointer in `sk` to `p` and returns `p`. If `i`
132
// is out of range, it returns NULL.
133
SAMPLE *sk_SAMPLE_set(STACK_OF(SAMPLE) *sk, size_t i, SAMPLE *p);
134
135
// sk_SAMPLE_free frees `sk`, but does nothing to free the individual elements.
136
// Use `sk_SAMPLE_pop_free` to also free the elements.
137
void sk_SAMPLE_free(STACK_OF(SAMPLE) *sk);
138
139
// sk_SAMPLE_pop_free calls `free_func` on each element in `sk` and then
140
// frees the stack itself.
141
void sk_SAMPLE_pop_free(STACK_OF(SAMPLE) *sk, sk_SAMPLE_free_func free_func);
142
143
// sk_SAMPLE_insert inserts `p` into the stack at index `where`, moving existing
144
// elements if needed. It returns the length of the new stack, or zero on
145
// error.
146
size_t sk_SAMPLE_insert(STACK_OF(SAMPLE) *sk, SAMPLE *p, size_t where);
147
148
// sk_SAMPLE_delete removes the pointer at index `where`, moving other elements
149
// down if needed. It returns the removed pointer, or NULL if `where` is out of
150
// range.
151
SAMPLE *sk_SAMPLE_delete(STACK_OF(SAMPLE) *sk, size_t where);
152
153
// sk_SAMPLE_delete_ptr removes, at most, one instance of `p` from `sk` based on
154
// pointer equality. If an instance of `p` is found then `p` is returned,
155
// otherwise it returns NULL.
156
SAMPLE *sk_SAMPLE_delete_ptr(STACK_OF(SAMPLE) *sk, const SAMPLE *p);
157
158
// sk_SAMPLE_delete_if_func is the callback function for `sk_SAMPLE_delete_if`.
159
// It should return one to remove `p` and zero to keep it.
160
typedef int (*sk_SAMPLE_delete_if_func)(SAMPLE *p, void *data);
161
162
// sk_SAMPLE_delete_if calls `func` with each element of `sk` and removes the
163
// entries where `func` returned one. This function does not free or return
164
// removed pointers so, if `sk` owns its contents, `func` should release the
165
// pointers prior to returning one.
166
void sk_SAMPLE_delete_if(STACK_OF(SAMPLE) *sk, sk_SAMPLE_delete_if_func func,
167
                         void *data);
168
169
// sk_SAMPLE_find find the first value in `sk` equal to `p`. `sk`'s comparison
170
// function determines equality, or pointer equality if `sk` has no comparison
171
// function.
172
//
173
// If the stack is sorted (see `sk_SAMPLE_sort`), this function uses a binary
174
// search. Otherwise it performs a linear search. If it finds a matching
175
// element, it writes the index to `*out_index` (if `out_index` is not NULL) and
176
// returns one. Otherwise, it returns zero. If `sk` is NULL, it is treated as
177
// the empty list and the function returns zero.
178
//
179
// Note this differs from OpenSSL. The type signature is slightly different, and
180
// OpenSSL's version will implicitly sort `sk` if it has a comparison function
181
// defined.
182
int sk_SAMPLE_find(const STACK_OF(SAMPLE) *sk, size_t *out_index,
183
                   const SAMPLE *p);
184
185
// sk_SAMPLE_shift removes and returns the first element in `sk`, or NULL if
186
// `sk` is empty.
187
SAMPLE *sk_SAMPLE_shift(STACK_OF(SAMPLE) *sk);
188
189
// sk_SAMPLE_push appends `p` to `sk` and returns the length of the new stack,
190
// or 0 on allocation failure.
191
size_t sk_SAMPLE_push(STACK_OF(SAMPLE) *sk, SAMPLE *p);
192
193
// sk_SAMPLE_pop removes and returns the last element of `sk`, or NULL if `sk`
194
// is empty.
195
SAMPLE *sk_SAMPLE_pop(STACK_OF(SAMPLE) *sk);
196
197
// sk_SAMPLE_dup performs a shallow copy of a stack and returns the new stack,
198
// or NULL on error. Use `sk_SAMPLE_deep_copy` to also copy the elements.
199
STACK_OF(SAMPLE) *sk_SAMPLE_dup(const STACK_OF(SAMPLE) *sk);
200
201
// sk_SAMPLE_sort sorts the elements of `sk` into ascending order based on the
202
// comparison function. The stack maintains a "sorted" flag and sorting an
203
// already sorted stack is a no-op.
204
void sk_SAMPLE_sort(STACK_OF(SAMPLE) *sk);
205
206
// sk_SAMPLE_sort_and_dedup sorts the elements of `sk` based on the comparison
207
// function and removes duplicates. If `free_func` is not NULL, it is called on
208
// every removed element.
209
void sk_SAMPLE_sort_and_dedup(STACK_OF(SAMPLE) *sk,
210
                              sk_SAMPLE_free_func free_func);
211
212
// sk_SAMPLE_is_sorted returns one if `sk` is known to be sorted and zero
213
// otherwise.
214
int sk_SAMPLE_is_sorted(const STACK_OF(SAMPLE) *sk);
215
216
// sk_SAMPLE_set_cmp_func sets the comparison function to be used by `sk` and
217
// returns the previous one.
218
sk_SAMPLE_cmp_func sk_SAMPLE_set_cmp_func(STACK_OF(SAMPLE) *sk,
219
                                          sk_SAMPLE_cmp_func comp);
220
221
// sk_SAMPLE_deep_copy performs a copy of `sk` and of each of the non-NULL
222
// elements in `sk` by using `copy_func`. If an error occurs, it calls
223
// `free_func` to free any copies already made and returns NULL.
224
STACK_OF(SAMPLE) *sk_SAMPLE_deep_copy(const STACK_OF(SAMPLE) *sk,
225
                                      sk_SAMPLE_copy_func copy_func,
226
                                      sk_SAMPLE_free_func free_func);
227
228
#endif  // Sample
229
230
231
// Private functions.
232
//
233
// The `sk_*` functions generated above are implemented internally using the
234
// type-erased functions below. Callers should use the typed wrappers instead.
235
// When using the type-erased functions, callers are responsible for ensuring
236
// the underlying types are correct. Casting pointers to the wrong types will
237
// result in memory errors.
238
239
// OPENSSL_sk_free_func is a function that frees an element in a stack. Note its
240
// actual type is void (*)(T *) for some T. Low-level `sk_*` functions will be
241
// passed a type-specific wrapper to call it correctly.
242
typedef void (*OPENSSL_sk_free_func)(void *ptr);
243
244
// OPENSSL_sk_copy_func is a function that copies an element in a stack. Note
245
// its actual type is T *(*)(const T *) for some T. Low-level `sk_*` functions
246
// will be passed a type-specific wrapper to call it correctly.
247
typedef void *(*OPENSSL_sk_copy_func)(const void *ptr);
248
249
// OPENSSL_sk_cmp_func is a comparison function that returns a value < 0, 0 or >
250
// 0 if `*a` is less than, equal to or greater than `*b`, respectively.  Note
251
// the extra indirection - the function is given a pointer to a pointer to the
252
// element. This differs from the usual qsort/bsearch comparison function.
253
//
254
// Note its actual type is `int (*)(const T *const *a, const T *const *b)`.
255
// Low-level `sk_*` functions will be passed a type-specific wrapper to call it
256
// correctly.
257
typedef int (*OPENSSL_sk_cmp_func)(const void *const *a, const void *const *b);
258
259
// OPENSSL_sk_delete_if_func is the generic version of
260
// `sk_SAMPLE_delete_if_func`.
261
typedef int (*OPENSSL_sk_delete_if_func)(void *obj, void *data);
262
263
// The following function types call the above type-erased signatures with the
264
// true types.
265
typedef void (*OPENSSL_sk_call_free_func)(OPENSSL_sk_free_func, void *);
266
typedef void *(*OPENSSL_sk_call_copy_func)(OPENSSL_sk_copy_func, const void *);
267
typedef int (*OPENSSL_sk_call_cmp_func)(OPENSSL_sk_cmp_func, const void *,
268
                                        const void *);
269
typedef int (*OPENSSL_sk_call_delete_if_func)(OPENSSL_sk_delete_if_func, void *,
270
                                              void *);
271
272
// An OPENSSL_STACK contains an array of pointers. It is not designed to be used
273
// directly, rather the wrapper macros should be used.
274
typedef struct stack_st OPENSSL_STACK;
275
276
// The following are raw stack functions. They implement the corresponding typed
277
// `sk_SAMPLE_*` functions generated by `DEFINE_STACK_OF`. Callers shouldn't be
278
// using them. Rather, callers should use the typed functions.
279
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_cmp_func comp);
280
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_new_null(void);
281
OPENSSL_EXPORT size_t OPENSSL_sk_num(const OPENSSL_STACK *sk);
282
OPENSSL_EXPORT void OPENSSL_sk_zero(OPENSSL_STACK *sk);
283
OPENSSL_EXPORT void *OPENSSL_sk_value(const OPENSSL_STACK *sk, size_t i);
284
OPENSSL_EXPORT void *OPENSSL_sk_set(OPENSSL_STACK *sk, size_t i, void *p);
285
OPENSSL_EXPORT void OPENSSL_sk_free(OPENSSL_STACK *sk);
286
OPENSSL_EXPORT void OPENSSL_sk_pop_free_ex(
287
    OPENSSL_STACK *sk, OPENSSL_sk_call_free_func call_free_func,
288
    OPENSSL_sk_free_func free_func);
289
OPENSSL_EXPORT size_t OPENSSL_sk_insert(OPENSSL_STACK *sk, void *p,
290
                                        size_t where);
291
OPENSSL_EXPORT void *OPENSSL_sk_delete(OPENSSL_STACK *sk, size_t where);
292
OPENSSL_EXPORT void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *sk, const void *p);
293
OPENSSL_EXPORT void OPENSSL_sk_delete_if(
294
    OPENSSL_STACK *sk, OPENSSL_sk_call_delete_if_func call_func,
295
    OPENSSL_sk_delete_if_func func, void *data);
296
OPENSSL_EXPORT int OPENSSL_sk_find(const OPENSSL_STACK *sk, size_t *out_index,
297
                                   const void *p,
298
                                   OPENSSL_sk_call_cmp_func call_cmp_func);
299
OPENSSL_EXPORT void *OPENSSL_sk_shift(OPENSSL_STACK *sk);
300
OPENSSL_EXPORT size_t OPENSSL_sk_push(OPENSSL_STACK *sk, void *p);
301
OPENSSL_EXPORT void *OPENSSL_sk_pop(OPENSSL_STACK *sk);
302
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *sk);
303
OPENSSL_EXPORT void OPENSSL_sk_sort(OPENSSL_STACK *sk,
304
                                    OPENSSL_sk_call_cmp_func call_cmp_func);
305
OPENSSL_EXPORT void OPENSSL_sk_sort_and_dedup(
306
    OPENSSL_STACK *sk, OPENSSL_sk_call_cmp_func call_cmp_func,
307
    OPENSSL_sk_call_free_func call_free_func, OPENSSL_sk_free_func free_func);
308
OPENSSL_EXPORT int OPENSSL_sk_is_sorted(const OPENSSL_STACK *sk);
309
OPENSSL_EXPORT OPENSSL_sk_cmp_func
310
OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, OPENSSL_sk_cmp_func comp);
311
OPENSSL_EXPORT OPENSSL_STACK *OPENSSL_sk_deep_copy(
312
    const OPENSSL_STACK *sk, OPENSSL_sk_call_copy_func call_copy_func,
313
    OPENSSL_sk_copy_func copy_func, OPENSSL_sk_call_free_func call_free_func,
314
    OPENSSL_sk_free_func free_func);
315
316
317
// Deprecated private functions (hidden).
318
//
319
// TODO(crbug.com/boringssl/499): Migrate callers to the typed wrappers, or at
320
// least the new names and remove the old ones.
321
//
322
// TODO(b/290792019, b/290785937): Ideally these would at least be inline
323
// functions, so we do not squat the symbols.
324
325
typedef OPENSSL_STACK _STACK;
326
327
// The following functions call the corresponding `OPENSSL_sk_*` function.
328
OPENSSL_EXPORT OPENSSL_DEPRECATED OPENSSL_STACK *sk_new_null(void);
329
OPENSSL_EXPORT OPENSSL_DEPRECATED size_t sk_num(const OPENSSL_STACK *sk);
330
OPENSSL_EXPORT OPENSSL_DEPRECATED void *sk_value(const OPENSSL_STACK *sk,
331
                                                 size_t i);
332
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_free(OPENSSL_STACK *sk);
333
OPENSSL_EXPORT OPENSSL_DEPRECATED size_t sk_push(OPENSSL_STACK *sk, void *p);
334
OPENSSL_EXPORT OPENSSL_DEPRECATED void *sk_pop(OPENSSL_STACK *sk);
335
336
// sk_pop_free_ex calls `OPENSSL_sk_pop_free_ex`.
337
//
338
// TODO(b/291994116): Remove this.
339
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_pop_free_ex(
340
    OPENSSL_STACK *sk, OPENSSL_sk_call_free_func call_free_func,
341
    OPENSSL_sk_free_func free_func);
342
343
// sk_pop_free behaves like `OPENSSL_sk_pop_free_ex` but performs an invalid
344
// function pointer cast. It exists because some existing callers called
345
// `sk_pop_free` directly.
346
//
347
// TODO(davidben): Migrate callers to bssl::UniquePtr and remove this.
348
OPENSSL_EXPORT OPENSSL_DEPRECATED void sk_pop_free(
349
    OPENSSL_STACK *sk, OPENSSL_sk_free_func free_func);
350
351
352
#if !defined(BORINGSSL_NO_CXX)
353
extern "C++" {
354
BSSL_NAMESPACE_BEGIN
355
namespace internal {
356
template <typename T>
357
struct StackTraits {};
358
}
359
BSSL_NAMESPACE_END
360
}
361
362
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const) \
363
  extern "C++" {                                            \
364
  BSSL_NAMESPACE_BEGIN                                      \
365
  namespace internal {                                      \
366
  template <>                                               \
367
  struct StackTraits<STACK_OF(name)> {                      \
368
    static constexpr bool kIsStack = true;                  \
369
    using Type = type;                                      \
370
    static constexpr bool kIsConst = is_const;              \
371
  };                                                        \
372
  }                                                         \
373
  BSSL_NAMESPACE_END                                        \
374
  }
375
376
#else
377
#define BORINGSSL_DEFINE_STACK_TRAITS(name, type, is_const)
378
#endif
379
380
#define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype)            \
381
  /* We disable MSVC C4191 in this macro, which warns when pointers are cast   \
382
   * to the wrong type. While the cast itself is valid, it is often a bug      \
383
   * because calling it through the cast is UB. However, we never actually     \
384
   * call functions as `OPENSSL_sk_cmp_func`. The type is just a type-erased   \
385
   * function pointer. (C does not guarantee function pointers fit in          \
386
   * `void*`, and GCC will warn on this.) Thus we just disable the false       \
387
   * positive warning. */                                                      \
388
  OPENSSL_MSVC_PRAGMA(warning(push))                                           \
389
  OPENSSL_MSVC_PRAGMA(warning(disable : 4191))                                 \
390
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic push")                             \
391
  OPENSSL_CLANG_PRAGMA(                                                        \
392
      "clang diagnostic ignored \"-Wunknown-warning-option\"")                 \
393
  OPENSSL_CLANG_PRAGMA(                                                        \
394
      "clang diagnostic ignored \"-Wcast-function-type-strict\"")              \
395
  /* We also disable -Wcast-qual. As part of this C-based type erasure setup,  \
396
   * the wrapper macros need to cast away const in places. In C++, const_cast  \
397
   * suppresses the warning, but it seemingly cannot be suppressed in C. */    \
398
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic ignored \"-Wcast-qual\"")          \
399
                                                                               \
400
  DECLARE_STACK_OF(name)                                                       \
401
                                                                               \
402
  typedef void (*sk_##name##_free_func)(ptrtype);                              \
403
  typedef ptrtype (*sk_##name##_copy_func)(constptrtype);                      \
404
  typedef int (*sk_##name##_cmp_func)(constptrtype const *,                    \
405
                                      constptrtype const *);                   \
406
  typedef int (*sk_##name##_delete_if_func)(ptrtype, void *);                  \
407
                                                                               \
408
  OPENSSL_INLINE void sk_##name##_call_free_func(                              \
409
773k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
410
773k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
411
773k
  }                                                                            \
Unexecuted instantiation: sk_void_call_free_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_free_func
Unexecuted instantiation: sk_BIO_call_free_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_free_func
sk_ASN1_OBJECT_call_free_func
Line
Count
Source
409
835
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
410
835
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
411
835
  }                                                                            \
Unexecuted instantiation: sk_ASN1_TYPE_call_free_func
sk_CONF_VALUE_call_free_func
Line
Count
Source
409
21.8k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
410
21.8k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
411
21.8k
  }                                                                            \
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_free_func
sk_X509_call_free_func
Line
Count
Source
409
216k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
410
216k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
411
216k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_call_free_func
Unexecuted instantiation: sk_X509_CRL_call_free_func
Unexecuted instantiation: sk_X509_REVOKED_call_free_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_free_func
Unexecuted instantiation: sk_X509_NAME_call_free_func
sk_X509_EXTENSION_call_free_func
Line
Count
Source
409
533k
      OPENSSL_sk_free_func free_func, void *ptr) {                             \
410
533k
    ((sk_##name##_free_func)free_func)((ptrtype)ptr);                          \
411
533k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_free_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_free_func
Unexecuted instantiation: sk_DIST_POINT_call_free_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_free_func
Unexecuted instantiation: sk_POLICYINFO_call_free_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_free_func
Unexecuted instantiation: sk_X509_ALGOR_call_free_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_free_func
Unexecuted instantiation: sk_X509_OBJECT_call_free_func
Unexecuted instantiation: sk_X509_INFO_call_free_func
Unexecuted instantiation: sk_SSL_CIPHER_call_free_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_free_func
Unexecuted instantiation: sk_SSL_COMP_call_free_func
Unexecuted instantiation: sk_ASN1_VALUE_call_free_func
412
                                                                               \
413
  OPENSSL_INLINE void *sk_##name##_call_copy_func(                             \
414
210k
      OPENSSL_sk_copy_func copy_func, const void *ptr) {                       \
415
210k
    return (void *)((sk_##name##_copy_func)copy_func)((constptrtype)ptr);      \
416
210k
  }                                                                            \
Unexecuted instantiation: sk_void_call_copy_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_copy_func
Unexecuted instantiation: sk_BIO_call_copy_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_copy_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_copy_func
Unexecuted instantiation: sk_ASN1_TYPE_call_copy_func
Unexecuted instantiation: sk_CONF_VALUE_call_copy_func
sk_CRYPTO_BUFFER_call_copy_func
Line
Count
Source
414
163k
      OPENSSL_sk_copy_func copy_func, const void *ptr) {                       \
415
163k
    return (void *)((sk_##name##_copy_func)copy_func)((constptrtype)ptr);      \
416
163k
  }                                                                            \
sk_X509_call_copy_func
Line
Count
Source
414
46.0k
      OPENSSL_sk_copy_func copy_func, const void *ptr) {                       \
415
46.0k
    return (void *)((sk_##name##_copy_func)copy_func)((constptrtype)ptr);      \
416
46.0k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_call_copy_func
Unexecuted instantiation: sk_X509_CRL_call_copy_func
Unexecuted instantiation: sk_X509_REVOKED_call_copy_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_copy_func
Unexecuted instantiation: sk_X509_NAME_call_copy_func
Unexecuted instantiation: sk_X509_EXTENSION_call_copy_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_copy_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_copy_func
Unexecuted instantiation: sk_DIST_POINT_call_copy_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_copy_func
Unexecuted instantiation: sk_POLICYINFO_call_copy_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_copy_func
Unexecuted instantiation: sk_X509_ALGOR_call_copy_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_copy_func
Unexecuted instantiation: sk_X509_OBJECT_call_copy_func
Unexecuted instantiation: sk_X509_INFO_call_copy_func
Unexecuted instantiation: sk_SSL_CIPHER_call_copy_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_copy_func
Unexecuted instantiation: sk_SSL_COMP_call_copy_func
Unexecuted instantiation: sk_ASN1_VALUE_call_copy_func
417
                                                                               \
418
  OPENSSL_INLINE int sk_##name##_call_cmp_func(OPENSSL_sk_cmp_func cmp_func,   \
419
0
                                               const void *a, const void *b) { \
420
0
    constptrtype a_ptr = (constptrtype)a;                                      \
421
0
    constptrtype b_ptr = (constptrtype)b;                                      \
422
0
    /* `cmp_func` expects an extra layer of pointers to match qsort. */        \
423
0
    return ((sk_##name##_cmp_func)cmp_func)(&a_ptr, &b_ptr);                   \
424
0
  }                                                                            \
Unexecuted instantiation: sk_void_call_cmp_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_cmp_func
Unexecuted instantiation: sk_BIO_call_cmp_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_cmp_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_cmp_func
Unexecuted instantiation: sk_ASN1_TYPE_call_cmp_func
Unexecuted instantiation: sk_CONF_VALUE_call_cmp_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_cmp_func
Unexecuted instantiation: sk_X509_call_cmp_func
Unexecuted instantiation: sk_GENERAL_NAME_call_cmp_func
Unexecuted instantiation: sk_X509_CRL_call_cmp_func
Unexecuted instantiation: sk_X509_REVOKED_call_cmp_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_cmp_func
Unexecuted instantiation: sk_X509_NAME_call_cmp_func
Unexecuted instantiation: sk_X509_EXTENSION_call_cmp_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_cmp_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_cmp_func
Unexecuted instantiation: sk_DIST_POINT_call_cmp_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_cmp_func
Unexecuted instantiation: sk_POLICYINFO_call_cmp_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_cmp_func
Unexecuted instantiation: sk_X509_ALGOR_call_cmp_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_cmp_func
Unexecuted instantiation: sk_X509_OBJECT_call_cmp_func
Unexecuted instantiation: sk_X509_INFO_call_cmp_func
Unexecuted instantiation: sk_SSL_CIPHER_call_cmp_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_cmp_func
Unexecuted instantiation: sk_SSL_COMP_call_cmp_func
Unexecuted instantiation: sk_ASN1_VALUE_call_cmp_func
425
                                                                               \
426
  OPENSSL_INLINE int sk_##name##_call_delete_if_func(                          \
427
0
      OPENSSL_sk_delete_if_func func, void *obj, void *data) {                 \
428
0
    return ((sk_##name##_delete_if_func)func)((ptrtype)obj, data);             \
429
0
  }                                                                            \
Unexecuted instantiation: sk_void_call_delete_if_func
Unexecuted instantiation: sk_OPENSSL_STRING_call_delete_if_func
Unexecuted instantiation: sk_BIO_call_delete_if_func
Unexecuted instantiation: sk_ASN1_INTEGER_call_delete_if_func
Unexecuted instantiation: sk_ASN1_OBJECT_call_delete_if_func
Unexecuted instantiation: sk_ASN1_TYPE_call_delete_if_func
Unexecuted instantiation: sk_CONF_VALUE_call_delete_if_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_call_delete_if_func
Unexecuted instantiation: sk_X509_call_delete_if_func
Unexecuted instantiation: sk_GENERAL_NAME_call_delete_if_func
Unexecuted instantiation: sk_X509_CRL_call_delete_if_func
Unexecuted instantiation: sk_X509_REVOKED_call_delete_if_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_call_delete_if_func
Unexecuted instantiation: sk_X509_NAME_call_delete_if_func
Unexecuted instantiation: sk_X509_EXTENSION_call_delete_if_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_call_delete_if_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_call_delete_if_func
Unexecuted instantiation: sk_DIST_POINT_call_delete_if_func
Unexecuted instantiation: sk_POLICYQUALINFO_call_delete_if_func
Unexecuted instantiation: sk_POLICYINFO_call_delete_if_func
Unexecuted instantiation: sk_POLICY_MAPPING_call_delete_if_func
Unexecuted instantiation: sk_X509_ALGOR_call_delete_if_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_call_delete_if_func
Unexecuted instantiation: sk_X509_OBJECT_call_delete_if_func
Unexecuted instantiation: sk_X509_INFO_call_delete_if_func
Unexecuted instantiation: sk_SSL_CIPHER_call_delete_if_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_call_delete_if_func
Unexecuted instantiation: sk_SSL_COMP_call_delete_if_func
Unexecuted instantiation: sk_ASN1_VALUE_call_delete_if_func
430
                                                                               \
431
5.14k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new(sk_##name##_cmp_func comp) {  \
432
5.14k
    return (STACK_OF(name) *)OPENSSL_sk_new((OPENSSL_sk_cmp_func)comp);        \
433
5.14k
  }                                                                            \
Unexecuted instantiation: sk_void_new
Unexecuted instantiation: sk_OPENSSL_STRING_new
Unexecuted instantiation: sk_BIO_new
Unexecuted instantiation: sk_ASN1_INTEGER_new
Unexecuted instantiation: sk_ASN1_OBJECT_new
Unexecuted instantiation: sk_ASN1_TYPE_new
Unexecuted instantiation: sk_CONF_VALUE_new
Unexecuted instantiation: sk_CRYPTO_BUFFER_new
Unexecuted instantiation: sk_X509_new
Unexecuted instantiation: sk_GENERAL_NAME_new
Unexecuted instantiation: sk_X509_CRL_new
Unexecuted instantiation: sk_X509_REVOKED_new
Unexecuted instantiation: sk_X509_NAME_ENTRY_new
Unexecuted instantiation: sk_X509_NAME_new
Unexecuted instantiation: sk_X509_EXTENSION_new
Unexecuted instantiation: sk_GENERAL_SUBTREE_new
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_new
Unexecuted instantiation: sk_DIST_POINT_new
Unexecuted instantiation: sk_POLICYQUALINFO_new
Unexecuted instantiation: sk_POLICYINFO_new
Unexecuted instantiation: sk_POLICY_MAPPING_new
Unexecuted instantiation: sk_X509_ALGOR_new
Unexecuted instantiation: sk_X509_ATTRIBUTE_new
sk_X509_OBJECT_new
Line
Count
Source
431
5.14k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new(sk_##name##_cmp_func comp) {  \
432
5.14k
    return (STACK_OF(name) *)OPENSSL_sk_new((OPENSSL_sk_cmp_func)comp);        \
433
5.14k
  }                                                                            \
Unexecuted instantiation: sk_X509_INFO_new
Unexecuted instantiation: sk_SSL_CIPHER_new
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_new
Unexecuted instantiation: sk_SSL_COMP_new
Unexecuted instantiation: sk_ASN1_VALUE_new
434
                                                                               \
435
892k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
892k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
892k
  }                                                                            \
sk_void_new_null
Line
Count
Source
435
8.16k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
8.16k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
8.16k
  }                                                                            \
Unexecuted instantiation: sk_OPENSSL_STRING_new_null
Unexecuted instantiation: sk_BIO_new_null
Unexecuted instantiation: sk_ASN1_INTEGER_new_null
Unexecuted instantiation: sk_ASN1_OBJECT_new_null
Unexecuted instantiation: sk_ASN1_TYPE_new_null
sk_CONF_VALUE_new_null
Line
Count
Source
435
2.08k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
2.08k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
2.08k
  }                                                                            \
sk_CRYPTO_BUFFER_new_null
Line
Count
Source
435
149k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
149k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
149k
  }                                                                            \
sk_X509_new_null
Line
Count
Source
435
156k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
156k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
156k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_new_null
Unexecuted instantiation: sk_X509_CRL_new_null
Unexecuted instantiation: sk_X509_REVOKED_new_null
sk_X509_NAME_ENTRY_new_null
Line
Count
Source
435
366k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
366k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
366k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_new_null
Unexecuted instantiation: sk_X509_EXTENSION_new_null
Unexecuted instantiation: sk_GENERAL_SUBTREE_new_null
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_new_null
Unexecuted instantiation: sk_DIST_POINT_new_null
Unexecuted instantiation: sk_POLICYQUALINFO_new_null
Unexecuted instantiation: sk_POLICYINFO_new_null
Unexecuted instantiation: sk_POLICY_MAPPING_new_null
Unexecuted instantiation: sk_X509_ALGOR_new_null
Unexecuted instantiation: sk_X509_ATTRIBUTE_new_null
Unexecuted instantiation: sk_X509_OBJECT_new_null
Unexecuted instantiation: sk_X509_INFO_new_null
sk_SSL_CIPHER_new_null
Line
Count
Source
435
28.0k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
28.0k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
28.0k
  }                                                                            \
sk_SRTP_PROTECTION_PROFILE_new_null
Line
Count
Source
435
4.25k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
4.25k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
4.25k
  }                                                                            \
Unexecuted instantiation: sk_SSL_COMP_new_null
sk_ASN1_VALUE_new_null
Line
Count
Source
435
177k
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_new_null(void) {                  \
436
177k
    return (STACK_OF(name) *)OPENSSL_sk_new_null();                            \
437
177k
  }                                                                            \
438
                                                                               \
439
2.37M
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
2.37M
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
2.37M
  }                                                                            \
sk_void_num
Line
Count
Source
439
8.16k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
8.16k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
8.16k
  }                                                                            \
Unexecuted instantiation: sk_OPENSSL_STRING_num
Unexecuted instantiation: sk_BIO_num
sk_ASN1_INTEGER_num
Line
Count
Source
439
15
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
15
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
15
  }                                                                            \
sk_ASN1_OBJECT_num
Line
Count
Source
439
2.02k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
2.02k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
2.02k
  }                                                                            \
Unexecuted instantiation: sk_ASN1_TYPE_num
sk_CONF_VALUE_num
Line
Count
Source
439
21.5k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
21.5k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
21.5k
  }                                                                            \
sk_CRYPTO_BUFFER_num
Line
Count
Source
439
744k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
744k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
744k
  }                                                                            \
sk_X509_num
Line
Count
Source
439
14.8k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
14.8k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
14.8k
  }                                                                            \
sk_GENERAL_NAME_num
Line
Count
Source
439
17.7k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
17.7k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
17.7k
  }                                                                            \
Unexecuted instantiation: sk_X509_CRL_num
Unexecuted instantiation: sk_X509_REVOKED_num
sk_X509_NAME_ENTRY_num
Line
Count
Source
439
752k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
752k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
752k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_num
sk_X509_EXTENSION_num
Line
Count
Source
439
371k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
371k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
371k
  }                                                                            \
sk_GENERAL_SUBTREE_num
Line
Count
Source
439
212
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
212
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
212
  }                                                                            \
sk_ACCESS_DESCRIPTION_num
Line
Count
Source
439
101
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
101
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
101
  }                                                                            \
sk_DIST_POINT_num
Line
Count
Source
439
3.75k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
3.75k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
3.75k
  }                                                                            \
sk_POLICYQUALINFO_num
Line
Count
Source
439
633
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
633
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
633
  }                                                                            \
sk_POLICYINFO_num
Line
Count
Source
439
343
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
343
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
343
  }                                                                            \
sk_POLICY_MAPPING_num
Line
Count
Source
439
173
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
173
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
173
  }                                                                            \
Unexecuted instantiation: sk_X509_ALGOR_num
Unexecuted instantiation: sk_X509_ATTRIBUTE_num
Unexecuted instantiation: sk_X509_OBJECT_num
Unexecuted instantiation: sk_X509_INFO_num
sk_SSL_CIPHER_num
Line
Count
Source
439
62.7k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
62.7k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
62.7k
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_num
Unexecuted instantiation: sk_SSL_COMP_num
sk_ASN1_VALUE_num
Line
Count
Source
439
377k
  OPENSSL_INLINE size_t sk_##name##_num(const STACK_OF(name) *sk) {            \
440
377k
    return OPENSSL_sk_num((const OPENSSL_STACK *)sk);                          \
441
377k
  }                                                                            \
442
                                                                               \
443
0
  OPENSSL_INLINE void sk_##name##_zero(STACK_OF(name) *sk) {                   \
444
0
    OPENSSL_sk_zero((OPENSSL_STACK *)sk);                                      \
445
0
  }                                                                            \
Unexecuted instantiation: sk_void_zero
Unexecuted instantiation: sk_OPENSSL_STRING_zero
Unexecuted instantiation: sk_BIO_zero
Unexecuted instantiation: sk_ASN1_INTEGER_zero
Unexecuted instantiation: sk_ASN1_OBJECT_zero
Unexecuted instantiation: sk_ASN1_TYPE_zero
Unexecuted instantiation: sk_CONF_VALUE_zero
Unexecuted instantiation: sk_CRYPTO_BUFFER_zero
Unexecuted instantiation: sk_X509_zero
Unexecuted instantiation: sk_GENERAL_NAME_zero
Unexecuted instantiation: sk_X509_CRL_zero
Unexecuted instantiation: sk_X509_REVOKED_zero
Unexecuted instantiation: sk_X509_NAME_ENTRY_zero
Unexecuted instantiation: sk_X509_NAME_zero
Unexecuted instantiation: sk_X509_EXTENSION_zero
Unexecuted instantiation: sk_GENERAL_SUBTREE_zero
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_zero
Unexecuted instantiation: sk_DIST_POINT_zero
Unexecuted instantiation: sk_POLICYQUALINFO_zero
Unexecuted instantiation: sk_POLICYINFO_zero
Unexecuted instantiation: sk_POLICY_MAPPING_zero
Unexecuted instantiation: sk_X509_ALGOR_zero
Unexecuted instantiation: sk_X509_ATTRIBUTE_zero
Unexecuted instantiation: sk_X509_OBJECT_zero
Unexecuted instantiation: sk_X509_INFO_zero
Unexecuted instantiation: sk_SSL_CIPHER_zero
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_zero
Unexecuted instantiation: sk_SSL_COMP_zero
Unexecuted instantiation: sk_ASN1_VALUE_zero
446
                                                                               \
447
  OPENSSL_INLINE ptrtype sk_##name##_value(const STACK_OF(name) *sk,           \
448
1.52M
                                           size_t i) {                         \
449
1.52M
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
1.52M
  }                                                                            \
Unexecuted instantiation: sk_void_value
Unexecuted instantiation: sk_OPENSSL_STRING_value
Unexecuted instantiation: sk_BIO_value
sk_ASN1_INTEGER_value
Line
Count
Source
448
5
                                           size_t i) {                         \
449
5
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
5
  }                                                                            \
sk_ASN1_OBJECT_value
Line
Count
Source
448
1.73k
                                           size_t i) {                         \
449
1.73k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
1.73k
  }                                                                            \
Unexecuted instantiation: sk_ASN1_TYPE_value
sk_CONF_VALUE_value
Line
Count
Source
448
17.6k
                                           size_t i) {                         \
449
17.6k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
17.6k
  }                                                                            \
sk_CRYPTO_BUFFER_value
Line
Count
Source
448
260k
                                           size_t i) {                         \
449
260k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
260k
  }                                                                            \
sk_X509_value
Line
Count
Source
448
8.16k
                                           size_t i) {                         \
449
8.16k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
8.16k
  }                                                                            \
sk_GENERAL_NAME_value
Line
Count
Source
448
17.1k
                                           size_t i) {                         \
449
17.1k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
17.1k
  }                                                                            \
Unexecuted instantiation: sk_X509_CRL_value
Unexecuted instantiation: sk_X509_REVOKED_value
sk_X509_NAME_ENTRY_value
Line
Count
Source
448
733k
                                           size_t i) {                         \
449
733k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
733k
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_value
sk_X509_EXTENSION_value
Line
Count
Source
448
284k
                                           size_t i) {                         \
449
284k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
284k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_SUBTREE_value
sk_ACCESS_DESCRIPTION_value
Line
Count
Source
448
73
                                           size_t i) {                         \
449
73
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
73
  }                                                                            \
sk_DIST_POINT_value
Line
Count
Source
448
503
                                           size_t i) {                         \
449
503
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
503
  }                                                                            \
sk_POLICYQUALINFO_value
Line
Count
Source
448
508
                                           size_t i) {                         \
449
508
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
508
  }                                                                            \
sk_POLICYINFO_value
Line
Count
Source
448
211
                                           size_t i) {                         \
449
211
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
211
  }                                                                            \
sk_POLICY_MAPPING_value
Line
Count
Source
448
81
                                           size_t i) {                         \
449
81
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
81
  }                                                                            \
Unexecuted instantiation: sk_X509_ALGOR_value
Unexecuted instantiation: sk_X509_ATTRIBUTE_value
Unexecuted instantiation: sk_X509_OBJECT_value
Unexecuted instantiation: sk_X509_INFO_value
sk_SSL_CIPHER_value
Line
Count
Source
448
29.8k
                                           size_t i) {                         \
449
29.8k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
29.8k
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_value
Unexecuted instantiation: sk_SSL_COMP_value
sk_ASN1_VALUE_value
Line
Count
Source
448
173k
                                           size_t i) {                         \
449
173k
    return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i);            \
450
173k
  }                                                                            \
451
                                                                               \
452
  OPENSSL_INLINE ptrtype sk_##name##_set(STACK_OF(name) *sk, size_t i,         \
453
19.4k
                                         ptrtype p) {                          \
454
19.4k
    return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p);         \
455
19.4k
  }                                                                            \
sk_void_set
Line
Count
Source
453
8.16k
                                         ptrtype p) {                          \
454
8.16k
    return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p);         \
455
8.16k
  }                                                                            \
Unexecuted instantiation: sk_OPENSSL_STRING_set
Unexecuted instantiation: sk_BIO_set
Unexecuted instantiation: sk_ASN1_INTEGER_set
Unexecuted instantiation: sk_ASN1_OBJECT_set
Unexecuted instantiation: sk_ASN1_TYPE_set
Unexecuted instantiation: sk_CONF_VALUE_set
sk_CRYPTO_BUFFER_set
Line
Count
Source
453
11.2k
                                         ptrtype p) {                          \
454
11.2k
    return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p);         \
455
11.2k
  }                                                                            \
Unexecuted instantiation: sk_X509_set
Unexecuted instantiation: sk_GENERAL_NAME_set
Unexecuted instantiation: sk_X509_CRL_set
Unexecuted instantiation: sk_X509_REVOKED_set
Unexecuted instantiation: sk_X509_NAME_ENTRY_set
Unexecuted instantiation: sk_X509_NAME_set
Unexecuted instantiation: sk_X509_EXTENSION_set
Unexecuted instantiation: sk_GENERAL_SUBTREE_set
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_set
Unexecuted instantiation: sk_DIST_POINT_set
Unexecuted instantiation: sk_POLICYQUALINFO_set
Unexecuted instantiation: sk_POLICYINFO_set
Unexecuted instantiation: sk_POLICY_MAPPING_set
Unexecuted instantiation: sk_X509_ALGOR_set
Unexecuted instantiation: sk_X509_ATTRIBUTE_set
Unexecuted instantiation: sk_X509_OBJECT_set
Unexecuted instantiation: sk_X509_INFO_set
Unexecuted instantiation: sk_SSL_CIPHER_set
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_set
Unexecuted instantiation: sk_SSL_COMP_set
Unexecuted instantiation: sk_ASN1_VALUE_set
456
                                                                               \
457
26.8k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
458
26.8k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
459
26.8k
  }                                                                            \
sk_void_free
Line
Count
Source
457
8.16k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
458
8.16k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
459
8.16k
  }                                                                            \
Unexecuted instantiation: sk_OPENSSL_STRING_free
Unexecuted instantiation: sk_BIO_free
Unexecuted instantiation: sk_ASN1_INTEGER_free
Unexecuted instantiation: sk_ASN1_OBJECT_free
Unexecuted instantiation: sk_ASN1_TYPE_free
sk_CONF_VALUE_free
Line
Count
Source
457
42
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
458
42
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
459
42
  }                                                                            \
Unexecuted instantiation: sk_CRYPTO_BUFFER_free
Unexecuted instantiation: sk_X509_free
Unexecuted instantiation: sk_GENERAL_NAME_free
Unexecuted instantiation: sk_X509_CRL_free
Unexecuted instantiation: sk_X509_REVOKED_free
Unexecuted instantiation: sk_X509_NAME_ENTRY_free
Unexecuted instantiation: sk_X509_NAME_free
Unexecuted instantiation: sk_X509_EXTENSION_free
Unexecuted instantiation: sk_GENERAL_SUBTREE_free
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_free
Unexecuted instantiation: sk_DIST_POINT_free
Unexecuted instantiation: sk_POLICYQUALINFO_free
Unexecuted instantiation: sk_POLICYINFO_free
Unexecuted instantiation: sk_POLICY_MAPPING_free
Unexecuted instantiation: sk_X509_ALGOR_free
Unexecuted instantiation: sk_X509_ATTRIBUTE_free
Unexecuted instantiation: sk_X509_OBJECT_free
Unexecuted instantiation: sk_X509_INFO_free
Unexecuted instantiation: sk_SSL_CIPHER_free
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_free
Unexecuted instantiation: sk_SSL_COMP_free
sk_ASN1_VALUE_free
Line
Count
Source
457
18.6k
  OPENSSL_INLINE void sk_##name##_free(STACK_OF(name) *sk) {                   \
458
18.6k
    OPENSSL_sk_free((OPENSSL_STACK *)sk);                                      \
459
18.6k
  }                                                                            \
460
                                                                               \
461
  OPENSSL_INLINE void sk_##name##_pop_free(STACK_OF(name) *sk,                 \
462
1.81M
                                           sk_##name##_free_func free_func) {  \
463
1.81M
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
1.81M
                           (OPENSSL_sk_free_func)free_func);                   \
465
1.81M
  }                                                                            \
Unexecuted instantiation: sk_void_pop_free
sk_OPENSSL_STRING_pop_free
Line
Count
Source
462
136k
                                           sk_##name##_free_func free_func) {  \
463
136k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
136k
                           (OPENSSL_sk_free_func)free_func);                   \
465
136k
  }                                                                            \
Unexecuted instantiation: sk_BIO_pop_free
Unexecuted instantiation: sk_ASN1_INTEGER_pop_free
sk_ASN1_OBJECT_pop_free
Line
Count
Source
462
136k
                                           sk_##name##_free_func free_func) {  \
463
136k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
136k
                           (OPENSSL_sk_free_func)free_func);                   \
465
136k
  }                                                                            \
Unexecuted instantiation: sk_ASN1_TYPE_pop_free
sk_CONF_VALUE_pop_free
Line
Count
Source
462
6.38k
                                           sk_##name##_free_func free_func) {  \
463
6.38k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
6.38k
                           (OPENSSL_sk_free_func)free_func);                   \
465
6.38k
  }                                                                            \
Unexecuted instantiation: sk_CRYPTO_BUFFER_pop_free
sk_X509_pop_free
Line
Count
Source
462
1.05M
                                           sk_##name##_free_func free_func) {  \
463
1.05M
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
1.05M
                           (OPENSSL_sk_free_func)free_func);                   \
465
1.05M
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_pop_free
Unexecuted instantiation: sk_X509_CRL_pop_free
Unexecuted instantiation: sk_X509_REVOKED_pop_free
Unexecuted instantiation: sk_X509_NAME_ENTRY_pop_free
sk_X509_NAME_pop_free
Line
Count
Source
462
292k
                                           sk_##name##_free_func free_func) {  \
463
292k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
292k
                           (OPENSSL_sk_free_func)free_func);                   \
465
292k
  }                                                                            \
sk_X509_EXTENSION_pop_free
Line
Count
Source
462
189k
                                           sk_##name##_free_func free_func) {  \
463
189k
    OPENSSL_sk_pop_free_ex((OPENSSL_STACK *)sk, sk_##name##_call_free_func,    \
464
189k
                           (OPENSSL_sk_free_func)free_func);                   \
465
189k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_SUBTREE_pop_free
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_pop_free
Unexecuted instantiation: sk_DIST_POINT_pop_free
Unexecuted instantiation: sk_POLICYQUALINFO_pop_free
Unexecuted instantiation: sk_POLICYINFO_pop_free
Unexecuted instantiation: sk_POLICY_MAPPING_pop_free
Unexecuted instantiation: sk_X509_ALGOR_pop_free
Unexecuted instantiation: sk_X509_ATTRIBUTE_pop_free
Unexecuted instantiation: sk_X509_OBJECT_pop_free
Unexecuted instantiation: sk_X509_INFO_pop_free
Unexecuted instantiation: sk_SSL_CIPHER_pop_free
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_pop_free
Unexecuted instantiation: sk_SSL_COMP_pop_free
Unexecuted instantiation: sk_ASN1_VALUE_pop_free
466
                                                                               \
467
  OPENSSL_INLINE size_t sk_##name##_insert(STACK_OF(name) *sk, ptrtype p,      \
468
0
                                           size_t where) {                     \
469
0
    return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (void *)p, where);           \
470
0
  }                                                                            \
Unexecuted instantiation: sk_void_insert
Unexecuted instantiation: sk_OPENSSL_STRING_insert
Unexecuted instantiation: sk_BIO_insert
Unexecuted instantiation: sk_ASN1_INTEGER_insert
Unexecuted instantiation: sk_ASN1_OBJECT_insert
Unexecuted instantiation: sk_ASN1_TYPE_insert
Unexecuted instantiation: sk_CONF_VALUE_insert
Unexecuted instantiation: sk_CRYPTO_BUFFER_insert
Unexecuted instantiation: sk_X509_insert
Unexecuted instantiation: sk_GENERAL_NAME_insert
Unexecuted instantiation: sk_X509_CRL_insert
Unexecuted instantiation: sk_X509_REVOKED_insert
Unexecuted instantiation: sk_X509_NAME_ENTRY_insert
Unexecuted instantiation: sk_X509_NAME_insert
Unexecuted instantiation: sk_X509_EXTENSION_insert
Unexecuted instantiation: sk_GENERAL_SUBTREE_insert
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_insert
Unexecuted instantiation: sk_DIST_POINT_insert
Unexecuted instantiation: sk_POLICYQUALINFO_insert
Unexecuted instantiation: sk_POLICYINFO_insert
Unexecuted instantiation: sk_POLICY_MAPPING_insert
Unexecuted instantiation: sk_X509_ALGOR_insert
Unexecuted instantiation: sk_X509_ATTRIBUTE_insert
Unexecuted instantiation: sk_X509_OBJECT_insert
Unexecuted instantiation: sk_X509_INFO_insert
Unexecuted instantiation: sk_SSL_CIPHER_insert
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_insert
Unexecuted instantiation: sk_SSL_COMP_insert
Unexecuted instantiation: sk_ASN1_VALUE_insert
471
                                                                               \
472
  OPENSSL_INLINE ptrtype sk_##name##_delete(STACK_OF(name) *sk,                \
473
0
                                            size_t where) {                    \
474
0
    return (ptrtype)OPENSSL_sk_delete((OPENSSL_STACK *)sk, where);             \
475
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete
Unexecuted instantiation: sk_OPENSSL_STRING_delete
Unexecuted instantiation: sk_BIO_delete
Unexecuted instantiation: sk_ASN1_INTEGER_delete
Unexecuted instantiation: sk_ASN1_OBJECT_delete
Unexecuted instantiation: sk_ASN1_TYPE_delete
Unexecuted instantiation: sk_CONF_VALUE_delete
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete
Unexecuted instantiation: sk_X509_delete
Unexecuted instantiation: sk_GENERAL_NAME_delete
Unexecuted instantiation: sk_X509_CRL_delete
Unexecuted instantiation: sk_X509_REVOKED_delete
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete
Unexecuted instantiation: sk_X509_NAME_delete
Unexecuted instantiation: sk_X509_EXTENSION_delete
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete
Unexecuted instantiation: sk_DIST_POINT_delete
Unexecuted instantiation: sk_POLICYQUALINFO_delete
Unexecuted instantiation: sk_POLICYINFO_delete
Unexecuted instantiation: sk_POLICY_MAPPING_delete
Unexecuted instantiation: sk_X509_ALGOR_delete
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete
Unexecuted instantiation: sk_X509_OBJECT_delete
Unexecuted instantiation: sk_X509_INFO_delete
Unexecuted instantiation: sk_SSL_CIPHER_delete
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete
Unexecuted instantiation: sk_SSL_COMP_delete
Unexecuted instantiation: sk_ASN1_VALUE_delete
476
                                                                               \
477
  OPENSSL_INLINE ptrtype sk_##name##_delete_ptr(STACK_OF(name) *sk,            \
478
0
                                                constptrtype p) {              \
479
0
    return (ptrtype)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk,                 \
480
0
                                          (const void *)p);                    \
481
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete_ptr
Unexecuted instantiation: sk_OPENSSL_STRING_delete_ptr
Unexecuted instantiation: sk_BIO_delete_ptr
Unexecuted instantiation: sk_ASN1_INTEGER_delete_ptr
Unexecuted instantiation: sk_ASN1_OBJECT_delete_ptr
Unexecuted instantiation: sk_ASN1_TYPE_delete_ptr
Unexecuted instantiation: sk_CONF_VALUE_delete_ptr
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete_ptr
Unexecuted instantiation: sk_X509_delete_ptr
Unexecuted instantiation: sk_GENERAL_NAME_delete_ptr
Unexecuted instantiation: sk_X509_CRL_delete_ptr
Unexecuted instantiation: sk_X509_REVOKED_delete_ptr
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete_ptr
Unexecuted instantiation: sk_X509_NAME_delete_ptr
Unexecuted instantiation: sk_X509_EXTENSION_delete_ptr
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete_ptr
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete_ptr
Unexecuted instantiation: sk_DIST_POINT_delete_ptr
Unexecuted instantiation: sk_POLICYQUALINFO_delete_ptr
Unexecuted instantiation: sk_POLICYINFO_delete_ptr
Unexecuted instantiation: sk_POLICY_MAPPING_delete_ptr
Unexecuted instantiation: sk_X509_ALGOR_delete_ptr
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete_ptr
Unexecuted instantiation: sk_X509_OBJECT_delete_ptr
Unexecuted instantiation: sk_X509_INFO_delete_ptr
Unexecuted instantiation: sk_SSL_CIPHER_delete_ptr
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete_ptr
Unexecuted instantiation: sk_SSL_COMP_delete_ptr
Unexecuted instantiation: sk_ASN1_VALUE_delete_ptr
482
                                                                               \
483
  OPENSSL_INLINE void sk_##name##_delete_if(                                   \
484
0
      STACK_OF(name) *sk, sk_##name##_delete_if_func func, void *data) {       \
485
0
    OPENSSL_sk_delete_if((OPENSSL_STACK *)sk, sk_##name##_call_delete_if_func, \
486
0
                         (OPENSSL_sk_delete_if_func)func, data);               \
487
0
  }                                                                            \
Unexecuted instantiation: sk_void_delete_if
Unexecuted instantiation: sk_OPENSSL_STRING_delete_if
Unexecuted instantiation: sk_BIO_delete_if
Unexecuted instantiation: sk_ASN1_INTEGER_delete_if
Unexecuted instantiation: sk_ASN1_OBJECT_delete_if
Unexecuted instantiation: sk_ASN1_TYPE_delete_if
Unexecuted instantiation: sk_CONF_VALUE_delete_if
Unexecuted instantiation: sk_CRYPTO_BUFFER_delete_if
Unexecuted instantiation: sk_X509_delete_if
Unexecuted instantiation: sk_GENERAL_NAME_delete_if
Unexecuted instantiation: sk_X509_CRL_delete_if
Unexecuted instantiation: sk_X509_REVOKED_delete_if
Unexecuted instantiation: sk_X509_NAME_ENTRY_delete_if
Unexecuted instantiation: sk_X509_NAME_delete_if
Unexecuted instantiation: sk_X509_EXTENSION_delete_if
Unexecuted instantiation: sk_GENERAL_SUBTREE_delete_if
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_delete_if
Unexecuted instantiation: sk_DIST_POINT_delete_if
Unexecuted instantiation: sk_POLICYQUALINFO_delete_if
Unexecuted instantiation: sk_POLICYINFO_delete_if
Unexecuted instantiation: sk_POLICY_MAPPING_delete_if
Unexecuted instantiation: sk_X509_ALGOR_delete_if
Unexecuted instantiation: sk_X509_ATTRIBUTE_delete_if
Unexecuted instantiation: sk_X509_OBJECT_delete_if
Unexecuted instantiation: sk_X509_INFO_delete_if
Unexecuted instantiation: sk_SSL_CIPHER_delete_if
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_delete_if
Unexecuted instantiation: sk_SSL_COMP_delete_if
Unexecuted instantiation: sk_ASN1_VALUE_delete_if
488
                                                                               \
489
  OPENSSL_INLINE int sk_##name##_find(const STACK_OF(name) *sk,                \
490
53.0k
                                      size_t *out_index, constptrtype p) {     \
491
53.0k
    return OPENSSL_sk_find((const OPENSSL_STACK *)sk, out_index,               \
492
53.0k
                           (const void *)p, sk_##name##_call_cmp_func);        \
493
53.0k
  }                                                                            \
Unexecuted instantiation: sk_void_find
Unexecuted instantiation: sk_OPENSSL_STRING_find
Unexecuted instantiation: sk_BIO_find
Unexecuted instantiation: sk_ASN1_INTEGER_find
Unexecuted instantiation: sk_ASN1_OBJECT_find
Unexecuted instantiation: sk_ASN1_TYPE_find
Unexecuted instantiation: sk_CONF_VALUE_find
Unexecuted instantiation: sk_CRYPTO_BUFFER_find
Unexecuted instantiation: sk_X509_find
Unexecuted instantiation: sk_GENERAL_NAME_find
Unexecuted instantiation: sk_X509_CRL_find
Unexecuted instantiation: sk_X509_REVOKED_find
Unexecuted instantiation: sk_X509_NAME_ENTRY_find
Unexecuted instantiation: sk_X509_NAME_find
Unexecuted instantiation: sk_X509_EXTENSION_find
Unexecuted instantiation: sk_GENERAL_SUBTREE_find
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_find
Unexecuted instantiation: sk_DIST_POINT_find
Unexecuted instantiation: sk_POLICYQUALINFO_find
Unexecuted instantiation: sk_POLICYINFO_find
Unexecuted instantiation: sk_POLICY_MAPPING_find
Unexecuted instantiation: sk_X509_ALGOR_find
Unexecuted instantiation: sk_X509_ATTRIBUTE_find
Unexecuted instantiation: sk_X509_OBJECT_find
Unexecuted instantiation: sk_X509_INFO_find
sk_SSL_CIPHER_find
Line
Count
Source
490
53.0k
                                      size_t *out_index, constptrtype p) {     \
491
53.0k
    return OPENSSL_sk_find((const OPENSSL_STACK *)sk, out_index,               \
492
53.0k
                           (const void *)p, sk_##name##_call_cmp_func);        \
493
53.0k
  }                                                                            \
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_find
Unexecuted instantiation: sk_SSL_COMP_find
Unexecuted instantiation: sk_ASN1_VALUE_find
494
                                                                               \
495
0
  OPENSSL_INLINE ptrtype sk_##name##_shift(STACK_OF(name) *sk) {               \
496
0
    return (ptrtype)OPENSSL_sk_shift((OPENSSL_STACK *)sk);                     \
497
0
  }                                                                            \
Unexecuted instantiation: sk_void_shift
Unexecuted instantiation: sk_OPENSSL_STRING_shift
Unexecuted instantiation: sk_BIO_shift
Unexecuted instantiation: sk_ASN1_INTEGER_shift
Unexecuted instantiation: sk_ASN1_OBJECT_shift
Unexecuted instantiation: sk_ASN1_TYPE_shift
Unexecuted instantiation: sk_CONF_VALUE_shift
Unexecuted instantiation: sk_CRYPTO_BUFFER_shift
Unexecuted instantiation: sk_X509_shift
Unexecuted instantiation: sk_GENERAL_NAME_shift
Unexecuted instantiation: sk_X509_CRL_shift
Unexecuted instantiation: sk_X509_REVOKED_shift
Unexecuted instantiation: sk_X509_NAME_ENTRY_shift
Unexecuted instantiation: sk_X509_NAME_shift
Unexecuted instantiation: sk_X509_EXTENSION_shift
Unexecuted instantiation: sk_GENERAL_SUBTREE_shift
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_shift
Unexecuted instantiation: sk_DIST_POINT_shift
Unexecuted instantiation: sk_POLICYQUALINFO_shift
Unexecuted instantiation: sk_POLICYINFO_shift
Unexecuted instantiation: sk_POLICY_MAPPING_shift
Unexecuted instantiation: sk_X509_ALGOR_shift
Unexecuted instantiation: sk_X509_ATTRIBUTE_shift
Unexecuted instantiation: sk_X509_OBJECT_shift
Unexecuted instantiation: sk_X509_INFO_shift
Unexecuted instantiation: sk_SSL_CIPHER_shift
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_shift
Unexecuted instantiation: sk_SSL_COMP_shift
Unexecuted instantiation: sk_ASN1_VALUE_shift
498
                                                                               \
499
862k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
862k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
862k
  }                                                                            \
sk_void_push
Line
Count
Source
499
8.16k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
8.16k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
8.16k
  }                                                                            \
Unexecuted instantiation: sk_OPENSSL_STRING_push
Unexecuted instantiation: sk_BIO_push
Unexecuted instantiation: sk_ASN1_INTEGER_push
Unexecuted instantiation: sk_ASN1_OBJECT_push
Unexecuted instantiation: sk_ASN1_TYPE_push
sk_CONF_VALUE_push
Line
Count
Source
499
21.8k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
21.8k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
21.8k
  }                                                                            \
sk_CRYPTO_BUFFER_push
Line
Count
Source
499
753
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
753
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
753
  }                                                                            \
sk_X509_push
Line
Count
Source
499
7
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
7
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
7
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_push
Unexecuted instantiation: sk_X509_CRL_push
Unexecuted instantiation: sk_X509_REVOKED_push
Unexecuted instantiation: sk_X509_NAME_ENTRY_push
Unexecuted instantiation: sk_X509_NAME_push
Unexecuted instantiation: sk_X509_EXTENSION_push
Unexecuted instantiation: sk_GENERAL_SUBTREE_push
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_push
Unexecuted instantiation: sk_DIST_POINT_push
Unexecuted instantiation: sk_POLICYQUALINFO_push
Unexecuted instantiation: sk_POLICYINFO_push
Unexecuted instantiation: sk_POLICY_MAPPING_push
Unexecuted instantiation: sk_X509_ALGOR_push
Unexecuted instantiation: sk_X509_ATTRIBUTE_push
Unexecuted instantiation: sk_X509_OBJECT_push
Unexecuted instantiation: sk_X509_INFO_push
sk_SSL_CIPHER_push
Line
Count
Source
499
191k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
191k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
191k
  }                                                                            \
sk_SRTP_PROTECTION_PROFILE_push
Line
Count
Source
499
1.08k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
1.08k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
1.08k
  }                                                                            \
Unexecuted instantiation: sk_SSL_COMP_push
sk_ASN1_VALUE_push
Line
Count
Source
499
639k
  OPENSSL_INLINE size_t sk_##name##_push(STACK_OF(name) *sk, ptrtype p) {      \
500
639k
    return OPENSSL_sk_push((OPENSSL_STACK *)sk, (void *)p);                    \
501
639k
  }                                                                            \
502
                                                                               \
503
19.8k
  OPENSSL_INLINE ptrtype sk_##name##_pop(STACK_OF(name) *sk) {                 \
504
19.8k
    return (ptrtype)OPENSSL_sk_pop((OPENSSL_STACK *)sk);                       \
505
19.8k
  }                                                                            \
Unexecuted instantiation: sk_void_pop
Unexecuted instantiation: sk_OPENSSL_STRING_pop
Unexecuted instantiation: sk_BIO_pop
Unexecuted instantiation: sk_ASN1_INTEGER_pop
Unexecuted instantiation: sk_ASN1_OBJECT_pop
Unexecuted instantiation: sk_ASN1_TYPE_pop
Unexecuted instantiation: sk_CONF_VALUE_pop
sk_CRYPTO_BUFFER_pop
Line
Count
Source
503
19.8k
  OPENSSL_INLINE ptrtype sk_##name##_pop(STACK_OF(name) *sk) {                 \
504
19.8k
    return (ptrtype)OPENSSL_sk_pop((OPENSSL_STACK *)sk);                       \
505
19.8k
  }                                                                            \
Unexecuted instantiation: sk_X509_pop
Unexecuted instantiation: sk_GENERAL_NAME_pop
Unexecuted instantiation: sk_X509_CRL_pop
Unexecuted instantiation: sk_X509_REVOKED_pop
Unexecuted instantiation: sk_X509_NAME_ENTRY_pop
Unexecuted instantiation: sk_X509_NAME_pop
Unexecuted instantiation: sk_X509_EXTENSION_pop
Unexecuted instantiation: sk_GENERAL_SUBTREE_pop
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_pop
Unexecuted instantiation: sk_DIST_POINT_pop
Unexecuted instantiation: sk_POLICYQUALINFO_pop
Unexecuted instantiation: sk_POLICYINFO_pop
Unexecuted instantiation: sk_POLICY_MAPPING_pop
Unexecuted instantiation: sk_X509_ALGOR_pop
Unexecuted instantiation: sk_X509_ATTRIBUTE_pop
Unexecuted instantiation: sk_X509_OBJECT_pop
Unexecuted instantiation: sk_X509_INFO_pop
Unexecuted instantiation: sk_SSL_CIPHER_pop
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_pop
Unexecuted instantiation: sk_SSL_COMP_pop
Unexecuted instantiation: sk_ASN1_VALUE_pop
506
                                                                               \
507
0
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_dup(const STACK_OF(name) *sk) {   \
508
0
    return (STACK_OF(name) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk);        \
509
0
  }                                                                            \
Unexecuted instantiation: sk_void_dup
Unexecuted instantiation: sk_OPENSSL_STRING_dup
Unexecuted instantiation: sk_BIO_dup
Unexecuted instantiation: sk_ASN1_INTEGER_dup
Unexecuted instantiation: sk_ASN1_OBJECT_dup
Unexecuted instantiation: sk_ASN1_TYPE_dup
Unexecuted instantiation: sk_CONF_VALUE_dup
Unexecuted instantiation: sk_CRYPTO_BUFFER_dup
Unexecuted instantiation: sk_X509_dup
Unexecuted instantiation: sk_GENERAL_NAME_dup
Unexecuted instantiation: sk_X509_CRL_dup
Unexecuted instantiation: sk_X509_REVOKED_dup
Unexecuted instantiation: sk_X509_NAME_ENTRY_dup
Unexecuted instantiation: sk_X509_NAME_dup
Unexecuted instantiation: sk_X509_EXTENSION_dup
Unexecuted instantiation: sk_GENERAL_SUBTREE_dup
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_dup
Unexecuted instantiation: sk_DIST_POINT_dup
Unexecuted instantiation: sk_POLICYQUALINFO_dup
Unexecuted instantiation: sk_POLICYINFO_dup
Unexecuted instantiation: sk_POLICY_MAPPING_dup
Unexecuted instantiation: sk_X509_ALGOR_dup
Unexecuted instantiation: sk_X509_ATTRIBUTE_dup
Unexecuted instantiation: sk_X509_OBJECT_dup
Unexecuted instantiation: sk_X509_INFO_dup
Unexecuted instantiation: sk_SSL_CIPHER_dup
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_dup
Unexecuted instantiation: sk_SSL_COMP_dup
Unexecuted instantiation: sk_ASN1_VALUE_dup
510
                                                                               \
511
0
  OPENSSL_INLINE void sk_##name##_sort(STACK_OF(name) *sk) {                   \
512
0
    OPENSSL_sk_sort((OPENSSL_STACK *)sk, sk_##name##_call_cmp_func);           \
513
0
  }                                                                            \
Unexecuted instantiation: sk_void_sort
Unexecuted instantiation: sk_OPENSSL_STRING_sort
Unexecuted instantiation: sk_BIO_sort
Unexecuted instantiation: sk_ASN1_INTEGER_sort
Unexecuted instantiation: sk_ASN1_OBJECT_sort
Unexecuted instantiation: sk_ASN1_TYPE_sort
Unexecuted instantiation: sk_CONF_VALUE_sort
Unexecuted instantiation: sk_CRYPTO_BUFFER_sort
Unexecuted instantiation: sk_X509_sort
Unexecuted instantiation: sk_GENERAL_NAME_sort
Unexecuted instantiation: sk_X509_CRL_sort
Unexecuted instantiation: sk_X509_REVOKED_sort
Unexecuted instantiation: sk_X509_NAME_ENTRY_sort
Unexecuted instantiation: sk_X509_NAME_sort
Unexecuted instantiation: sk_X509_EXTENSION_sort
Unexecuted instantiation: sk_GENERAL_SUBTREE_sort
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_sort
Unexecuted instantiation: sk_DIST_POINT_sort
Unexecuted instantiation: sk_POLICYQUALINFO_sort
Unexecuted instantiation: sk_POLICYINFO_sort
Unexecuted instantiation: sk_POLICY_MAPPING_sort
Unexecuted instantiation: sk_X509_ALGOR_sort
Unexecuted instantiation: sk_X509_ATTRIBUTE_sort
Unexecuted instantiation: sk_X509_OBJECT_sort
Unexecuted instantiation: sk_X509_INFO_sort
Unexecuted instantiation: sk_SSL_CIPHER_sort
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_sort
Unexecuted instantiation: sk_SSL_COMP_sort
Unexecuted instantiation: sk_ASN1_VALUE_sort
514
                                                                               \
515
  OPENSSL_INLINE void sk_##name##_sort_and_dedup(                              \
516
0
      STACK_OF(name) *sk, sk_##name##_free_func free_func) {                   \
517
0
    OPENSSL_sk_sort_and_dedup((OPENSSL_STACK *)sk, sk_##name##_call_cmp_func,  \
518
0
                              sk_##name##_call_free_func,                      \
519
0
                              (OPENSSL_sk_free_func)free_func);                \
520
0
  }                                                                            \
Unexecuted instantiation: sk_void_sort_and_dedup
Unexecuted instantiation: sk_OPENSSL_STRING_sort_and_dedup
Unexecuted instantiation: sk_BIO_sort_and_dedup
Unexecuted instantiation: sk_ASN1_INTEGER_sort_and_dedup
Unexecuted instantiation: sk_ASN1_OBJECT_sort_and_dedup
Unexecuted instantiation: sk_ASN1_TYPE_sort_and_dedup
Unexecuted instantiation: sk_CONF_VALUE_sort_and_dedup
Unexecuted instantiation: sk_CRYPTO_BUFFER_sort_and_dedup
Unexecuted instantiation: sk_X509_sort_and_dedup
Unexecuted instantiation: sk_GENERAL_NAME_sort_and_dedup
Unexecuted instantiation: sk_X509_CRL_sort_and_dedup
Unexecuted instantiation: sk_X509_REVOKED_sort_and_dedup
Unexecuted instantiation: sk_X509_NAME_ENTRY_sort_and_dedup
Unexecuted instantiation: sk_X509_NAME_sort_and_dedup
Unexecuted instantiation: sk_X509_EXTENSION_sort_and_dedup
Unexecuted instantiation: sk_GENERAL_SUBTREE_sort_and_dedup
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_sort_and_dedup
Unexecuted instantiation: sk_DIST_POINT_sort_and_dedup
Unexecuted instantiation: sk_POLICYQUALINFO_sort_and_dedup
Unexecuted instantiation: sk_POLICYINFO_sort_and_dedup
Unexecuted instantiation: sk_POLICY_MAPPING_sort_and_dedup
Unexecuted instantiation: sk_X509_ALGOR_sort_and_dedup
Unexecuted instantiation: sk_X509_ATTRIBUTE_sort_and_dedup
Unexecuted instantiation: sk_X509_OBJECT_sort_and_dedup
Unexecuted instantiation: sk_X509_INFO_sort_and_dedup
Unexecuted instantiation: sk_SSL_CIPHER_sort_and_dedup
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_sort_and_dedup
Unexecuted instantiation: sk_SSL_COMP_sort_and_dedup
Unexecuted instantiation: sk_ASN1_VALUE_sort_and_dedup
521
                                                                               \
522
0
  OPENSSL_INLINE int sk_##name##_is_sorted(const STACK_OF(name) *sk) {         \
523
0
    return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk);                    \
524
0
  }                                                                            \
Unexecuted instantiation: sk_void_is_sorted
Unexecuted instantiation: sk_OPENSSL_STRING_is_sorted
Unexecuted instantiation: sk_BIO_is_sorted
Unexecuted instantiation: sk_ASN1_INTEGER_is_sorted
Unexecuted instantiation: sk_ASN1_OBJECT_is_sorted
Unexecuted instantiation: sk_ASN1_TYPE_is_sorted
Unexecuted instantiation: sk_CONF_VALUE_is_sorted
Unexecuted instantiation: sk_CRYPTO_BUFFER_is_sorted
Unexecuted instantiation: sk_X509_is_sorted
Unexecuted instantiation: sk_GENERAL_NAME_is_sorted
Unexecuted instantiation: sk_X509_CRL_is_sorted
Unexecuted instantiation: sk_X509_REVOKED_is_sorted
Unexecuted instantiation: sk_X509_NAME_ENTRY_is_sorted
Unexecuted instantiation: sk_X509_NAME_is_sorted
Unexecuted instantiation: sk_X509_EXTENSION_is_sorted
Unexecuted instantiation: sk_GENERAL_SUBTREE_is_sorted
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_is_sorted
Unexecuted instantiation: sk_DIST_POINT_is_sorted
Unexecuted instantiation: sk_POLICYQUALINFO_is_sorted
Unexecuted instantiation: sk_POLICYINFO_is_sorted
Unexecuted instantiation: sk_POLICY_MAPPING_is_sorted
Unexecuted instantiation: sk_X509_ALGOR_is_sorted
Unexecuted instantiation: sk_X509_ATTRIBUTE_is_sorted
Unexecuted instantiation: sk_X509_OBJECT_is_sorted
Unexecuted instantiation: sk_X509_INFO_is_sorted
Unexecuted instantiation: sk_SSL_CIPHER_is_sorted
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_is_sorted
Unexecuted instantiation: sk_SSL_COMP_is_sorted
Unexecuted instantiation: sk_ASN1_VALUE_is_sorted
525
                                                                               \
526
  OPENSSL_INLINE sk_##name##_cmp_func sk_##name##_set_cmp_func(                \
527
0
      STACK_OF(name) *sk, sk_##name##_cmp_func comp) {                         \
528
0
    return (sk_##name##_cmp_func)OPENSSL_sk_set_cmp_func(                      \
529
0
        (OPENSSL_STACK *)sk, (OPENSSL_sk_cmp_func)comp);                       \
530
0
  }                                                                            \
Unexecuted instantiation: sk_void_set_cmp_func
Unexecuted instantiation: sk_OPENSSL_STRING_set_cmp_func
Unexecuted instantiation: sk_BIO_set_cmp_func
Unexecuted instantiation: sk_ASN1_INTEGER_set_cmp_func
Unexecuted instantiation: sk_ASN1_OBJECT_set_cmp_func
Unexecuted instantiation: sk_ASN1_TYPE_set_cmp_func
Unexecuted instantiation: sk_CONF_VALUE_set_cmp_func
Unexecuted instantiation: sk_CRYPTO_BUFFER_set_cmp_func
Unexecuted instantiation: sk_X509_set_cmp_func
Unexecuted instantiation: sk_GENERAL_NAME_set_cmp_func
Unexecuted instantiation: sk_X509_CRL_set_cmp_func
Unexecuted instantiation: sk_X509_REVOKED_set_cmp_func
Unexecuted instantiation: sk_X509_NAME_ENTRY_set_cmp_func
Unexecuted instantiation: sk_X509_NAME_set_cmp_func
Unexecuted instantiation: sk_X509_EXTENSION_set_cmp_func
Unexecuted instantiation: sk_GENERAL_SUBTREE_set_cmp_func
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_set_cmp_func
Unexecuted instantiation: sk_DIST_POINT_set_cmp_func
Unexecuted instantiation: sk_POLICYQUALINFO_set_cmp_func
Unexecuted instantiation: sk_POLICYINFO_set_cmp_func
Unexecuted instantiation: sk_POLICY_MAPPING_set_cmp_func
Unexecuted instantiation: sk_X509_ALGOR_set_cmp_func
Unexecuted instantiation: sk_X509_ATTRIBUTE_set_cmp_func
Unexecuted instantiation: sk_X509_OBJECT_set_cmp_func
Unexecuted instantiation: sk_X509_INFO_set_cmp_func
Unexecuted instantiation: sk_SSL_CIPHER_set_cmp_func
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_set_cmp_func
Unexecuted instantiation: sk_SSL_COMP_set_cmp_func
Unexecuted instantiation: sk_ASN1_VALUE_set_cmp_func
531
                                                                               \
532
  OPENSSL_INLINE STACK_OF(name) *sk_##name##_deep_copy(                        \
533
      const STACK_OF(name) *sk, sk_##name##_copy_func copy_func,               \
534
204k
      sk_##name##_free_func free_func) {                                       \
535
204k
    return (STACK_OF(name) *)OPENSSL_sk_deep_copy(                             \
536
204k
        (const OPENSSL_STACK *)sk, sk_##name##_call_copy_func,                 \
537
204k
        (OPENSSL_sk_copy_func)copy_func, sk_##name##_call_free_func,           \
538
204k
        (OPENSSL_sk_free_func)free_func);                                      \
539
204k
  }                                                                            \
Unexecuted instantiation: sk_void_deep_copy
Unexecuted instantiation: sk_OPENSSL_STRING_deep_copy
Unexecuted instantiation: sk_BIO_deep_copy
Unexecuted instantiation: sk_ASN1_INTEGER_deep_copy
Unexecuted instantiation: sk_ASN1_OBJECT_deep_copy
Unexecuted instantiation: sk_ASN1_TYPE_deep_copy
Unexecuted instantiation: sk_CONF_VALUE_deep_copy
sk_CRYPTO_BUFFER_deep_copy
Line
Count
Source
534
159k
      sk_##name##_free_func free_func) {                                       \
535
159k
    return (STACK_OF(name) *)OPENSSL_sk_deep_copy(                             \
536
159k
        (const OPENSSL_STACK *)sk, sk_##name##_call_copy_func,                 \
537
159k
        (OPENSSL_sk_copy_func)copy_func, sk_##name##_call_free_func,           \
538
159k
        (OPENSSL_sk_free_func)free_func);                                      \
539
159k
  }                                                                            \
sk_X509_deep_copy
Line
Count
Source
534
45.7k
      sk_##name##_free_func free_func) {                                       \
535
45.7k
    return (STACK_OF(name) *)OPENSSL_sk_deep_copy(                             \
536
45.7k
        (const OPENSSL_STACK *)sk, sk_##name##_call_copy_func,                 \
537
45.7k
        (OPENSSL_sk_copy_func)copy_func, sk_##name##_call_free_func,           \
538
45.7k
        (OPENSSL_sk_free_func)free_func);                                      \
539
45.7k
  }                                                                            \
Unexecuted instantiation: sk_GENERAL_NAME_deep_copy
Unexecuted instantiation: sk_X509_CRL_deep_copy
Unexecuted instantiation: sk_X509_REVOKED_deep_copy
sk_X509_NAME_ENTRY_deep_copy
Line
Count
Source
534
10
      sk_##name##_free_func free_func) {                                       \
535
10
    return (STACK_OF(name) *)OPENSSL_sk_deep_copy(                             \
536
10
        (const OPENSSL_STACK *)sk, sk_##name##_call_copy_func,                 \
537
10
        (OPENSSL_sk_copy_func)copy_func, sk_##name##_call_free_func,           \
538
10
        (OPENSSL_sk_free_func)free_func);                                      \
539
10
  }                                                                            \
Unexecuted instantiation: sk_X509_NAME_deep_copy
Unexecuted instantiation: sk_X509_EXTENSION_deep_copy
Unexecuted instantiation: sk_GENERAL_SUBTREE_deep_copy
Unexecuted instantiation: sk_ACCESS_DESCRIPTION_deep_copy
Unexecuted instantiation: sk_DIST_POINT_deep_copy
Unexecuted instantiation: sk_POLICYQUALINFO_deep_copy
Unexecuted instantiation: sk_POLICYINFO_deep_copy
Unexecuted instantiation: sk_POLICY_MAPPING_deep_copy
Unexecuted instantiation: sk_X509_ALGOR_deep_copy
Unexecuted instantiation: sk_X509_ATTRIBUTE_deep_copy
Unexecuted instantiation: sk_X509_OBJECT_deep_copy
Unexecuted instantiation: sk_X509_INFO_deep_copy
Unexecuted instantiation: sk_SSL_CIPHER_deep_copy
Unexecuted instantiation: sk_SRTP_PROTECTION_PROFILE_deep_copy
Unexecuted instantiation: sk_SSL_COMP_deep_copy
Unexecuted instantiation: sk_ASN1_VALUE_deep_copy
540
                                                                               \
541
  OPENSSL_GNUC_CLANG_PRAGMA("GCC diagnostic pop")                              \
542
  OPENSSL_MSVC_PRAGMA(warning(pop))
543
544
545
// Built-in stacks.
546
547
typedef char *OPENSSL_STRING;
548
549
DEFINE_STACK_OF(void)
550
DEFINE_NAMED_STACK_OF(OPENSSL_STRING, char)
551
552
553
#if defined(__cplusplus)
554
}  // extern C
555
#endif
556
557
#if !defined(BORINGSSL_NO_CXX)
558
// Work around consumers including our headers under extern "C".
559
extern "C++" {
560
561
#include <type_traits>
562
563
BSSL_NAMESPACE_BEGIN
564
565
namespace internal {
566
567
// Stacks defined with `DEFINE_CONST_STACK_OF` are freed with `sk_free`.
568
template <typename Stack>
569
struct DeleterImpl<Stack, std::enable_if_t<StackTraits<Stack>::kIsConst>> {
570
32.2k
  static void Free(Stack *sk) {
571
32.2k
    OPENSSL_sk_free(reinterpret_cast<OPENSSL_STACK *>(sk));
572
32.2k
  }
bssl::internal::DeleterImpl<stack_st_SSL_CIPHER, void>::Free(stack_st_SSL_CIPHER*)
Line
Count
Source
570
28.0k
  static void Free(Stack *sk) {
571
28.0k
    OPENSSL_sk_free(reinterpret_cast<OPENSSL_STACK *>(sk));
572
28.0k
  }
bssl::internal::DeleterImpl<stack_st_SRTP_PROTECTION_PROFILE, void>::Free(stack_st_SRTP_PROTECTION_PROFILE*)
Line
Count
Source
570
4.25k
  static void Free(Stack *sk) {
571
4.25k
    OPENSSL_sk_free(reinterpret_cast<OPENSSL_STACK *>(sk));
572
4.25k
  }
573
};
574
575
// Stacks defined with `DEFINE_STACK_OF` are freed with `sk_pop_free` and the
576
// corresponding type's deleter.
577
template <typename Stack>
578
struct DeleterImpl<Stack, std::enable_if_t<!StackTraits<Stack>::kIsConst>> {
579
698k
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
698k
    using Type = typename StackTraits<Stack>::Type;
583
698k
    OPENSSL_sk_pop_free_ex(
584
698k
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
1.14M
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
1.14M
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
1.14M
        },
bssl::internal::DeleterImpl<stack_st_CRYPTO_BUFFER, void>::Free(stack_st_CRYPTO_BUFFER*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
585
391k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
391k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
391k
        },
bssl::internal::DeleterImpl<stack_st_X509, void>::Free(stack_st_X509*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
585
1.19k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
1.19k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
1.19k
        },
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_NAME, void>::Free(stack_st_X509_NAME*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_OBJECT, void>::Free(stack_st_X509_OBJECT*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
bssl::internal::DeleterImpl<stack_st_X509_NAME_ENTRY, void>::Free(stack_st_X509_NAME_ENTRY*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
585
737k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
737k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
737k
        },
bssl::internal::DeleterImpl<stack_st_DIST_POINT, void>::Free(stack_st_DIST_POINT*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
585
220
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
220
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
220
        },
bssl::internal::DeleterImpl<stack_st_GENERAL_NAME, void>::Free(stack_st_GENERAL_NAME*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Line
Count
Source
585
12.5k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
12.5k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
12.5k
        },
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_POLICYINFO, void>::Free(stack_st_POLICYINFO*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_POLICY_MAPPING, void>::Free(stack_st_POLICY_MAPPING*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_CONF_VALUE, void>::Free(stack_st_CONF_VALUE*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_OPENSSL_STRING, void>::Free(stack_st_OPENSSL_STRING*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_ACCESS_DESCRIPTION, void>::Free(stack_st_ACCESS_DESCRIPTION*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_EXTENSION, void>::Free(stack_st_X509_EXTENSION*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) const
588
698k
        nullptr);
589
698k
  }
bssl::internal::DeleterImpl<stack_st_CRYPTO_BUFFER, void>::Free(stack_st_CRYPTO_BUFFER*)
Line
Count
Source
579
308k
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
308k
    using Type = typename StackTraits<Stack>::Type;
583
308k
    OPENSSL_sk_pop_free_ex(
584
308k
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
308k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
308k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
308k
        },
588
308k
        nullptr);
589
308k
  }
bssl::internal::DeleterImpl<stack_st_X509, void>::Free(stack_st_X509*)
Line
Count
Source
579
17.4k
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
17.4k
    using Type = typename StackTraits<Stack>::Type;
583
17.4k
    OPENSSL_sk_pop_free_ex(
584
17.4k
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
17.4k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
17.4k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
17.4k
        },
588
17.4k
        nullptr);
589
17.4k
  }
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_NAME, void>::Free(stack_st_X509_NAME*)
bssl::internal::DeleterImpl<stack_st_X509_OBJECT, void>::Free(stack_st_X509_OBJECT*)
Line
Count
Source
579
5.12k
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
5.12k
    using Type = typename StackTraits<Stack>::Type;
583
5.12k
    OPENSSL_sk_pop_free_ex(
584
5.12k
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
5.12k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
5.12k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
5.12k
        },
588
5.12k
        nullptr);
589
5.12k
  }
bssl::internal::DeleterImpl<stack_st_X509_NAME_ENTRY, void>::Free(stack_st_X509_NAME_ENTRY*)
Line
Count
Source
579
366k
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
366k
    using Type = typename StackTraits<Stack>::Type;
583
366k
    OPENSSL_sk_pop_free_ex(
584
366k
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
366k
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
366k
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
366k
        },
588
366k
        nullptr);
589
366k
  }
bssl::internal::DeleterImpl<stack_st_DIST_POINT, void>::Free(stack_st_DIST_POINT*)
Line
Count
Source
579
189
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
189
    using Type = typename StackTraits<Stack>::Type;
583
189
    OPENSSL_sk_pop_free_ex(
584
189
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
189
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
189
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
189
        },
588
189
        nullptr);
589
189
  }
bssl::internal::DeleterImpl<stack_st_GENERAL_NAME, void>::Free(stack_st_GENERAL_NAME*)
Line
Count
Source
579
133
  static void Free(Stack *sk) {
580
    // sk_FOO_pop_free is defined by macros and bound by name, so we cannot
581
    // access it from C++ here.
582
133
    using Type = typename StackTraits<Stack>::Type;
583
133
    OPENSSL_sk_pop_free_ex(
584
133
        reinterpret_cast<OPENSSL_STACK *>(sk),
585
133
        [](OPENSSL_sk_free_func /* unused */, void *ptr) {
586
133
          DeleterImpl<Type>::Free(reinterpret_cast<Type *>(ptr));
587
133
        },
588
133
        nullptr);
589
133
  }
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_POLICYINFO, void>::Free(stack_st_POLICYINFO*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_POLICY_MAPPING, void>::Free(stack_st_POLICY_MAPPING*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_CONF_VALUE, void>::Free(stack_st_CONF_VALUE*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_OPENSSL_STRING, void>::Free(stack_st_OPENSSL_STRING*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_ACCESS_DESCRIPTION, void>::Free(stack_st_ACCESS_DESCRIPTION*)
Unexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_EXTENSION, void>::Free(stack_st_X509_EXTENSION*)
590
};
591
592
template <typename Stack>
593
class StackIteratorImpl {
594
 public:
595
  using Type = typename StackTraits<Stack>::Type;
596
  // Iterators must be default-constructable.
597
  StackIteratorImpl() : sk_(nullptr), idx_(0) {}
598
2.04M
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::StackIteratorImpl(stack_st_SRTP_PROTECTION_PROFILE const*, unsigned long)
Line
Count
Source
598
14
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::StackIteratorImpl(stack_st_SSL_CIPHER const*, unsigned long)
Line
Count
Source
598
105k
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::StackIteratorImpl(stack_st_CRYPTO_BUFFER const*, unsigned long)
Line
Count
Source
598
353k
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
bssl::internal::StackIteratorImpl<stack_st_X509>::StackIteratorImpl(stack_st_X509 const*, unsigned long)
Line
Count
Source
598
150k
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::StackIteratorImpl(stack_st_X509_NAME const*, unsigned long)
bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>::StackIteratorImpl(stack_st_X509_NAME_ENTRY const*, unsigned long)
Line
Count
Source
598
1.43M
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>::StackIteratorImpl(stack_st_POLICYINFO const*, unsigned long)
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>::StackIteratorImpl(stack_st_POLICY_MAPPING const*, unsigned long)
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>::StackIteratorImpl(stack_st_ASN1_OBJECT const*, unsigned long)
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>::StackIteratorImpl(stack_st_CONF_VALUE const*, unsigned long)
bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>::StackIteratorImpl(stack_st_GENERAL_SUBTREE const*, unsigned long)
Line
Count
Source
598
424
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>::StackIteratorImpl(stack_st_GENERAL_NAME const*, unsigned long)
Line
Count
Source
598
20
  StackIteratorImpl(const Stack *sk, size_t idx) : sk_(sk), idx_(idx) {}
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>::StackIteratorImpl(stack_st_ACCESS_DESCRIPTION const*, unsigned long)
599
600
3.69M
  bool operator==(StackIteratorImpl other) const {
601
3.69M
    return sk_ == other.sk_ && idx_ == other.idx_;
602
3.69M
  }
bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator==(bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>) const
Line
Count
Source
600
7
  bool operator==(StackIteratorImpl other) const {
601
7
    return sk_ == other.sk_ && idx_ == other.idx_;
602
7
  }
bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator==(bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>) const
Line
Count
Source
600
1.11M
  bool operator==(StackIteratorImpl other) const {
601
1.11M
    return sk_ == other.sk_ && idx_ == other.idx_;
602
1.11M
  }
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator==(bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>) const
Line
Count
Source
600
308k
  bool operator==(StackIteratorImpl other) const {
601
308k
    return sk_ == other.sk_ && idx_ == other.idx_;
602
308k
  }
bssl::internal::StackIteratorImpl<stack_st_X509>::operator==(bssl::internal::StackIteratorImpl<stack_st_X509>) const
Line
Count
Source
600
88.9k
  bool operator==(StackIteratorImpl other) const {
601
88.9k
    return sk_ == other.sk_ && idx_ == other.idx_;
602
88.9k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator==(bssl::internal::StackIteratorImpl<stack_st_X509_NAME>) const
bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>::operator==(bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>) const
Line
Count
Source
600
2.18M
  bool operator==(StackIteratorImpl other) const {
601
2.18M
    return sk_ == other.sk_ && idx_ == other.idx_;
602
2.18M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>::operator==(bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>::operator==(bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>::operator==(bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>::operator==(bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>) const
bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>::operator==(bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>) const
Line
Count
Source
600
464
  bool operator==(StackIteratorImpl other) const {
601
464
    return sk_ == other.sk_ && idx_ == other.idx_;
602
464
  }
bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>::operator==(bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>) const
Line
Count
Source
600
37
  bool operator==(StackIteratorImpl other) const {
601
37
    return sk_ == other.sk_ && idx_ == other.idx_;
602
37
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>::operator==(bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>) const
603
3.69M
  bool operator!=(StackIteratorImpl other) const {
604
3.69M
    return !(*this == other);
605
3.69M
  }
bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator!=(bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>) const
Line
Count
Source
603
7
  bool operator!=(StackIteratorImpl other) const {
604
7
    return !(*this == other);
605
7
  }
bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator!=(bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>) const
Line
Count
Source
603
1.11M
  bool operator!=(StackIteratorImpl other) const {
604
1.11M
    return !(*this == other);
605
1.11M
  }
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator!=(bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>) const
Line
Count
Source
603
308k
  bool operator!=(StackIteratorImpl other) const {
604
308k
    return !(*this == other);
605
308k
  }
bssl::internal::StackIteratorImpl<stack_st_X509>::operator!=(bssl::internal::StackIteratorImpl<stack_st_X509>) const
Line
Count
Source
603
88.9k
  bool operator!=(StackIteratorImpl other) const {
604
88.9k
    return !(*this == other);
605
88.9k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator!=(bssl::internal::StackIteratorImpl<stack_st_X509_NAME>) const
bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>::operator!=(bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>) const
Line
Count
Source
603
2.18M
  bool operator!=(StackIteratorImpl other) const {
604
2.18M
    return !(*this == other);
605
2.18M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>::operator!=(bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>::operator!=(bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>::operator!=(bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>) const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>::operator!=(bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>) const
bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>::operator!=(bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>) const
Line
Count
Source
603
464
  bool operator!=(StackIteratorImpl other) const {
604
464
    return !(*this == other);
605
464
  }
bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>::operator!=(bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>) const
Line
Count
Source
603
37
  bool operator!=(StackIteratorImpl other) const {
604
37
    return !(*this == other);
605
37
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>::operator!=(bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>) const
606
607
2.68M
  Type *operator*() const {
608
2.68M
    return reinterpret_cast<Type *>(
609
2.68M
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
2.68M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator*() const
bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator*() const
Line
Count
Source
607
1.05M
  Type *operator*() const {
608
1.05M
    return reinterpret_cast<Type *>(
609
1.05M
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
1.05M
  }
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator*() const
Line
Count
Source
607
140k
  Type *operator*() const {
608
140k
    return reinterpret_cast<Type *>(
609
140k
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
140k
  }
bssl::internal::StackIteratorImpl<stack_st_X509>::operator*() const
Line
Count
Source
607
13.6k
  Type *operator*() const {
608
13.6k
    return reinterpret_cast<Type *>(
609
13.6k
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
13.6k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator*() const
bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>::operator*() const
Line
Count
Source
607
1.46M
  Type *operator*() const {
608
1.46M
    return reinterpret_cast<Type *>(
609
1.46M
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
1.46M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>::operator*() const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>::operator*() const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>::operator*() const
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>::operator*() const
bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>::operator*() const
Line
Count
Source
607
252
  Type *operator*() const {
608
252
    return reinterpret_cast<Type *>(
609
252
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
252
  }
bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>::operator*() const
Line
Count
Source
607
30
  Type *operator*() const {
608
30
    return reinterpret_cast<Type *>(
609
30
        OPENSSL_sk_value(reinterpret_cast<const OPENSSL_STACK *>(sk_), idx_));
610
30
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>::operator*() const
611
612
2.67M
  StackIteratorImpl &operator++(/* prefix */) {
613
2.67M
    idx_++;
614
2.67M
    return *this;
615
2.67M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_SRTP_PROTECTION_PROFILE>::operator++()
bssl::internal::StackIteratorImpl<stack_st_SSL_CIPHER>::operator++()
Line
Count
Source
612
1.05M
  StackIteratorImpl &operator++(/* prefix */) {
613
1.05M
    idx_++;
614
1.05M
    return *this;
615
1.05M
  }
bssl::internal::StackIteratorImpl<stack_st_CRYPTO_BUFFER>::operator++()
Line
Count
Source
612
131k
  StackIteratorImpl &operator++(/* prefix */) {
613
131k
    idx_++;
614
131k
    return *this;
615
131k
  }
bssl::internal::StackIteratorImpl<stack_st_X509>::operator++()
Line
Count
Source
612
13.6k
  StackIteratorImpl &operator++(/* prefix */) {
613
13.6k
    idx_++;
614
13.6k
    return *this;
615
13.6k
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_X509_NAME>::operator++()
bssl::internal::StackIteratorImpl<stack_st_X509_NAME_ENTRY>::operator++()
Line
Count
Source
612
1.46M
  StackIteratorImpl &operator++(/* prefix */) {
613
1.46M
    idx_++;
614
1.46M
    return *this;
615
1.46M
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICYINFO>::operator++()
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_POLICY_MAPPING>::operator++()
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ASN1_OBJECT>::operator++()
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_CONF_VALUE>::operator++()
bssl::internal::StackIteratorImpl<stack_st_GENERAL_SUBTREE>::operator++()
Line
Count
Source
612
252
  StackIteratorImpl &operator++(/* prefix */) {
613
252
    idx_++;
614
252
    return *this;
615
252
  }
bssl::internal::StackIteratorImpl<stack_st_GENERAL_NAME>::operator++()
Line
Count
Source
612
27
  StackIteratorImpl &operator++(/* prefix */) {
613
27
    idx_++;
614
27
    return *this;
615
27
  }
Unexecuted instantiation: bssl::internal::StackIteratorImpl<stack_st_ACCESS_DESCRIPTION>::operator++()
616
617
  StackIteratorImpl operator++(int /* postfix */) {
618
    StackIteratorImpl copy(*this);
619
    ++(*this);
620
    return copy;
621
  }
622
623
 private:
624
  const Stack *sk_;
625
  size_t idx_;
626
};
627
628
template <typename Stack>
629
using StackIterator =
630
    std::enable_if_t<StackTraits<Stack>::kIsStack, StackIteratorImpl<Stack>>;
631
632
}  // namespace internal
633
634
// PushToStack pushes `elem` to `sk`. It returns true on success and false on
635
// allocation failure.
636
template <typename Stack>
637
inline std::enable_if_t<!internal::StackTraits<Stack>::kIsConst, bool>
638
PushToStack(Stack *sk,
639
1.15M
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
640
1.15M
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
641
0
    return false;
642
0
  }
643
  // OPENSSL_sk_push takes ownership on success.
644
1.15M
  elem.release();
645
1.15M
  return true;
646
1.15M
}
_ZN4bssl11PushToStackI22stack_st_CRYPTO_BUFFEREENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Line
Count
Source
639
247k
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
640
247k
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
641
0
    return false;
642
0
  }
643
  // OPENSSL_sk_push takes ownership on success.
644
247k
  elem.release();
645
247k
  return true;
646
247k
}
_ZN4bssl11PushToStackI13stack_st_X509EENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Line
Count
Source
639
172k
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
640
172k
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
641
0
    return false;
642
0
  }
643
  // OPENSSL_sk_push takes ownership on success.
644
172k
  elem.release();
645
172k
  return true;
646
172k
}
Unexecuted instantiation: _ZN4bssl11PushToStackI18stack_st_X509_NAMEEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
_ZN4bssl11PushToStackI24stack_st_X509_NAME_ENTRYEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Line
Count
Source
639
737k
            UniquePtr<typename internal::StackTraits<Stack>::Type> elem) {
640
737k
  if (!OPENSSL_sk_push(reinterpret_cast<OPENSSL_STACK *>(sk), elem.get())) {
641
0
    return false;
642
0
  }
643
  // OPENSSL_sk_push takes ownership on success.
644
737k
  elem.release();
645
737k
  return true;
646
737k
}
Unexecuted instantiation: _ZN4bssl11PushToStackI20stack_st_ASN1_OBJECTEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI23stack_st_POLICY_MAPPINGEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI23stack_st_POLICYQUALINFOEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI19stack_st_POLICYINFOEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI19stack_st_DIST_POINTEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI21stack_st_GENERAL_NAMEEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI24stack_st_GENERAL_SUBTREEEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI23stack_st_OPENSSL_STRINGEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
Unexecuted instantiation: _ZN4bssl11PushToStackI27stack_st_ACCESS_DESCRIPTIONEENSt3__19enable_ifIXntsr8internal11StackTraitsIT_EE8kIsConstEbE4typeEPS4_NS2_10unique_ptrINS_8internal11StackTraitsIS4_E4TypeENS9_7DeleterEEE
647
648
// Define begin() and end() for stack types so C++ range for loops work.
649
// This pair of functions is for DEFINE_NAMESPACED_STACK_OF stacks, unlike
650
// the other pair, which is for DEFINE_STACK_OF ones.
651
template <typename Stack>
652
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
653
  return bssl::internal::StackIterator<Stack>(sk, 0);
654
}
655
656
template <typename Stack>
657
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
658
  return bssl::internal::StackIterator<Stack>(
659
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
660
}
661
662
BSSL_NAMESPACE_END
663
664
// Define begin() and end() for stack types so C++ range for loops work.
665
template <typename Stack>
666
1.02M
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
1.02M
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
1.02M
}
_Z5beginI32stack_st_SRTP_PROTECTION_PROFILEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
7
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
7
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
7
}
_Z5beginI19stack_st_SSL_CIPHERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
52.9k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
52.9k
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
52.9k
}
_Z5beginI22stack_st_CRYPTO_BUFFERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
176k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
176k
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
176k
}
_Z5beginI13stack_st_X509ENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
75.3k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
75.3k
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
75.3k
}
Unexecuted instantiation: _Z5beginI18stack_st_X509_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z5beginI24stack_st_X509_NAME_ENTRYENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
718k
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
718k
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
718k
}
Unexecuted instantiation: _Z5beginI19stack_st_POLICYINFOENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z5beginI23stack_st_POLICY_MAPPINGENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z5beginI20stack_st_ASN1_OBJECTENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z5beginI19stack_st_CONF_VALUEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z5beginI24stack_st_GENERAL_SUBTREEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
212
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
212
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
212
}
_Z5beginI21stack_st_GENERAL_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
666
10
inline bssl::internal::StackIterator<Stack> begin(const Stack *sk) {
667
10
  return bssl::internal::StackIterator<Stack>(sk, 0);
668
10
}
Unexecuted instantiation: _Z5beginI27stack_st_ACCESS_DESCRIPTIONENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
669
670
template <typename Stack>
671
1.02M
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
1.02M
  return bssl::internal::StackIterator<Stack>(
673
1.02M
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
1.02M
}
_Z3endI32stack_st_SRTP_PROTECTION_PROFILEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
7
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
7
  return bssl::internal::StackIterator<Stack>(
673
7
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
7
}
_Z3endI19stack_st_SSL_CIPHERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
52.9k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
52.9k
  return bssl::internal::StackIterator<Stack>(
673
52.9k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
52.9k
}
_Z3endI22stack_st_CRYPTO_BUFFERENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
176k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
176k
  return bssl::internal::StackIterator<Stack>(
673
176k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
176k
}
_Z3endI13stack_st_X509ENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
75.3k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
75.3k
  return bssl::internal::StackIterator<Stack>(
673
75.3k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
75.3k
}
Unexecuted instantiation: _Z3endI18stack_st_X509_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z3endI24stack_st_X509_NAME_ENTRYENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
718k
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
718k
  return bssl::internal::StackIterator<Stack>(
673
718k
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
718k
}
Unexecuted instantiation: _Z3endI19stack_st_POLICYINFOENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z3endI23stack_st_POLICY_MAPPINGENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z3endI20stack_st_ASN1_OBJECTENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Unexecuted instantiation: _Z3endI19stack_st_CONF_VALUEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
_Z3endI24stack_st_GENERAL_SUBTREEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
212
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
212
  return bssl::internal::StackIterator<Stack>(
673
212
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
212
}
_Z3endI21stack_st_GENERAL_NAMEENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
Line
Count
Source
671
10
inline bssl::internal::StackIterator<Stack> end(const Stack *sk) {
672
10
  return bssl::internal::StackIterator<Stack>(
673
10
      sk, OPENSSL_sk_num(reinterpret_cast<const OPENSSL_STACK *>(sk)));
674
10
}
Unexecuted instantiation: _Z3endI27stack_st_ACCESS_DESCRIPTIONENSt3__19enable_ifIXsr11StackTraitsIT_EE8kIsStackEN4bssl8internal17StackIteratorImplIS3_EEE4typeEPKS3_
675
676
}  // extern C++
677
#endif
678
679
#endif  // OPENSSL_HEADER_STACK_H