/src/botan/build/include/public/botan/concepts.h
Line | Count | Source |
1 | | /** |
2 | | * Useful concepts that are available throughout the library |
3 | | * (C) 2023 Jack Lloyd |
4 | | * 2023 René Meusel - Rohde & Schwarz Cybersecurity |
5 | | * |
6 | | * Botan is released under the Simplified BSD License (see license.txt) |
7 | | */ |
8 | | |
9 | | #ifndef BOTAN_CONCEPTS_H_ |
10 | | #define BOTAN_CONCEPTS_H_ |
11 | | |
12 | | #include <botan/assert.h> |
13 | | |
14 | | #include <compare> |
15 | | #include <concepts> |
16 | | #include <cstdint> |
17 | | #include <ostream> |
18 | | #include <ranges> |
19 | | #include <span> |
20 | | #include <type_traits> |
21 | | |
22 | | namespace Botan { |
23 | | |
24 | | template <typename T, typename Tag, typename... Capabilities> |
25 | | class Strong; |
26 | | |
27 | | template <typename... Ts> |
28 | | struct is_strong_type : std::false_type {}; |
29 | | |
30 | | template <typename... Ts> |
31 | | struct is_strong_type<Strong<Ts...>> : std::true_type {}; |
32 | | |
33 | | template <typename... Ts> |
34 | | constexpr bool is_strong_type_v = is_strong_type<std::remove_const_t<Ts>...>::value; |
35 | | |
36 | | template <typename T0 = void, typename... Ts> |
37 | | struct all_same { |
38 | | static constexpr bool value = (std::is_same_v<T0, Ts> && ... && true); |
39 | | }; |
40 | | |
41 | | template <typename... Ts> |
42 | | static constexpr bool all_same_v = all_same<Ts...>::value; |
43 | | |
44 | | namespace detail { |
45 | | |
46 | | /** |
47 | | * Helper type to indicate that a certain type should be automatically |
48 | | * detected based on the context. |
49 | | */ |
50 | | struct AutoDetect { |
51 | | constexpr AutoDetect() = delete; |
52 | | }; |
53 | | |
54 | | } // namespace detail |
55 | | |
56 | | namespace ranges { |
57 | | |
58 | | /** |
59 | | * Models a std::ranges::contiguous_range that (optionally) restricts its |
60 | | * value_type to ValueT. In other words: a stretch of contiguous memory of |
61 | | * a certain type (optional ValueT). |
62 | | */ |
63 | | template <typename T, typename ValueT = std::ranges::range_value_t<T>> |
64 | | concept contiguous_range = std::ranges::contiguous_range<T> && std::same_as<ValueT, std::ranges::range_value_t<T>>; |
65 | | |
66 | | /** |
67 | | * Models a std::ranges::contiguous_range that satisfies |
68 | | * std::ranges::output_range with an arbitrary value_type. In other words: a |
69 | | * stretch of contiguous memory of a certain type (optional ValueT) that can be |
70 | | * written to. |
71 | | */ |
72 | | template <typename T, typename ValueT = std::ranges::range_value_t<T>> |
73 | | concept contiguous_output_range = contiguous_range<T, ValueT> && std::ranges::output_range<T, ValueT>; |
74 | | |
75 | | /** |
76 | | * Models a range that can be turned into a std::span<>. Typically, this is some |
77 | | * form of ranges::contiguous_range. |
78 | | */ |
79 | | template <typename T> |
80 | | concept spanable_range = std::constructible_from<std::span<const std::ranges::range_value_t<T>>, T>; |
81 | | |
82 | | /** |
83 | | * Models a range that can be turned into a std::span<> with a static extent. |
84 | | * Typically, this is a std::array or a std::span derived from an array. |
85 | | */ |
86 | | // clang-format off |
87 | | template <typename T> |
88 | | concept statically_spanable_range = spanable_range<T> && |
89 | | decltype(std::span{std::declval<T&>()})::extent != std::dynamic_extent; |
90 | | |
91 | | // clang-format on |
92 | | |
93 | | /** |
94 | | * Find the length in bytes of a given contiguous range @p r. |
95 | | */ |
96 | 47.0M | inline constexpr size_t size_bytes(spanable_range auto&& r) { |
97 | 47.0M | return std::span{r}.size_bytes(); |
98 | 47.0M | } _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm4EEEEEmOT_ Line | Count | Source | 96 | 29.3k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 29.3k | return std::span{r}.size_bytes(); | 98 | 29.3k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm32EEEEEmOT_ Line | Count | Source | 96 | 14.6k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 14.6k | return std::span{r}.size_bytes(); | 98 | 14.6k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm8EEEEEmOT_ Line | Count | Source | 96 | 2.02M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 2.02M | return std::span{r}.size_bytes(); | 98 | 2.02M | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm1EEEEEmOT_ Line | Count | Source | 96 | 4.24M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 4.24M | return std::span{r}.size_bytes(); | 98 | 4.24M | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEEEEmOT_ Line | Count | Source | 96 | 284k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 284k | return std::span{r}.size_bytes(); | 98 | 284k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIjLm1EEEEEmOT_ Line | Count | Source | 96 | 7.87M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 7.87M | return std::span{r}.size_bytes(); | 98 | 7.87M | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm4EEEEEmOT_ Line | Count | Source | 96 | 1.52M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 1.52M | return std::span{r}.size_bytes(); | 98 | 1.52M | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanItLm1EEEEEmOT_ Line | Count | Source | 96 | 168k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 168k | return std::span{r}.size_bytes(); | 98 | 168k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm2EEEEEmOT_ Line | Count | Source | 96 | 84 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 84 | return std::span{r}.size_bytes(); | 98 | 84 | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIjLm16EEEEEmOT_ Line | Count | Source | 96 | 13.0k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 13.0k | return std::span{r}.size_bytes(); | 98 | 13.0k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm18446744073709551615EEEEEmOT_ Line | Count | Source | 96 | 32.5k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 32.5k | return std::span{r}.size_bytes(); | 98 | 32.5k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm4EEEEEmOT_ Line | Count | Source | 96 | 79.9k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 79.9k | return std::span{r}.size_bytes(); | 98 | 79.9k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm6EEEEEmOT_ Line | Count | Source | 96 | 36.5k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 36.5k | return std::span{r}.size_bytes(); | 98 | 36.5k | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm48EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm6EEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm8EEEEEmOT_ Line | Count | Source | 96 | 17.6k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 17.6k | return std::span{r}.size_bytes(); | 98 | 17.6k | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm64EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm8EEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm3EEEEEmOT_ Line | Count | Source | 96 | 162 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 162 | return std::span{r}.size_bytes(); | 98 | 162 | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm24EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm3EEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm28EEEEEmOT_ Line | Count | Source | 96 | 276 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 276 | return std::span{r}.size_bytes(); | 98 | 276 | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm72EEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm9EEEEEmOT_ Line | Count | Source | 96 | 18.0k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 18.0k | return std::span{r}.size_bytes(); | 98 | 18.0k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm66EEEEEmOT_ Line | Count | Source | 96 | 47.2k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 47.2k | return std::span{r}.size_bytes(); | 98 | 47.2k | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm98EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm9EEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIjLm18446744073709551615EEEEEmOT_ Line | Count | Source | 96 | 14 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 14 | return std::span{r}.size_bytes(); | 98 | 14 | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm56EEEEEmOT_ Line | Count | Source | 96 | 924 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 924 | return std::span{r}.size_bytes(); | 98 | 924 | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm56EEEEEmOT_ Line | Count | Source | 96 | 6.24k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 6.24k | return std::span{r}.size_bytes(); | 98 | 6.24k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_9Point448_EJEEEEEmOT_ Line | Count | Source | 96 | 462 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 462 | return std::span{r}.size_bytes(); | 98 | 462 | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_11ScalarX448_EJEEEEEmOT_ Line | Count | Source | 96 | 2.33k | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 2.33k | return std::span{r}.size_bytes(); | 98 | 2.33k | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEEEEmOT_ Line | Count | Source | 96 | 21.3M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 21.3M | return std::span{r}.size_bytes(); | 98 | 21.3M | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__16vectorIsNS2_9allocatorIsEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm8EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm1EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm16EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm2EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIsLm256EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS_16secure_allocatorIhEEEENS_18KyberSharedSecret_EJEEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__16vectorIhNS_16secure_allocatorIhEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__16vectorIjNS_16secure_allocatorIjEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__16vectorINS_6StrongItNS_11CmceGfElem_EJEEENS2_9allocatorIS6_EEEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanImLm7EEEEEmOT_ Line | Count | Source | 96 | 9.24M | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 9.24M | return std::span{r}.size_bytes(); | 98 | 9.24M | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm57EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm1EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIiLm256EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__16vectorIiNS2_9allocatorIiEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm2EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanItLm18446744073709551615EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm12EEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEEEEmOT_ _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__14spanIhLm114EEEEEmOT_ Line | Count | Source | 96 | 328 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 328 | return std::span{r}.size_bytes(); | 98 | 328 | } |
_ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNSt3__15arrayImLm15EEEEEmOT_ Line | Count | Source | 96 | 164 | inline constexpr size_t size_bytes(spanable_range auto&& r) { | 97 | 164 | return std::span{r}.size_bytes(); | 98 | 164 | } |
Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEEEEmOT_ Unexecuted instantiation: _ZN5Botan6ranges10size_bytesITkNS0_14spanable_rangeERNS_6StrongINSt3__16vectorIhNS3_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEEmOT_ |
99 | | |
100 | | /** |
101 | | * Check that a given range @p r has a certain statically-known byte length. If |
102 | | * the range's extent is known at compile time, this is a static check, |
103 | | * otherwise a runtime argument check will be added. |
104 | | * |
105 | | * @throws Invalid_Argument if range @p r has a dynamic extent and does not |
106 | | * feature the expected byte length. |
107 | | */ |
108 | | template <size_t expected, spanable_range R> |
109 | 47.9M | inline constexpr void assert_exact_byte_length(R&& r) { |
110 | 47.9M | const std::span s{r}; |
111 | 47.9M | if constexpr(statically_spanable_range<R>) { |
112 | 47.9M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); |
113 | 47.9M | } else { |
114 | 3.90k | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); |
115 | 3.90k | } |
116 | 47.9M | } _ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERNSt3__14spanIhLm32EEEEEvOT0_ Line | Count | Source | 109 | 10.5k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 10.5k | const std::span s{r}; | 111 | 10.5k | if constexpr(statically_spanable_range<R>) { | 112 | 10.5k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 10.5k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERNSt3__14spanIKhLm32EEEEEvOT0_ Line | Count | Source | 109 | 19.3k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 19.3k | const std::span s{r}; | 111 | 19.3k | if constexpr(statically_spanable_range<R>) { | 112 | 19.3k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 19.3k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERNSt3__15arrayImLm4EEEEEvOT0_ Line | Count | Source | 109 | 60.2k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 60.2k | const std::span s{r}; | 111 | 60.2k | if constexpr(statically_spanable_range<R>) { | 112 | 60.2k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 60.2k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__14spanIhLm8EEEEEvOT0_ Line | Count | Source | 109 | 3.29M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 3.29M | const std::span s{r}; | 111 | 3.29M | if constexpr(statically_spanable_range<R>) { | 112 | 3.29M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 3.29M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__14spanIKmLm1EEEEEvOT0_ Line | Count | Source | 109 | 2.02M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 2.02M | const std::span s{r}; | 111 | 2.02M | if constexpr(statically_spanable_range<R>) { | 112 | 2.02M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 2.02M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__14spanIKhLm8EEEEEvOT0_ Line | Count | Source | 109 | 8.21M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 8.21M | const std::span s{r}; | 111 | 8.21M | if constexpr(statically_spanable_range<R>) { | 112 | 8.21M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 8.21M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__15arrayIhLm8EEEEEvOT0_ Line | Count | Source | 109 | 135k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 135k | const std::span s{r}; | 111 | 135k | if constexpr(statically_spanable_range<R>) { | 112 | 135k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 135k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__14spanIKhLm4EEEEEvOT0_ Line | Count | Source | 109 | 15.7M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 15.7M | const std::span s{r}; | 111 | 15.7M | if constexpr(statically_spanable_range<R>) { | 112 | 15.7M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 15.7M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__14spanIhLm4EEEEEvOT0_ Line | Count | Source | 109 | 2.98M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 2.98M | const std::span s{r}; | 111 | 2.98M | if constexpr(statically_spanable_range<R>) { | 112 | 2.98M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 2.98M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__14spanIKjLm1EEEEEvOT0_ Line | Count | Source | 109 | 1.52M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 1.52M | const std::span s{r}; | 111 | 1.52M | if constexpr(statically_spanable_range<R>) { | 112 | 1.52M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 1.52M | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm16ETkNS0_14spanable_rangeERNSt3__14spanIKhLm16EEEEEvOT0_ Line | Count | Source | 109 | 7.14k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 7.14k | const std::span s{r}; | 111 | 7.14k | if constexpr(statically_spanable_range<R>) { | 112 | 7.14k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 7.14k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm16ETkNS0_14spanable_rangeERNSt3__14spanIhLm16EEEEEvOT0_ Line | Count | Source | 109 | 4.43k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 4.43k | const std::span s{r}; | 111 | 4.43k | if constexpr(statically_spanable_range<R>) { | 112 | 4.43k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 4.43k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERNSt3__14spanIKhLm2EEEEEvOT0_ Line | Count | Source | 109 | 337k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 337k | const std::span s{r}; | 111 | 337k | if constexpr(statically_spanable_range<R>) { | 112 | 337k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 337k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERNSt3__14spanIhLm2EEEEEvOT0_ Line | Count | Source | 109 | 84 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 84 | const std::span s{r}; | 111 | 84 | if constexpr(statically_spanable_range<R>) { | 112 | 84 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 84 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERNSt3__14spanIKtLm1EEEEEvOT0_ Line | Count | Source | 109 | 84 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 84 | const std::span s{r}; | 111 | 84 | if constexpr(statically_spanable_range<R>) { | 112 | 84 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 84 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm64ETkNS0_14spanable_rangeERNSt3__14spanIKhLm64EEEEEvOT0_ Line | Count | Source | 109 | 513k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 513k | const std::span s{r}; | 111 | 513k | if constexpr(statically_spanable_range<R>) { | 112 | 513k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 513k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm64ETkNS0_14spanable_rangeERNSt3__14spanIhLm64EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm128ETkNS0_14spanable_rangeERNSt3__14spanIKhLm128EEEEEvOT0_ Line | Count | Source | 109 | 49.5k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 49.5k | const std::span s{r}; | 111 | 49.5k | if constexpr(statically_spanable_range<R>) { | 112 | 49.5k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 49.5k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERKNSt3__15arrayImLm4EEEEEvOT0_ Line | Count | Source | 109 | 39.9k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 39.9k | const std::span s{r}; | 111 | 39.9k | if constexpr(statically_spanable_range<R>) { | 112 | 39.9k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 39.9k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__15arrayImLm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERNSt3__14spanImLm4EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm48ETkNS0_14spanable_rangeERKNSt3__15arrayImLm6EEEEEvOT0_ Line | Count | Source | 109 | 18.2k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 18.2k | const std::span s{r}; | 111 | 18.2k | if constexpr(statically_spanable_range<R>) { | 112 | 18.2k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 18.2k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm48ETkNS0_14spanable_rangeERNSt3__15arrayImLm6EEEEEvOT0_ Line | Count | Source | 109 | 29.0k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 29.0k | const std::span s{r}; | 111 | 29.0k | if constexpr(statically_spanable_range<R>) { | 112 | 29.0k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 29.0k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm48ETkNS0_14spanable_rangeERNSt3__14spanIKhLm48EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm48ETkNS0_14spanable_rangeERNSt3__14spanImLm6EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm64ETkNS0_14spanable_rangeERKNSt3__15arrayImLm8EEEEEvOT0_ Line | Count | Source | 109 | 8.83k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 8.83k | const std::span s{r}; | 111 | 8.83k | if constexpr(statically_spanable_range<R>) { | 112 | 8.83k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 8.83k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm64ETkNS0_14spanable_rangeERNSt3__15arrayImLm8EEEEEvOT0_ Line | Count | Source | 109 | 6.61k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 6.61k | const std::span s{r}; | 111 | 6.61k | if constexpr(statically_spanable_range<R>) { | 112 | 6.61k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 6.61k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm64ETkNS0_14spanable_rangeERNSt3__14spanImLm8EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm24ETkNS0_14spanable_rangeERKNSt3__15arrayImLm3EEEEEvOT0_ Line | Count | Source | 109 | 81 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 81 | const std::span s{r}; | 111 | 81 | if constexpr(statically_spanable_range<R>) { | 112 | 81 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 81 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm24ETkNS0_14spanable_rangeERNSt3__15arrayImLm3EEEEEvOT0_ Line | Count | Source | 109 | 245 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 245 | const std::span s{r}; | 111 | 245 | if constexpr(statically_spanable_range<R>) { | 112 | 245 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 245 | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm24ETkNS0_14spanable_rangeERNSt3__14spanIKhLm24EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm24ETkNS0_14spanable_rangeERNSt3__14spanImLm3EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm28ETkNS0_14spanable_rangeERNSt3__14spanIKhLm28EEEEEvOT0_ Line | Count | Source | 109 | 138 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 138 | const std::span s{r}; | 111 | 138 | if constexpr(statically_spanable_range<R>) { | 112 | 138 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 138 | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm72ETkNS0_14spanable_rangeERNSt3__14spanIKhLm72EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm72ETkNS0_14spanable_rangeERKNSt3__15arrayImLm9EEEEEvOT0_ Line | Count | Source | 109 | 9.01k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 9.01k | const std::span s{r}; | 111 | 9.01k | if constexpr(statically_spanable_range<R>) { | 112 | 9.01k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 9.01k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm72ETkNS0_14spanable_rangeERNSt3__15arrayImLm9EEEEEvOT0_ Line | Count | Source | 109 | 23.6k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 23.6k | const std::span s{r}; | 111 | 23.6k | if constexpr(statically_spanable_range<R>) { | 112 | 23.6k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 23.6k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm66ETkNS0_14spanable_rangeERNSt3__14spanIKhLm66EEEEEvOT0_ Line | Count | Source | 109 | 23.6k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 23.6k | const std::span s{r}; | 111 | 23.6k | if constexpr(statically_spanable_range<R>) { | 112 | 23.6k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 23.6k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm98ETkNS0_14spanable_rangeERNSt3__14spanIKhLm98EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm72ETkNS0_14spanable_rangeERNSt3__14spanImLm9EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm16ETkNS0_14spanable_rangeERNSt3__15arrayIhLm16EEEEEvOT0_ Line | Count | Source | 109 | 194 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 194 | const std::span s{r}; | 111 | 194 | if constexpr(statically_spanable_range<R>) { | 112 | 194 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 194 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__14spanIKhLm18446744073709551615EEEEEvOT0_ Line | Count | Source | 109 | 462 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 462 | const std::span s{r}; | 111 | | if constexpr(statically_spanable_range<R>) { | 112 | | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | 462 | } else { | 114 | 462 | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | 462 | } | 116 | 462 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__16vectorIhNS_16secure_allocatorIhEEEEEEvOT0_ Line | Count | Source | 109 | 1.87k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 1.87k | const std::span s{r}; | 111 | | if constexpr(statically_spanable_range<R>) { | 112 | | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | 1.87k | } else { | 114 | 1.87k | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | 1.87k | } | 116 | 1.87k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__14spanIKmLm7EEEEEvOT0_ Line | Count | Source | 109 | 4.62M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 4.62M | const std::span s{r}; | 111 | 4.62M | if constexpr(statically_spanable_range<R>) { | 112 | 4.62M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 4.62M | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm1ETkNS0_14spanable_rangeERNSt3__15arrayIhLm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm1ETkNS0_14spanable_rangeERNSt3__14spanIhLm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERNSt3__15arrayItLm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm16ETkNS0_14spanable_rangeERNSt3__15arrayImLm2EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayIjLm1EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm1ETkNS0_14spanable_rangeERNSt3__14spanIKhLm1EEEEEvOT0_ Line | Count | Source | 109 | 8.20M | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 8.20M | const std::span s{r}; | 111 | 8.20M | if constexpr(statically_spanable_range<R>) { | 112 | 8.20M | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 8.20M | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERKNSt3__14spanIhLm8EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERKNSt3__14spanIhLm4EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERKNSt3__14spanIhLm2EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm1ETkNS0_14spanable_rangeERKNSt3__14spanIhLm1EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__14spanIKhLm56EEEEEvOT0_ Line | Count | Source | 109 | 9.33k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 9.33k | const std::span s{r}; | 111 | 9.33k | if constexpr(statically_spanable_range<R>) { | 112 | 9.33k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 9.33k | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__15arrayImLm7EEEEEvOT0_ Line | Count | Source | 109 | 4.99k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 4.99k | const std::span s{r}; | 111 | 4.99k | if constexpr(statically_spanable_range<R>) { | 112 | 4.99k | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 4.99k | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm57ETkNS0_14spanable_rangeERNSt3__14spanIKhLm57EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERKNSt3__15arrayImLm7EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm2ETkNS0_14spanable_rangeERNSt3__15arrayIhLm2EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayItLm2EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm12ETkNS0_14spanable_rangeERNSt3__14spanIKhLm18446744073709551615EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__14spanImLm7EEEEEvOT0_ Line | Count | Source | 109 | 656 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 656 | const std::span s{r}; | 111 | 656 | if constexpr(statically_spanable_range<R>) { | 112 | 656 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 656 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm114ETkNS0_14spanable_rangeERNSt3__14spanIKhLm114EEEEEvOT0_ Line | Count | Source | 109 | 164 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 164 | const std::span s{r}; | 111 | 164 | if constexpr(statically_spanable_range<R>) { | 112 | 164 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 164 | } |
_ZN5Botan6ranges24assert_exact_byte_lengthILm120ETkNS0_14spanable_rangeERNSt3__15arrayIhLm120EEEEEvOT0_ Line | Count | Source | 109 | 328 | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 328 | const std::span s{r}; | 111 | 328 | if constexpr(statically_spanable_range<R>) { | 112 | 328 | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | | } else { | 114 | | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | | } | 116 | 328 | } |
Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERNSt3__15arrayIhLm56EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm32ETkNS0_14spanable_rangeERKNSt3__15arrayIhLm32EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm56ETkNS0_14spanable_rangeERKNSt3__15arrayIhLm56EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayINS_6StrongIjNS_10HSS_Level_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__15arrayINS_6StrongImNS_12HSS_Sig_Idx_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayINS_18LMS_Algorithm_TypeELm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayINS_20LMOTS_Algorithm_TypeELm1EEEEEvOT0_ Unexecuted instantiation: _ZN5Botan6ranges24assert_exact_byte_lengthILm4ETkNS0_14spanable_rangeERNSt3__15arrayINS_6StrongIjNS_18LMS_Tree_Node_Idx_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEvOT0_ _ZN5Botan6ranges24assert_exact_byte_lengthILm8ETkNS0_14spanable_rangeERNSt3__14spanIKhLm18446744073709551615EEEEEvOT0_ Line | Count | Source | 109 | 1.56k | inline constexpr void assert_exact_byte_length(R&& r) { | 110 | 1.56k | const std::span s{r}; | 111 | | if constexpr(statically_spanable_range<R>) { | 112 | | static_assert(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 113 | 1.56k | } else { | 114 | 1.56k | BOTAN_ASSERT(s.size_bytes() == expected, "memory region does not have expected byte lengths"); | 115 | 1.56k | } | 116 | 1.56k | } |
|
117 | | |
118 | | /** |
119 | | * Check that a list of ranges (in @p r0 and @p rs) all have the same byte |
120 | | * lengths. If the first range's extent is known at compile time, this will be a |
121 | | * static check for all other ranges whose extents are known at compile time, |
122 | | * otherwise a runtime argument check will be added. |
123 | | * |
124 | | * @throws Invalid_Argument if any range has a dynamic extent and not all |
125 | | * ranges feature the same byte length. |
126 | | */ |
127 | | template <spanable_range R0, spanable_range... Rs> |
128 | | inline constexpr void assert_equal_byte_lengths(R0&& r0, Rs&&... rs) |
129 | | requires(sizeof...(Rs) > 0) |
130 | 21.7M | { |
131 | 21.7M | const std::span s0{r0}; |
132 | | |
133 | 21.7M | if constexpr(statically_spanable_range<R0>) { |
134 | 21.2M | constexpr size_t expected_size = s0.size_bytes(); |
135 | 21.2M | (assert_exact_byte_length<expected_size>(rs), ...); |
136 | 21.2M | } else { |
137 | 482k | const size_t expected_size = s0.size_bytes(); |
138 | 482k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), |
139 | 482k | "memory regions don't have equal lengths"); |
140 | 482k | } |
141 | 21.7M | } _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm4EEETpTkNS0_14spanable_rangeEJRNS2_4spanIhLm32EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 10.0k | { | 131 | 10.0k | const std::span s0{r0}; | 132 | | | 133 | 10.0k | if constexpr(statically_spanable_range<R0>) { | 134 | 10.0k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 10.0k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 10.0k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm4EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm32EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 19.3k | { | 131 | 19.3k | const std::span s0{r0}; | 132 | | | 133 | 19.3k | if constexpr(statically_spanable_range<R0>) { | 134 | 19.3k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 19.3k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 19.3k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm32EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 60.0k | { | 131 | 60.0k | const std::span s0{r0}; | 132 | | | 133 | 60.0k | if constexpr(statically_spanable_range<R0>) { | 134 | 60.0k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 60.0k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 60.0k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 159k | { | 131 | 159k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 159k | } else { | 137 | 159k | const size_t expected_size = s0.size_bytes(); | 138 | 159k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 159k | "memory regions don't have equal lengths"); | 140 | 159k | } | 141 | 159k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEES8_EEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 3.84k | { | 131 | 3.84k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 3.84k | } else { | 137 | 3.84k | const size_t expected_size = s0.size_bytes(); | 138 | 3.84k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 3.84k | "memory regions don't have equal lengths"); | 140 | 3.84k | } | 141 | 3.84k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm8EEETpTkNS0_14spanable_rangeEJRNS3_IKmLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 2.02M | { | 131 | 2.02M | const std::span s0{r0}; | 132 | | | 133 | 2.02M | if constexpr(statically_spanable_range<R0>) { | 134 | 2.02M | constexpr size_t expected_size = s0.size_bytes(); | 135 | 2.02M | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 2.02M | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm1EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 4.10M | { | 131 | 4.10M | const std::span s0{r0}; | 132 | | | 133 | 4.10M | if constexpr(statically_spanable_range<R0>) { | 134 | 4.10M | constexpr size_t expected_size = s0.size_bytes(); | 135 | 4.10M | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 4.10M | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm1EEETpTkNS0_14spanable_rangeEJRNS3_IhLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 135k | { | 131 | 135k | const std::span s0{r0}; | 132 | | | 133 | 135k | if constexpr(statically_spanable_range<R0>) { | 134 | 135k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 135k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 135k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRKNS2_6vectorIhNS_16secure_allocatorIhEEEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 245 | { | 131 | 245 | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 245 | } else { | 137 | 245 | const size_t expected_size = s0.size_bytes(); | 138 | 245 | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 245 | "memory regions don't have equal lengths"); | 140 | 245 | } | 141 | 245 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIjLm1EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 7.87M | { | 131 | 7.87M | const std::span s0{r0}; | 132 | | | 133 | 7.87M | if constexpr(statically_spanable_range<R0>) { | 134 | 7.87M | constexpr size_t expected_size = s0.size_bytes(); | 135 | 7.87M | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 7.87M | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_IKjLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 1.52M | { | 131 | 1.52M | const std::span s0{r0}; | 132 | | | 133 | 1.52M | if constexpr(statically_spanable_range<R0>) { | 134 | 1.52M | constexpr size_t expected_size = s0.size_bytes(); | 135 | 1.52M | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 1.52M | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanItLm1EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm2EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 168k | { | 131 | 168k | const std::span s0{r0}; | 132 | | | 133 | 168k | if constexpr(statically_spanable_range<R0>) { | 134 | 168k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 168k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 168k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm2EEETpTkNS0_14spanable_rangeEJRNS3_IKtLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 84 | { | 131 | 84 | const std::span s0{r0}; | 132 | | | 133 | 84 | if constexpr(statically_spanable_range<R0>) { | 134 | 84 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 84 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 84 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIjLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 28 | { | 131 | 28 | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 28 | } else { | 137 | 28 | const size_t expected_size = s0.size_bytes(); | 138 | 28 | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 28 | "memory regions don't have equal lengths"); | 140 | 28 | } | 141 | 28 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIjLm16EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm64EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 513k | { | 131 | 513k | const std::span s0{r0}; | 132 | | | 133 | 513k | if constexpr(statically_spanable_range<R0>) { | 134 | 513k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 513k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 513k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKjLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 196k | { | 131 | 196k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 196k | } else { | 137 | 196k | const size_t expected_size = s0.size_bytes(); | 138 | 196k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 196k | "memory regions don't have equal lengths"); | 140 | 196k | } | 141 | 196k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIjLm16EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm64EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm16EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm128EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 49.5k | { | 131 | 49.5k | const std::span s0{r0}; | 132 | | | 133 | 49.5k | if constexpr(statically_spanable_range<R0>) { | 134 | 49.5k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 49.5k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 49.5k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKmLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 19.7k | { | 131 | 19.7k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 19.7k | } else { | 137 | 19.7k | const size_t expected_size = s0.size_bytes(); | 138 | 19.7k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 19.7k | "memory regions don't have equal lengths"); | 140 | 19.7k | } | 141 | 19.7k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 67.6k | { | 131 | 67.6k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 67.6k | } else { | 137 | 67.6k | const size_t expected_size = s0.size_bytes(); | 138 | 67.6k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 67.6k | "memory regions don't have equal lengths"); | 140 | 67.6k | } | 141 | 67.6k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm4EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 39.9k | { | 131 | 39.9k | const std::span s0{r0}; | 132 | | | 133 | 39.9k | if constexpr(statically_spanable_range<R0>) { | 134 | 39.9k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 39.9k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 39.9k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRA8_mEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 14.1k | { | 131 | 14.1k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 14.1k | } else { | 137 | 14.1k | const size_t expected_size = s0.size_bytes(); | 138 | 14.1k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 14.1k | "memory regions don't have equal lengths"); | 140 | 14.1k | } | 141 | 14.1k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm32EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm32EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm1EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm4EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm6EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm6EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 18.2k | { | 131 | 18.2k | const std::span s0{r0}; | 132 | | | 133 | 18.2k | if constexpr(statically_spanable_range<R0>) { | 134 | 18.2k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 18.2k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 18.2k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm48EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm6EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 29.0k | { | 131 | 29.0k | const std::span s0{r0}; | 132 | | | 133 | 29.0k | if constexpr(statically_spanable_range<R0>) { | 134 | 29.0k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 29.0k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 29.0k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRA12_mEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 8.99k | { | 131 | 8.99k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 8.99k | } else { | 137 | 8.99k | const size_t expected_size = s0.size_bytes(); | 138 | 8.99k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 8.99k | "memory regions don't have equal lengths"); | 140 | 8.99k | } | 141 | 8.99k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm48EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm48EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm6EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm6EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm8EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 8.83k | { | 131 | 8.83k | const std::span s0{r0}; | 132 | | | 133 | 8.83k | if constexpr(statically_spanable_range<R0>) { | 134 | 8.83k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 8.83k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 8.83k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm64EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 6.61k | { | 131 | 6.61k | const std::span s0{r0}; | 132 | | | 133 | 6.61k | if constexpr(statically_spanable_range<R0>) { | 134 | 6.61k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 6.61k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 6.61k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRA16_mEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 2.20k | { | 131 | 2.20k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 2.20k | } else { | 137 | 2.20k | const size_t expected_size = s0.size_bytes(); | 138 | 2.20k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 2.20k | "memory regions don't have equal lengths"); | 140 | 2.20k | } | 141 | 2.20k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm64EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm64EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm8EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm3EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm3EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 81 | { | 131 | 81 | const std::span s0{r0}; | 132 | | | 133 | 81 | if constexpr(statically_spanable_range<R0>) { | 134 | 81 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 81 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 81 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm24EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm3EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 245 | { | 131 | 245 | const std::span s0{r0}; | 132 | | | 133 | 245 | if constexpr(statically_spanable_range<R0>) { | 134 | 245 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 245 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 245 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRA6_mEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 6 | { | 131 | 6 | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 6 | } else { | 137 | 6 | const size_t expected_size = s0.size_bytes(); | 138 | 6 | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 6 | "memory regions don't have equal lengths"); | 140 | 6 | } | 141 | 6 | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm24EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm24EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm3EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm3EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm32EEETpTkNS0_14spanable_rangeEJRNS3_ImLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 138 | { | 131 | 138 | const std::span s0{r0}; | 132 | | | 133 | 138 | if constexpr(statically_spanable_range<R0>) { | 134 | 138 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 138 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 138 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm28EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm28EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 138 | { | 131 | 138 | const std::span s0{r0}; | 132 | | | 133 | 138 | if constexpr(statically_spanable_range<R0>) { | 134 | 138 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 138 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 138 | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm72EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm72EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm9EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm9EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 9.01k | { | 131 | 9.01k | const std::span s0{r0}; | 132 | | | 133 | 9.01k | if constexpr(statically_spanable_range<R0>) { | 134 | 9.01k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 9.01k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 9.01k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm72EEETpTkNS0_14spanable_rangeEJRNS3_ImLm9EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 23.6k | { | 131 | 23.6k | const std::span s0{r0}; | 132 | | | 133 | 23.6k | if constexpr(statically_spanable_range<R0>) { | 134 | 23.6k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 23.6k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 23.6k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm66EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm66EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 23.6k | { | 131 | 23.6k | const std::span s0{r0}; | 132 | | | 133 | 23.6k | if constexpr(statically_spanable_range<R0>) { | 134 | 23.6k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 23.6k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 23.6k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRA18_mEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 7.16k | { | 131 | 7.16k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 7.16k | } else { | 137 | 7.16k | const size_t expected_size = s0.size_bytes(); | 138 | 7.16k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 7.16k | "memory regions don't have equal lengths"); | 140 | 7.16k | } | 141 | 7.16k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm98EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm98EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm9EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm9EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEES8_EEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm56EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 462 | { | 131 | 462 | const std::span s0{r0}; | 132 | | | 133 | 462 | if constexpr(statically_spanable_range<R0>) { | 134 | 462 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 462 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 462 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm56EEETpTkNS0_14spanable_rangeEJRNS2_6vectorIhNS_16secure_allocatorIhEEEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 1.87k | { | 131 | 1.87k | const std::span s0{r0}; | 132 | | | 133 | 1.87k | if constexpr(statically_spanable_range<R0>) { | 134 | 1.87k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 1.87k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 1.87k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_9Point448_EJEEETpTkNS0_14spanable_rangeEJRNS3_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 462 | { | 131 | 462 | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 462 | } else { | 137 | 462 | const size_t expected_size = s0.size_bytes(); | 138 | 462 | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 462 | "memory regions don't have equal lengths"); | 140 | 462 | } | 141 | 462 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_11ScalarX448_EJEEETpTkNS0_14spanable_rangeEJRNS3_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 2.33k | { | 131 | 2.33k | const std::span s0{r0}; | 132 | | | 133 | | if constexpr(statically_spanable_range<R0>) { | 134 | | constexpr size_t expected_size = s0.size_bytes(); | 135 | | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | 2.33k | } else { | 137 | 2.33k | const size_t expected_size = s0.size_bytes(); | 138 | 2.33k | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | 2.33k | "memory regions don't have equal lengths"); | 140 | 2.33k | } | 141 | 2.33k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKmLm7EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 1.47k | { | 131 | 1.47k | const std::span s0{r0}; | 132 | | | 133 | 1.47k | if constexpr(statically_spanable_range<R0>) { | 134 | 1.47k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 1.47k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 1.47k | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIsNS2_9allocatorIsEEEETpTkNS0_14spanable_rangeEJRKS6_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm1EEETpTkNS0_14spanable_rangeEJS5_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm2EEETpTkNS0_14spanable_rangeEJRNS3_ItLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm8EEETpTkNS0_14spanable_rangeEJRNS3_ImLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm1EEETpTkNS0_14spanable_rangeEJRNS3_IhLm8EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm16EEETpTkNS0_14spanable_rangeEJRNS3_ImLm2EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm2EEETpTkNS0_14spanable_rangeEJRNS3_IhLm16EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIjLm1EEETpTkNS0_14spanable_rangeEJRNS3_IhLm4EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS_16secure_allocatorIhEEEENS_18KyberSharedSecret_EJEEEEETpTkNS0_14spanable_rangeEJRKSA_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEERKNS3_IhNS_16secure_allocatorIhEEEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_IjLm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJS5_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS_16secure_allocatorIhEEEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanItLm1EEETpTkNS0_14spanable_rangeEJRNS3_IhLm2EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIjNS_16secure_allocatorIjEEEETpTkNS0_14spanable_rangeEJRNS_10StrongSpanIKNS_6StrongINS3_IhNS4_IhEEEENS_17CmceOrderingBits_EJEEEEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorINS_6StrongItNS_11CmceGfElem_EJEEENS2_9allocatorIS6_EEEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm56EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 9.33k | { | 131 | 9.33k | const std::span s0{r0}; | 132 | | | 133 | 9.33k | if constexpr(statically_spanable_range<R0>) { | 134 | 9.33k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 9.33k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 9.33k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm56EEETpTkNS0_14spanable_rangeEJRNS2_5arrayImLm7EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 4.99k | { | 131 | 4.99k | const std::span s0{r0}; | 132 | | | 133 | 4.99k | if constexpr(statically_spanable_range<R0>) { | 134 | 4.99k | constexpr size_t expected_size = s0.size_bytes(); | 135 | 4.99k | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 4.99k | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm7EEETpTkNS0_14spanable_rangeEJRNS3_IKmLm7EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 4.62M | { | 131 | 4.62M | const std::span s0{r0}; | 132 | | | 133 | 4.62M | if constexpr(statically_spanable_range<R0>) { | 134 | 4.62M | constexpr size_t expected_size = s0.size_bytes(); | 135 | 4.62M | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 4.62M | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm57EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm57EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm56EEETpTkNS0_14spanable_rangeEJRKNS2_5arrayImLm7EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIiNS2_9allocatorIiEEEETpTkNS0_14spanable_rangeEJRKS6_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEESB_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__16vectorIhNS2_9allocatorIhEEEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanItLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_ItLm2EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEETpTkNS0_14spanable_rangeEJRSA_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS_6StrongINS2_6vectorIhNS2_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEETpTkNS0_14spanable_rangeEJRKSA_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm12EEETpTkNS0_14spanable_rangeEJRNS2_4spanIKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEETpTkNS0_14spanable_rangeEJRNS2_4spanImLm7EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 656 | { | 131 | 656 | const std::span s0{r0}; | 132 | | | 133 | 656 | if constexpr(statically_spanable_range<R0>) { | 134 | 656 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 656 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 656 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm114EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm114EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 164 | { | 131 | 164 | const std::span s0{r0}; | 132 | | | 133 | 164 | if constexpr(statically_spanable_range<R0>) { | 134 | 164 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 164 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 164 | } |
_ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm15EEETpTkNS0_14spanable_rangeEJRNS3_IhLm120EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 328 | { | 131 | 328 | const std::span s0{r0}; | 132 | | | 133 | 328 | if constexpr(statically_spanable_range<R0>) { | 134 | 328 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 328 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 328 | } |
Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm56EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm56EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEETpTkNS0_14spanable_rangeEJRNS3_IhLm56EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm4EEETpTkNS0_14spanable_rangeEJRKNS3_IhLm32EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayImLm7EEETpTkNS0_14spanable_rangeEJRKNS3_IhLm56EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_INS_6StrongIjNS_10HSS_Level_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm8EEETpTkNS0_14spanable_rangeEJRNS3_INS_6StrongImNS_12HSS_Sig_Idx_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_INS_18LMS_Algorithm_TypeELm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_INS_20LMOTS_Algorithm_TypeELm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS2_6vectorIhNS2_9allocatorIhEEEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__15arrayIhLm4EEETpTkNS0_14spanable_rangeEJRNS3_INS_6StrongIjNS_18LMS_Tree_Node_Idx_EJNS_31EnableArithmeticWithPlainNumberEEEELm1EEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEETpTkNS0_14spanable_rangeEJRSA_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanIhLm18446744073709551615EEETpTkNS0_14spanable_rangeEJRNS_6StrongINS2_6vectorIhNS2_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_6StrongINSt3__16vectorIhNS3_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEETpTkNS0_14spanable_rangeEJSA_EEEvOT_DpOT0_QgtsZT0_Li0E Unexecuted instantiation: _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEETpTkNS0_14spanable_rangeEJRNS2_IKSA_EEEEEvOT_DpOT0_QgtsZT0_Li0E _ZN5Botan6ranges25assert_equal_byte_lengthsITkNS0_14spanable_rangeERNSt3__14spanImLm1EEETpTkNS0_14spanable_rangeEJRNS3_IKhLm18446744073709551615EEEEEEvOT_DpOT0_QgtsZT0_Li0E Line | Count | Source | 130 | 784 | { | 131 | 784 | const std::span s0{r0}; | 132 | | | 133 | 784 | if constexpr(statically_spanable_range<R0>) { | 134 | 784 | constexpr size_t expected_size = s0.size_bytes(); | 135 | 784 | (assert_exact_byte_length<expected_size>(rs), ...); | 136 | | } else { | 137 | | const size_t expected_size = s0.size_bytes(); | 138 | | BOTAN_ARG_CHECK(((std::span<const std::ranges::range_value_t<Rs>>{rs}.size_bytes() == expected_size) && ...), | 139 | | "memory regions don't have equal lengths"); | 140 | | } | 141 | 784 | } |
|
142 | | |
143 | | } // namespace ranges |
144 | | |
145 | | namespace concepts { |
146 | | |
147 | | // TODO: C++20 provides concepts like std::ranges::range or ::sized_range |
148 | | // but at the time of this writing clang had not caught up on all |
149 | | // platforms. E.g. clang 14 on Xcode does not support ranges properly. |
150 | | |
151 | | template <typename IterT, typename ContainerT> |
152 | | concept container_iterator = |
153 | | std::same_as<IterT, typename ContainerT::iterator> || std::same_as<IterT, typename ContainerT::const_iterator>; |
154 | | |
155 | | template <typename PtrT, typename ContainerT> |
156 | | concept container_pointer = |
157 | | std::same_as<PtrT, typename ContainerT::pointer> || std::same_as<PtrT, typename ContainerT::const_pointer>; |
158 | | |
159 | | template <typename T> |
160 | | concept container = requires(T a) { |
161 | | { a.begin() } -> container_iterator<T>; |
162 | | { a.end() } -> container_iterator<T>; |
163 | | { a.cbegin() } -> container_iterator<T>; |
164 | | { a.cend() } -> container_iterator<T>; |
165 | | { a.size() } -> std::same_as<typename T::size_type>; |
166 | | typename T::value_type; |
167 | | }; |
168 | | |
169 | | template <typename T> |
170 | | concept contiguous_container = container<T> && requires(T a) { |
171 | | { a.data() } -> container_pointer<T>; |
172 | | }; |
173 | | |
174 | | template <typename T> |
175 | | concept has_empty = requires(T a) { |
176 | | { a.empty() } -> std::same_as<bool>; |
177 | | }; |
178 | | |
179 | | // clang-format off |
180 | | template <typename T> |
181 | | concept has_bounds_checked_accessors = container<T> && ( |
182 | | requires(T a, const T ac, typename T::size_type s) { |
183 | | { a.at(s) } -> std::same_as<typename T::value_type&>; |
184 | | { ac.at(s) } -> std::same_as<const typename T::value_type&>; |
185 | | } || |
186 | | requires(T a, const T ac, typename T::key_type k) { |
187 | | { a.at(k) } -> std::same_as<typename T::mapped_type&>; |
188 | | { ac.at(k) } -> std::same_as<const typename T::mapped_type&>; |
189 | | }); |
190 | | // clang-format on |
191 | | |
192 | | template <typename T> |
193 | | concept resizable_container = container<T> && requires(T& c, typename T::size_type s) { |
194 | | T(s); |
195 | | c.resize(s); |
196 | | }; |
197 | | |
198 | | template <typename T> |
199 | | concept reservable_container = container<T> && requires(T& c, typename T::size_type s) { c.reserve(s); }; |
200 | | |
201 | | template <typename T> |
202 | | concept resizable_byte_buffer = |
203 | | contiguous_container<T> && resizable_container<T> && std::same_as<typename T::value_type, uint8_t>; |
204 | | |
205 | | template <typename T> |
206 | | concept streamable = requires(std::ostream& os, T a) { os << a; }; |
207 | | |
208 | | template <class T> |
209 | | concept strong_type = is_strong_type_v<T>; |
210 | | |
211 | | template <class T> |
212 | | concept contiguous_strong_type = strong_type<T> && contiguous_container<T>; |
213 | | |
214 | | template <class T> |
215 | | concept integral_strong_type = strong_type<T> && std::integral<typename T::wrapped_type>; |
216 | | |
217 | | template <class T> |
218 | | concept unsigned_integral_strong_type = strong_type<T> && std::unsigned_integral<typename T::wrapped_type>; |
219 | | |
220 | | template <typename T, typename Capability> |
221 | | concept strong_type_with_capability = T::template has_capability<Capability>(); |
222 | | |
223 | | } // namespace concepts |
224 | | |
225 | | } // namespace Botan |
226 | | |
227 | | #endif |