/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 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 | } \ |
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 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 | } \ 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 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 | } \ |
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 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 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 | } \ 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 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 | } \ |
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 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 | } \ |
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 | } \ |
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 | } \ |
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 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 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 | } \ |
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 | } \ |
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 | } \ |
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 | } \ |
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 | } \ |
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 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 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 Line | Count | Source | 448 | 5 | size_t i) { \ | 449 | 5 | return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ | 450 | 5 | } \ |
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 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 | } \ |
Line | Count | Source | 448 | 260k | size_t i) { \ | 449 | 260k | return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ | 450 | 260k | } \ |
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 | } \ |
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 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 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 | } \ |
Line | Count | Source | 448 | 503 | size_t i) { \ | 449 | 503 | return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ | 450 | 503 | } \ |
Line | Count | Source | 448 | 508 | size_t i) { \ | 449 | 508 | return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ | 450 | 508 | } \ |
Line | Count | Source | 448 | 211 | size_t i) { \ | 449 | 211 | return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ | 450 | 211 | } \ |
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 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 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 | } \ 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 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 | } \ 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 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 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 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 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 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 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 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 | } \ 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 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 | } \ |
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 | } \ |
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 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 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 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 | } \ |
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*) constLine | 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*) constLine | 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*) constUnexecuted instantiation: bssl::internal::DeleterImpl<stack_st_X509_OBJECT, void>::Free(stack_st_X509_OBJECT*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constbssl::internal::DeleterImpl<stack_st_X509_NAME_ENTRY, void>::Free(stack_st_X509_NAME_ENTRY*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constLine | 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*) constLine | 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*) constLine | 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*) constUnexecuted instantiation: bssl::internal::DeleterImpl<stack_st_POLICY_MAPPING, void>::Free(stack_st_POLICY_MAPPING*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constUnexecuted instantiation: bssl::internal::DeleterImpl<stack_st_CONF_VALUE, void>::Free(stack_st_CONF_VALUE*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constUnexecuted instantiation: bssl::internal::DeleterImpl<stack_st_OPENSSL_STRING, void>::Free(stack_st_OPENSSL_STRING*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constUnexecuted instantiation: bssl::internal::DeleterImpl<stack_st_ACCESS_DESCRIPTION, void>::Free(stack_st_ACCESS_DESCRIPTION*)::{lambda(void (*)(void*), void*)#1}::operator()(void (*)(void*), void*) constUnexecuted 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 |