Coverage Report

Created: 2024-11-29 06:10

/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