Coverage Report

Created: 2024-11-29 06:10

/src/botan/build/include/public/botan/mem_ops.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* Memory Operations
3
* (C) 1999-2009,2012,2015 Jack Lloyd
4
*
5
* Botan is released under the Simplified BSD License (see license.txt)
6
*/
7
8
#ifndef BOTAN_MEMORY_OPS_H_
9
#define BOTAN_MEMORY_OPS_H_
10
11
#include <botan/concepts.h>
12
#include <botan/types.h>
13
#include <array>
14
#include <cstring>
15
#include <ranges>
16
#include <span>
17
#include <type_traits>
18
#include <vector>
19
20
/*
21
The header mem_ops.h previously included the contents of allocator.h
22
23
Library code should always include allocator.h to see these
24
declarations; however when we are not building the library continue to
25
include the header here to avoid breaking application code.
26
*/
27
#if !defined(BOTAN_IS_BEING_BUILT)
28
   #include <botan/allocator.h>
29
#endif
30
31
namespace Botan {
32
33
/**
34
* Scrub memory contents in a way that a compiler should not elide,
35
* using some system specific technique. Note that this function might
36
* not zero the memory (for example, in some hypothetical
37
* implementation it might combine the memory contents with the output
38
* of a system PRNG), but if you can detect any difference in behavior
39
* at runtime then the clearing is side-effecting and you can just
40
* use `clear_mem`.
41
*
42
* Use this function to scrub memory just before deallocating it, or on
43
* a stack buffer before returning from the function.
44
*
45
* @param ptr a pointer to memory to scrub
46
* @param n the number of bytes pointed to by ptr
47
*/
48
BOTAN_PUBLIC_API(2, 0) void secure_scrub_memory(void* ptr, size_t n);
49
50
/**
51
* Scrub memory contents in a way that a compiler should not elide,
52
* using some system specific technique. Note that this function might
53
* not zero the memory.
54
*
55
* @param data  the data region to be scrubbed
56
*/
57
void secure_scrub_memory(ranges::contiguous_output_range auto&& data) {
58
   secure_scrub_memory(std::ranges::data(data), ranges::size_bytes(data));
59
}
60
61
#if !defined(BOTAN_IS_BEGIN_BUILT)
62
63
/**
64
* Memory comparison, input insensitive
65
* @param x a pointer to an array
66
* @param y a pointer to another array
67
* @param len the number of Ts in x and y
68
* @return 0xFF iff x[i] == y[i] forall i in [0...n) or 0x00 otherwise
69
*/
70
BOTAN_DEPRECATED("This function is deprecated, use constant_time_compare()")
71
BOTAN_PUBLIC_API(2, 9) uint8_t ct_compare_u8(const uint8_t x[], const uint8_t y[], size_t len);
72
73
#endif
74
75
/**
76
 * Memory comparison, input insensitive
77
 * @param x a range of bytes
78
 * @param y another range of bytes
79
 * @return true iff x and y have equal lengths and x[i] == y[i] forall i in [0...n)
80
 */
81
BOTAN_PUBLIC_API(3, 3) bool constant_time_compare(std::span<const uint8_t> x, std::span<const uint8_t> y);
82
83
/**
84
* Memory comparison, input insensitive
85
* @param x a pointer to an array
86
* @param y a pointer to another array
87
* @param len the number of Ts in x and y
88
* @return true iff x[i] == y[i] forall i in [0...n)
89
*/
90
0
inline bool constant_time_compare(const uint8_t x[], const uint8_t y[], size_t len) {
91
0
   // simply assumes that *x and *y point to len allocated bytes at least
92
0
   return constant_time_compare({x, len}, {y, len});
93
0
}
94
95
/**
96
* Zero out some bytes. Warning: use secure_scrub_memory instead if the
97
* memory is about to be freed or otherwise the compiler thinks it can
98
* elide the writes.
99
*
100
* @param ptr a pointer to memory to zero
101
* @param bytes the number of bytes to zero in ptr
102
*/
103
276M
inline constexpr void clear_bytes(void* ptr, size_t bytes) {
104
276M
   if(bytes > 0) {
105
153M
      std::memset(ptr, 0, bytes);
106
153M
   }
107
276M
}
108
109
/**
110
* Zero memory before use. This simply calls memset and should not be
111
* used in cases where the compiler cannot see the call as a
112
* side-effecting operation (for example, if calling clear_mem before
113
* deallocating memory, the compiler would be allowed to omit the call
114
* to memset entirely under the as-if rule.)
115
*
116
* @param ptr a pointer to an array of Ts to zero
117
* @param n the number of Ts pointed to by ptr
118
*/
119
template <typename T>
120
255M
inline constexpr void clear_mem(T* ptr, size_t n) {
121
255M
   clear_bytes(ptr, sizeof(T) * n);
122
255M
}
void Botan::clear_mem<unsigned long>(unsigned long*, unsigned long)
Line
Count
Source
120
254M
inline constexpr void clear_mem(T* ptr, size_t n) {
121
254M
   clear_bytes(ptr, sizeof(T) * n);
122
254M
}
void Botan::clear_mem<unsigned char>(unsigned char*, unsigned long)
Line
Count
Source
120
646k
inline constexpr void clear_mem(T* ptr, size_t n) {
121
646k
   clear_bytes(ptr, sizeof(T) * n);
122
646k
}
void Botan::clear_mem<unsigned int>(unsigned int*, unsigned long)
Line
Count
Source
120
78
inline constexpr void clear_mem(T* ptr, size_t n) {
121
78
   clear_bytes(ptr, sizeof(T) * n);
122
78
}
Unexecuted instantiation: void Botan::clear_mem<addrinfo>(addrinfo*, unsigned long)
void Botan::clear_mem<int>(int*, unsigned long)
Line
Count
Source
120
2.65k
inline constexpr void clear_mem(T* ptr, size_t n) {
121
2.65k
   clear_bytes(ptr, sizeof(T) * n);
122
2.65k
}
Unexecuted instantiation: void Botan::clear_mem<unsigned short>(unsigned short*, unsigned long)
123
124
/**
125
* Zero memory before use. This simply calls memset and should not be
126
* used in cases where the compiler cannot see the call as a
127
* side-effecting operation.
128
*
129
* @param mem a contiguous range of Ts to zero
130
*/
131
template <ranges::contiguous_output_range R>
132
inline constexpr void clear_mem(R&& mem)
133
   requires std::is_trivially_copyable_v<std::ranges::range_value_t<R>>
134
21.3M
{
135
21.3M
   clear_bytes(std::ranges::data(mem), ranges::size_bytes(mem));
136
21.3M
}
Unexecuted instantiation: _ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIsLm256EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS6_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEE
_ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS6_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEE
Line
Count
Source
134
21.3M
{
135
21.3M
   clear_bytes(std::ranges::data(mem), ranges::size_bytes(mem));
136
21.3M
}
_ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanImLm7EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS6_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEE
Line
Count
Source
134
2.66k
{
135
2.66k
   clear_bytes(std::ranges::data(mem), ranges::size_bytes(mem));
136
2.66k
}
Unexecuted instantiation: _ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIiLm256EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS6_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEE
Unexecuted instantiation: _ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm12EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS5_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeEE
_ZN5Botan9clear_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEEEEvOT_Qsr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRS6_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEE
Line
Count
Source
134
116
{
135
116
   clear_bytes(std::ranges::data(mem), ranges::size_bytes(mem));
136
116
}
137
138
/**
139
* Copy memory
140
* @param out the destination array
141
* @param in the source array
142
* @param n the number of elements of in/out
143
*/
144
template <typename T>
145
   requires std::is_trivial<typename std::decay<T>::type>::value
146
192M
inline constexpr void copy_mem(T* out, const T* in, size_t n) {
147
192M
   BOTAN_ASSERT_IMPLICATION(n > 0, in != nullptr && out != nullptr, "If n > 0 then args are not null");
148
149
192M
   if(in != nullptr && out != nullptr && n > 0) {
150
191M
      std::memmove(out, in, sizeof(T) * n);
151
191M
   }
152
192M
}
_ZN5Botan8copy_memImQsr3std10is_trivialINSt3__15decayIT_E4typeEEE5valueEEvPS3_PKS3_m
Line
Count
Source
146
138M
inline constexpr void copy_mem(T* out, const T* in, size_t n) {
147
138M
   BOTAN_ASSERT_IMPLICATION(n > 0, in != nullptr && out != nullptr, "If n > 0 then args are not null");
148
149
138M
   if(in != nullptr && out != nullptr && n > 0) {
150
138M
      std::memmove(out, in, sizeof(T) * n);
151
138M
   }
152
138M
}
_ZN5Botan8copy_memIhQsr3std10is_trivialINSt3__15decayIT_E4typeEEE5valueEEvPS3_PKS3_m
Line
Count
Source
146
53.1M
inline constexpr void copy_mem(T* out, const T* in, size_t n) {
147
53.1M
   BOTAN_ASSERT_IMPLICATION(n > 0, in != nullptr && out != nullptr, "If n > 0 then args are not null");
148
149
53.1M
   if(in != nullptr && out != nullptr && n > 0) {
150
52.3M
      std::memmove(out, in, sizeof(T) * n);
151
52.3M
   }
152
53.1M
}
Unexecuted instantiation: _ZN5Botan8copy_memIjQsr3std10is_trivialINSt3__15decayIT_E4typeEEE5valueEEvPS3_PKS3_m
_ZN5Botan8copy_memIiQsr3std10is_trivialINSt3__15decayIT_E4typeEEE5valueEEvPS3_PKS3_m
Line
Count
Source
146
13.8k
inline constexpr void copy_mem(T* out, const T* in, size_t n) {
147
13.8k
   BOTAN_ASSERT_IMPLICATION(n > 0, in != nullptr && out != nullptr, "If n > 0 then args are not null");
148
149
13.8k
   if(in != nullptr && out != nullptr && n > 0) {
150
13.8k
      std::memmove(out, in, sizeof(T) * n);
151
13.8k
   }
152
13.8k
}
Unexecuted instantiation: _ZN5Botan8copy_memItQsr3std10is_trivialINSt3__15decayIT_E4typeEEE5valueEEvPS3_PKS3_m
153
154
/**
155
* Copy memory
156
* @param out the destination array
157
* @param in the source array
158
*/
159
template <ranges::contiguous_output_range OutR, ranges::contiguous_range InR>
160
   requires std::is_same_v<std::ranges::range_value_t<OutR>, std::ranges::range_value_t<InR>> &&
161
            std::is_trivially_copyable_v<std::ranges::range_value_t<InR>>
162
4.86M
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
4.86M
   ranges::assert_equal_byte_lengths(out, in);
164
4.86M
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
4.86M
   } else if(ranges::size_bytes(out) > 0) {
167
4.86M
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
4.86M
   }
169
4.86M
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
141k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
141k
   ranges::assert_equal_byte_lengths(out, in);
164
141k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
141k
   } else if(ranges::size_bytes(out) > 0) {
167
141k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
141k
   }
169
141k
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeENS3_IKhLm18446744073709551615EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
71
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
71
   ranges::assert_equal_byte_lengths(out, in);
164
71
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
71
   } else if(ranges::size_bytes(out) > 0) {
167
71
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
71
   }
169
71
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERKNS2_6vectorIhNS_16secure_allocatorIhEEEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISJ_EESK_E4type10value_typeENSC_IXsr21__is_primary_templateINSD_Iu14__remove_cvrefIDTclL_ZNSF_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSL_IST_EESU_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISY_EEEvOSG_OSQ_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm4EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm4EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
39.9k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
39.9k
   ranges::assert_equal_byte_lengths(out, in);
164
39.9k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
39.9k
   } else if(ranges::size_bytes(out) > 0) {
167
39.9k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
39.9k
   }
169
39.9k
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm32EEETkNS1_16contiguous_rangeERNS3_IKhLm32EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm1EEETkNS1_16contiguous_rangeERNS2_5arrayImLm1EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm4EEETkNS1_16contiguous_rangeENS2_4spanImLm4EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm6EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm6EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
18.2k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
18.2k
   ranges::assert_equal_byte_lengths(out, in);
164
18.2k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
18.2k
   } else if(ranges::size_bytes(out) > 0) {
167
18.2k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
18.2k
   }
169
18.2k
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm48EEETkNS1_16contiguous_rangeERNS3_IKhLm48EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm6EEETkNS1_16contiguous_rangeENS2_4spanImLm6EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm8EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm8EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
8.83k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
8.83k
   ranges::assert_equal_byte_lengths(out, in);
164
8.83k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
8.83k
   } else if(ranges::size_bytes(out) > 0) {
167
8.83k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
8.83k
   }
169
8.83k
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm64EEETkNS1_16contiguous_rangeERNS3_IKhLm64EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm8EEETkNS1_16contiguous_rangeENS2_4spanImLm8EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm3EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm3EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
81
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
81
   ranges::assert_equal_byte_lengths(out, in);
164
81
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
81
   } else if(ranges::size_bytes(out) > 0) {
167
81
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
81
   }
169
81
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm24EEETkNS1_16contiguous_rangeERNS3_IKhLm24EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm3EEETkNS1_16contiguous_rangeENS2_4spanImLm3EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm28EEETkNS1_16contiguous_rangeENS3_IKhLm28EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
138
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
138
   ranges::assert_equal_byte_lengths(out, in);
164
138
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
138
   } else if(ranges::size_bytes(out) > 0) {
167
138
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
138
   }
169
138
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm28EEETkNS1_16contiguous_rangeERNS3_IKhLm28EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm72EEETkNS1_16contiguous_rangeERNS3_IKhLm72EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm9EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm9EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
9.01k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
9.01k
   ranges::assert_equal_byte_lengths(out, in);
164
9.01k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
9.01k
   } else if(ranges::size_bytes(out) > 0) {
167
9.01k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
9.01k
   }
169
9.01k
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm66EEETkNS1_16contiguous_rangeENS3_IKhLm66EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
23.6k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
23.6k
   ranges::assert_equal_byte_lengths(out, in);
164
23.6k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
23.6k
   } else if(ranges::size_bytes(out) > 0) {
167
23.6k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
23.6k
   }
169
23.6k
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm66EEETkNS1_16contiguous_rangeERNS3_IKhLm66EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm98EEETkNS1_16contiguous_rangeERNS3_IKhLm98EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm9EEETkNS1_16contiguous_rangeENS2_4spanImLm9EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm56EEETkNS1_16contiguous_rangeERNS2_4spanIKhLm18446744073709551615EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeENSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISW_EEEvOSE_OSO_
Line
Count
Source
162
462
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
462
   ranges::assert_equal_byte_lengths(out, in);
164
462
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
462
   } else if(ranges::size_bytes(out) > 0) {
167
462
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
462
   }
169
462
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm56EEETkNS1_16contiguous_rangeERNS2_6vectorIhNS_16secure_allocatorIhEEEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISI_EESJ_E4type10value_typeENSB_IXsr21__is_primary_templateINSC_Iu14__remove_cvrefIDTclL_ZNSE_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSK_ISS_EEST_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISX_EEEvOSF_OSP_
Line
Count
Source
162
1.87k
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
1.87k
   ranges::assert_equal_byte_lengths(out, in);
164
1.87k
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
1.87k
   } else if(ranges::size_bytes(out) > 0) {
167
1.87k
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
1.87k
   }
169
1.87k
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeERNS2_4spanIKmLm7EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeENSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISW_EEEvOSE_OSO_
Line
Count
Source
162
820
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
820
   ranges::assert_equal_byte_lengths(out, in);
164
820
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
820
   } else if(ranges::size_bytes(out) > 0) {
167
820
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
820
   }
169
820
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__16vectorIsNS2_9allocatorIsEEEETkNS1_16contiguous_rangeERKS6_Qaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeENSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISW_EEEvOSE_OSO_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS_16secure_allocatorIhEEEENS_18KyberSharedSecret_EJEEEEETkNS1_16contiguous_rangeERKSA_Qaasr3stdE9is_same_vINS4_11conditionalIXsr21__is_primary_templateINS4_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS4_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS4_26indirectly_readable_traitsISM_EESN_E4type10value_typeENSF_IXsr21__is_primary_templateINSG_Iu14__remove_cvrefIDTclL_ZNSI_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSO_ISW_EESX_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS11_EEEvOSJ_OST_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeES4_Qaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeENS6_IXsr21__is_primary_templateINS7_Iu14__remove_cvrefIDTclL_ZNS9_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSF_ISN_EESO_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISS_EEEvOSA_OSK_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__16vectorIhNS_16secure_allocatorIhEEEETkNS1_16contiguous_rangeENS2_4spanIKhLm18446744073709551615EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISI_EESJ_E4type10value_typeENSB_IXsr21__is_primary_templateINSC_Iu14__remove_cvrefIDTclL_ZNSE_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSK_ISS_EEST_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISX_EEEvOSF_OSP_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm7EEETkNS1_16contiguous_rangeERNS3_IKmLm7EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
4.62M
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
4.62M
   ranges::assert_equal_byte_lengths(out, in);
164
4.62M
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
4.62M
   } else if(ranges::size_bytes(out) > 0) {
167
4.62M
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
4.62M
   }
169
4.62M
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm57EEETkNS1_16contiguous_rangeENS2_4spanIKhLm57EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__16vectorIiNS2_9allocatorIiEEEETkNS1_16contiguous_rangeERKS6_Qaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeENSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISW_EEEvOSE_OSO_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEETkNS1_16contiguous_rangeERSA_Qaasr3stdE9is_same_vINS4_11conditionalIXsr21__is_primary_templateINS4_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS4_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS4_26indirectly_readable_traitsISL_EESM_E4type10value_typeENSE_IXsr21__is_primary_templateINSF_Iu14__remove_cvrefIDTclL_ZNSH_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSN_ISV_EESW_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS10_EEEvOSI_OSS_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS_6StrongINS2_6vectorIhNS2_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISL_EESM_E4type10value_typeENSE_IXsr21__is_primary_templateINSF_Iu14__remove_cvrefIDTclL_ZNSH_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSN_ISV_EESW_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS10_EEEvOSI_OSS_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_16SphincsTreeNode_EJEEEEETkNS1_16contiguous_rangeERKSA_Qaasr3stdE9is_same_vINS4_11conditionalIXsr21__is_primary_templateINS4_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS4_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS4_26indirectly_readable_traitsISM_EESN_E4type10value_typeENSF_IXsr21__is_primary_templateINSG_Iu14__remove_cvrefIDTclL_ZNSI_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSO_ISW_EESX_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS11_EEEvOSJ_OST_
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeENS2_4spanIKmLm7EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
656
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
656
   ranges::assert_equal_byte_lengths(out, in);
164
656
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
656
   } else if(ranges::size_bytes(out) > 0) {
167
656
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
656
   }
169
656
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeERNS2_4spanImLm7EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Line
Count
Source
162
656
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
656
   ranges::assert_equal_byte_lengths(out, in);
164
656
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
656
   } else if(ranges::size_bytes(out) > 0) {
167
656
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
656
   }
169
656
}
_ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm114EEETkNS1_16contiguous_rangeERNS3_IKhLm114EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Line
Count
Source
162
164
inline constexpr void copy_mem(OutR&& out, InR&& in) {
163
164
   ranges::assert_equal_byte_lengths(out, in);
164
164
   if(std::is_constant_evaluated()) {
165
0
      std::copy(std::ranges::begin(in), std::ranges::end(in), std::ranges::begin(out));
166
164
   } else if(ranges::size_bytes(out) > 0) {
167
164
      std::memmove(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
168
164
   }
169
164
}
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm56EEETkNS1_16contiguous_rangeERNS3_IKhLm56EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeENS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISU_EEEvOSC_OSM_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS2_6vectorIhNS2_9allocatorIhEEEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISI_EESJ_E4type10value_typeENSB_IXsr21__is_primary_templateINSC_Iu14__remove_cvrefIDTclL_ZNSE_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSK_ISS_EEST_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISX_EEEvOSF_OSP_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeENS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISV_EEEvOSD_OSN_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEETkNS1_16contiguous_rangeERSA_Qaasr3stdE9is_same_vINS4_11conditionalIXsr21__is_primary_templateINS4_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS4_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS4_26indirectly_readable_traitsISL_EESM_E4type10value_typeENSE_IXsr21__is_primary_templateINSF_Iu14__remove_cvrefIDTclL_ZNSH_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSN_ISV_EESW_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS10_EEEvOSI_OSS_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS_6StrongINS2_6vectorIhNS2_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEQaasr3stdE9is_same_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISL_EESM_E4type10value_typeENSE_IXsr21__is_primary_templateINSF_Iu14__remove_cvrefIDTclL_ZNSH_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSN_ISV_EESW_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS10_EEEvOSI_OSS_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_6StrongINSt3__16vectorIhNS3_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEETkNS1_16contiguous_rangeESA_Qaasr3stdE9is_same_vINS3_11conditionalIXsr21__is_primary_templateINS3_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS3_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS3_26indirectly_readable_traitsISI_EESJ_E4type10value_typeENSB_IXsr21__is_primary_templateINSC_Iu14__remove_cvrefIDTclL_ZNSE_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSK_ISS_EEST_E4type10value_typeEEsr3stdE23is_trivially_copyable_vISX_EEEvOSF_OSP_
Unexecuted instantiation: _ZN5Botan8copy_memITkNS_6ranges23contiguous_output_rangeERNS_10StrongSpanINS_6StrongINSt3__16vectorIhNS4_9allocatorIhEEEENS_14LMS_Tree_Node_EJEEEEETkNS1_16contiguous_rangeERNS2_IKSA_EEQaasr3stdE9is_same_vINS4_11conditionalIXsr21__is_primary_templateINS4_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS4_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS4_26indirectly_readable_traitsISN_EESO_E4type10value_typeENSG_IXsr21__is_primary_templateINSH_Iu14__remove_cvrefIDTclL_ZNSJ_5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENSP_ISX_EESY_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIS12_EEEvOSK_OSU_
170
171
/**
172
 * Copy a range of a trivially copyable type into another range of trivially
173
 * copyable type of matching byte length.
174
 */
175
template <ranges::contiguous_output_range ToR, ranges::contiguous_range FromR>
176
   requires std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>> &&
177
            std::is_trivially_copyable_v<std::ranges::range_value_t<ToR>>
178
15.9M
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
15.9M
   ranges::assert_equal_byte_lengths(out, in);
180
15.9M
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
15.9M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm4EEETkNS1_16contiguous_rangeERNS2_4spanIhLm32EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Line
Count
Source
178
10.0k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
10.0k
   ranges::assert_equal_byte_lengths(out, in);
180
10.0k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
10.0k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm4EEETkNS1_16contiguous_rangeERNS2_4spanIKhLm32EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEEEvOSO_OSE_
Line
Count
Source
178
19.3k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
19.3k
   ranges::assert_equal_byte_lengths(out, in);
180
19.3k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
19.3k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm32EEETkNS1_16contiguous_rangeERNS2_5arrayImLm4EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
14.6k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
14.6k
   ranges::assert_equal_byte_lengths(out, in);
180
14.6k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
14.6k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm8EEETkNS1_16contiguous_rangeENS3_IKmLm1EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
2.02M
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
2.02M
   ranges::assert_equal_byte_lengths(out, in);
180
2.02M
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
2.02M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm1EEETkNS1_16contiguous_rangeERNS3_IKhLm8EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
4.10M
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
4.10M
   ranges::assert_equal_byte_lengths(out, in);
180
4.10M
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
4.10M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm1EEETkNS1_16contiguous_rangeERNS3_IhLm8EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS7_IXsr21__is_primary_templateINS8_Iu14__remove_cvrefIDTclL_ZNSA_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSG_ISO_EESP_E4type10value_typeEEEEvOSL_OSB_
Line
Count
Source
178
135k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
135k
   ranges::assert_equal_byte_lengths(out, in);
180
135k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
135k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanIjLm1EEETkNS1_16contiguous_rangeERNS3_IKhLm4EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
7.87M
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
7.87M
   ranges::assert_equal_byte_lengths(out, in);
180
7.87M
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
7.87M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm4EEETkNS1_16contiguous_rangeENS3_IKjLm1EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
1.52M
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
1.52M
   ranges::assert_equal_byte_lengths(out, in);
180
1.52M
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
1.52M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanItLm1EEETkNS1_16contiguous_rangeERNS3_IKhLm2EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
168k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
168k
   ranges::assert_equal_byte_lengths(out, in);
180
168k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
168k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm2EEETkNS1_16contiguous_rangeENS3_IKtLm1EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
84
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
84
   ranges::assert_equal_byte_lengths(out, in);
180
84
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
84
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIjLm16EEETkNS1_16contiguous_rangeERNS2_4spanIKhLm64EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEEEvOSO_OSE_
Line
Count
Source
178
13.0k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
13.0k
   ranges::assert_equal_byte_lengths(out, in);
180
13.0k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
13.0k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKjLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Line
Count
Source
178
1.13k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
1.13k
   ranges::assert_equal_byte_lengths(out, in);
180
1.13k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
1.13k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanImLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Line
Count
Source
178
32.5k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
32.5k
   ranges::assert_equal_byte_lengths(out, in);
180
32.5k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
32.5k
}
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKmLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIjLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Line
Count
Source
178
14
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
14
   ranges::assert_equal_byte_lengths(out, in);
180
14
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
14
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_9Point448_EJEEETkNS1_16contiguous_rangeERNS3_4spanIKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS3_11conditionalIXsr21__is_primary_templateINS3_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS3_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS3_26indirectly_readable_traitsISK_EESL_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSD_IXsr21__is_primary_templateINSE_Iu14__remove_cvrefIDTclL_ZNSG_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSM_ISU_EESV_E4type10value_typeEEEEvOSR_OSH_
Line
Count
Source
178
462
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
462
   ranges::assert_equal_byte_lengths(out, in);
180
462
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
462
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNS_6StrongINSt3__15arrayIhLm56EEENS_11ScalarX448_EJEEETkNS1_16contiguous_rangeERNS3_4spanIKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS3_11conditionalIXsr21__is_primary_templateINS3_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS3_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS3_26indirectly_readable_traitsISK_EESL_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSD_IXsr21__is_primary_templateINSE_Iu14__remove_cvrefIDTclL_ZNSG_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSM_ISU_EESV_E4type10value_typeEEEEvOSR_OSH_
Line
Count
Source
178
2.33k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
2.33k
   ranges::assert_equal_byte_lengths(out, in);
180
2.33k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
2.33k
}
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm8EEETkNS1_16contiguous_rangeERNS3_ImLm1EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm1EEETkNS1_16contiguous_rangeERNS3_IhLm8EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm16EEETkNS1_16contiguous_rangeERNS3_ImLm2EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm2EEETkNS1_16contiguous_rangeERNS3_IhLm16EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanIjLm1EEETkNS1_16contiguous_rangeERNS3_IhLm4EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS7_IXsr21__is_primary_templateINS8_Iu14__remove_cvrefIDTclL_ZNSA_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSG_ISO_EESP_E4type10value_typeEEEEvOSL_OSB_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanItLm1EEETkNS1_16contiguous_rangeERNS3_IhLm2EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS7_IXsr21__is_primary_templateINS8_Iu14__remove_cvrefIDTclL_ZNSA_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSG_ISO_EESP_E4type10value_typeEEEEvOSL_OSB_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeENS3_IKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS7_IXsr21__is_primary_templateINS8_Iu14__remove_cvrefIDTclL_ZNSA_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSG_ISO_EESP_E4type10value_typeEEEEvOSL_OSB_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__16vectorIjNS_16secure_allocatorIjEEEETkNS1_16contiguous_rangeERNS_10StrongSpanIKNS_6StrongINS3_IhNS4_IhEEEENS_17CmceOrderingBits_EJEEEEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISO_EESP_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSH_IXsr21__is_primary_templateINSI_Iu14__remove_cvrefIDTclL_ZNSK_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSQ_ISY_EESZ_E4type10value_typeEEEEvOSV_OSL_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__16vectorINS_6StrongItNS_11CmceGfElem_EJEEENS2_9allocatorIS6_EEEETkNS1_16contiguous_rangeERNS2_4spanIKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISM_EESN_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSF_IXsr21__is_primary_templateINSG_Iu14__remove_cvrefIDTclL_ZNSI_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSO_ISW_EESX_E4type10value_typeEEEEvOST_OSJ_
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeERNS2_4spanIKhLm56EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEEEvOSO_OSE_
Line
Count
Source
178
4.66k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
4.66k
   ranges::assert_equal_byte_lengths(out, in);
180
4.66k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
4.66k
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm56EEETkNS1_16contiguous_rangeERNS2_5arrayImLm7EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Line
Count
Source
178
2.49k
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
2.49k
   ranges::assert_equal_byte_lengths(out, in);
180
2.49k
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
2.49k
}
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm1EEETkNS1_16contiguous_rangeES5_Qaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS6_IXsr21__is_primary_templateINS7_Iu14__remove_cvrefIDTclL_ZNS9_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSF_ISN_EESO_E4type10value_typeEEEEvOSK_OSA_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm56EEETkNS1_16contiguous_rangeERKNS2_5arrayImLm7EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISH_EESI_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINSA_IXsr21__is_primary_templateINSB_Iu14__remove_cvrefIDTclL_ZNSD_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSJ_ISR_EESS_E4type10value_typeEEEEvOSO_OSE_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm2EEETkNS1_16contiguous_rangeERNS3_ItLm1EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanItLm18446744073709551615EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayIhLm4EEETkNS1_16contiguous_rangeERNS3_ItLm2EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm15EEETkNS1_16contiguous_rangeERNS3_IhLm120EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
164
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
164
   ranges::assert_equal_byte_lengths(out, in);
180
164
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
164
}
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeERNS3_IhLm56EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm4EEETkNS1_16contiguous_rangeERKNS3_IhLm32EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
Unexecuted instantiation: _ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__15arrayImLm7EEETkNS1_16contiguous_rangeERKNS3_IhLm56EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS9_IXsr21__is_primary_templateINSA_Iu14__remove_cvrefIDTclL_ZNSC_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSI_ISQ_EESR_E4type10value_typeEEEEvOSN_OSD_
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeENSt3__14spanImLm1EEETkNS1_16contiguous_rangeERNS3_IKhLm18446744073709551615EEEQaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEsr3stdE23is_trivially_copyable_vINS8_IXsr21__is_primary_templateINS9_Iu14__remove_cvrefIDTclL_ZNSB_5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENSH_ISP_EESQ_E4type10value_typeEEEEvOSM_OSC_
Line
Count
Source
178
784
inline constexpr void typecast_copy(ToR&& out, FromR&& in) {
179
784
   ranges::assert_equal_byte_lengths(out, in);
180
784
   std::memcpy(std::ranges::data(out), std::ranges::data(in), ranges::size_bytes(out));
181
784
}
182
183
/**
184
 * Copy a range of trivially copyable type into an instance of trivially
185
 * copyable type with matching length.
186
 */
187
template <typename ToT, ranges::contiguous_range FromR>
188
   requires std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>> && std::is_trivially_copyable_v<ToT> &&
189
            (!std::ranges::range<ToT>)
190
12.2M
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
12.2M
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
12.2M
}
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm8EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISL_EEEvRSL_OSB_
Line
Count
Source
190
4.10M
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
4.10M
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
4.10M
}
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm8EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISK_EEEvRSK_OSA_
Line
Count
Source
190
135k
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
135k
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
135k
}
_ZN5Botan13typecast_copyIjTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm4EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISL_EEEvRSL_OSB_
Line
Count
Source
190
7.87M
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
7.87M
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
7.87M
}
_ZN5Botan13typecast_copyItTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm2EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISL_EEEvRSL_OSB_
Line
Count
Source
190
168k
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
168k
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
168k
}
Unexecuted instantiation: _ZN5Botan13typecast_copyIjTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm4EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISK_EEEvRSK_OSA_
Unexecuted instantiation: _ZN5Botan13typecast_copyItTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm2EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISD_EESE_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISK_EEEvRSK_OSA_
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm18446744073709551615EEEQaaaasr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEsr3stdE23is_trivially_copyable_vIT_Entsr3std6rangesE5rangeISL_EEEvRSL_OSB_
Line
Count
Source
190
784
inline constexpr void typecast_copy(ToT& out, FromR&& in) noexcept {
191
784
   typecast_copy(std::span<ToT, 1>(&out, 1), in);
192
784
}
193
194
/**
195
 * Copy an instance of trivially copyable type into a range of trivially
196
 * copyable type with matching length.
197
 */
198
template <ranges::contiguous_output_range ToR, typename FromT>
199
   requires std::is_trivially_copyable_v<FromT> &&
200
            (!std::ranges::range<FromT>) && std::is_trivially_copyable_v<std::ranges::range_value_t<ToR>>
201
3.55M
inline constexpr void typecast_copy(ToR&& out, const FromT& in) {
202
3.55M
   typecast_copy(out, std::span<const FromT, 1>(&in, 1));
203
3.55M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm8EEEmQaaaasr3stdE23is_trivially_copyable_vIT0_Entsr3std6rangesE5rangeIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEEvOSB_RKS6_
Line
Count
Source
201
2.02M
inline constexpr void typecast_copy(ToR&& out, const FromT& in) {
202
2.02M
   typecast_copy(out, std::span<const FromT, 1>(&in, 1));
203
2.02M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm4EEEjQaaaasr3stdE23is_trivially_copyable_vIT0_Entsr3std6rangesE5rangeIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEEvOSB_RKS6_
Line
Count
Source
201
1.52M
inline constexpr void typecast_copy(ToR&& out, const FromT& in) {
202
1.52M
   typecast_copy(out, std::span<const FromT, 1>(&in, 1));
203
1.52M
}
_ZN5Botan13typecast_copyITkNS_6ranges23contiguous_output_rangeERNSt3__14spanIhLm2EEEtQaaaasr3stdE23is_trivially_copyable_vIT0_Entsr3std6rangesE5rangeIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEEvOSB_RKS6_
Line
Count
Source
201
84
inline constexpr void typecast_copy(ToR&& out, const FromT& in) {
202
84
   typecast_copy(out, std::span<const FromT, 1>(&in, 1));
203
84
}
204
205
/**
206
 * Create a trivial type by bit-casting a range of trivially copyable type with
207
 * matching length into it.
208
 */
209
template <typename ToT, ranges::contiguous_range FromR>
210
   requires std::is_default_constructible_v<ToT> && std::is_trivially_copyable_v<ToT> &&
211
            std::is_trivially_copyable_v<std::ranges::range_value_t<FromR>>
212
12.3M
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
12.3M
   ToT dst;
214
12.3M
   typecast_copy(dst, src);
215
12.3M
   return dst;
216
12.3M
}
_ZN5Botan13typecast_copyINSt3__15arrayImLm4EEETkNS_6ranges16contiguous_rangeENS1_4spanIhLm32EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS7_Esr3stdE23is_trivially_copyable_vINS1_11conditionalIXsr21__is_primary_templateINS1_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS1_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS1_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEEES7_OSC_
Line
Count
Source
212
10.0k
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
10.0k
   ToT dst;
214
10.0k
   typecast_copy(dst, src);
215
10.0k
   return dst;
216
10.0k
}
_ZN5Botan13typecast_copyINSt3__15arrayImLm4EEETkNS_6ranges16contiguous_rangeENS1_4spanIKhLm32EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS8_Esr3stdE23is_trivially_copyable_vINS1_11conditionalIXsr21__is_primary_templateINS1_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS1_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS1_26indirectly_readable_traitsISG_EESH_E4type10value_typeEEEES8_OSD_
Line
Count
Source
212
19.3k
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
19.3k
   ToT dst;
214
19.3k
   typecast_copy(dst, src);
215
19.3k
   return dst;
216
19.3k
}
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm8EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS7_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEEES7_OSC_
Line
Count
Source
212
4.10M
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
4.10M
   ToT dst;
214
4.10M
   typecast_copy(dst, src);
215
4.10M
   return dst;
216
4.10M
}
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm8EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEES6_OSB_
Line
Count
Source
212
135k
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
135k
   ToT dst;
214
135k
   typecast_copy(dst, src);
215
135k
   return dst;
216
135k
}
_ZN5Botan13typecast_copyIjTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm4EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS7_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEEES7_OSC_
Line
Count
Source
212
7.87M
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
7.87M
   ToT dst;
214
7.87M
   typecast_copy(dst, src);
215
7.87M
   return dst;
216
7.87M
}
_ZN5Botan13typecast_copyItTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm2EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS7_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEEES7_OSC_
Line
Count
Source
212
168k
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
168k
   ToT dst;
214
168k
   typecast_copy(dst, src);
215
168k
   return dst;
216
168k
}
_ZN5Botan13typecast_copyINS_6StrongINSt3__15arrayIhLm56EEENS_9Point448_EJEEETkNS_6ranges16contiguous_rangeERNS2_4spanIKhLm18446744073709551615EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vISC_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISK_EESL_E4type10value_typeEEEESC_OSH_
Line
Count
Source
212
462
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
462
   ToT dst;
214
462
   typecast_copy(dst, src);
215
462
   return dst;
216
462
}
_ZN5Botan13typecast_copyINS_6StrongINSt3__15arrayIhLm56EEENS_11ScalarX448_EJEEETkNS_6ranges16contiguous_rangeERNS2_4spanIKhLm18446744073709551615EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vISC_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISK_EESL_E4type10value_typeEEEESC_OSH_
Line
Count
Source
212
2.33k
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
2.33k
   ToT dst;
214
2.33k
   typecast_copy(dst, src);
215
2.33k
   return dst;
216
2.33k
}
Unexecuted instantiation: _ZN5Botan13typecast_copyIjTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm4EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEES6_OSB_
Unexecuted instantiation: _ZN5Botan13typecast_copyItTkNS_6ranges16contiguous_rangeERNSt3__14spanIhLm2EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS6_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISE_EESF_E4type10value_typeEEEES6_OSB_
_ZN5Botan13typecast_copyImTkNS_6ranges16contiguous_rangeERNSt3__14spanIKhLm18446744073709551615EEEQaaaasr3stdE26is_default_constructible_vIT_Esr3stdE23is_trivially_copyable_vIS7_Esr3stdE23is_trivially_copyable_vINS2_11conditionalIXsr21__is_primary_templateINS2_15iterator_traitsIu14__remove_cvrefIDTclL_ZNS2_6ranges5__cpo5beginEEclsr3stdE7declvalIRT0_EEEEEEEEE5valueENS2_26indirectly_readable_traitsISF_EESG_E4type10value_typeEEEES7_OSC_
Line
Count
Source
212
784
inline constexpr ToT typecast_copy(FromR&& src) noexcept {
213
784
   ToT dst;
214
784
   typecast_copy(dst, src);
215
784
   return dst;
216
784
}
217
218
// TODO: deprecate and replace
219
template <typename T>
220
inline constexpr void typecast_copy(uint8_t out[], T in[], size_t N)
221
   requires std::is_trivially_copyable<T>::value
222
{
223
   // asserts that *in and *out point to the correct amount of memory
224
   typecast_copy(std::span<uint8_t>(out, sizeof(T) * N), std::span<const T>(in, N));
225
}
226
227
// TODO: deprecate and replace
228
template <typename T>
229
inline constexpr void typecast_copy(T out[], const uint8_t in[], size_t N)
230
   requires std::is_trivial<T>::value
231
{
232
   // asserts that *in and *out point to the correct amount of memory
233
   typecast_copy(std::span<T>(out, N), std::span<const uint8_t>(in, N * sizeof(T)));
234
}
235
236
// TODO: deprecate and replace
237
template <typename T>
238
inline constexpr void typecast_copy(uint8_t out[], const T& in) {
239
   // asserts that *out points to the correct amount of memory
240
   typecast_copy(std::span<uint8_t, sizeof(T)>(out, sizeof(T)), in);
241
}
242
243
// TODO: deprecate and replace
244
template <typename T>
245
   requires std::is_trivial<typename std::decay<T>::type>::value
246
inline constexpr void typecast_copy(T& out, const uint8_t in[]) {
247
   // asserts that *in points to the correct amount of memory
248
   typecast_copy(out, std::span<const uint8_t, sizeof(T)>(in, sizeof(T)));
249
}
250
251
// TODO: deprecate and replace
252
template <typename To>
253
   requires std::is_trivial<To>::value
254
inline constexpr To typecast_copy(const uint8_t src[]) noexcept {
255
   // asserts that *src points to the correct amount of memory
256
   return typecast_copy<To>(std::span<const uint8_t, sizeof(To)>(src, sizeof(To)));
257
}
258
259
#if !defined(BOTAN_IS_BEGIN_BUILT)
260
/**
261
* Set memory to a fixed value
262
* @param ptr a pointer to an array of bytes
263
* @param n the number of Ts pointed to by ptr
264
* @param val the value to set each byte to
265
*/
266
0
BOTAN_DEPRECATED("This function is deprecated") inline constexpr void set_mem(uint8_t* ptr, size_t n, uint8_t val) {
267
0
   if(n > 0) {
268
0
      std::memset(ptr, val, n);
269
0
   }
270
0
}
271
#endif
272
273
58.5k
inline const uint8_t* cast_char_ptr_to_uint8(const char* s) {
274
58.5k
   return reinterpret_cast<const uint8_t*>(s);
275
58.5k
}
276
277
235k
inline const char* cast_uint8_ptr_to_char(const uint8_t* b) {
278
235k
   return reinterpret_cast<const char*>(b);
279
235k
}
280
281
0
inline uint8_t* cast_char_ptr_to_uint8(char* s) {
282
0
   return reinterpret_cast<uint8_t*>(s);
283
0
}
284
285
27.3k
inline char* cast_uint8_ptr_to_char(uint8_t* b) {
286
27.3k
   return reinterpret_cast<char*>(b);
287
27.3k
}
288
289
#if !defined(BOTAN_IS_BEING_BUILT)
290
/**
291
* Memory comparison, input insensitive
292
* @param p1 a pointer to an array
293
* @param p2 a pointer to another array
294
* @param n the number of Ts in p1 and p2
295
* @return true iff p1[i] == p2[i] forall i in [0...n)
296
*/
297
template <typename T>
298
BOTAN_DEPRECATED("This function is deprecated")
299
inline bool same_mem(const T* p1, const T* p2, size_t n) {
300
   volatile T difference = 0;
301
302
   for(size_t i = 0; i != n; ++i) {
303
      difference = difference | (p1[i] ^ p2[i]);
304
   }
305
306
   return difference == 0;
307
}
308
#endif
309
310
#if !defined(BOTAN_IS_BEING_BUILT)
311
312
template <typename T, typename Alloc>
313
BOTAN_DEPRECATED("The buffer_insert functions are deprecated")
314
size_t buffer_insert(std::vector<T, Alloc>& buf, size_t buf_offset, const T input[], size_t input_length) {
315
   BOTAN_ASSERT_NOMSG(buf_offset <= buf.size());
316
   const size_t to_copy = std::min(input_length, buf.size() - buf_offset);
317
   if(to_copy > 0) {
318
      copy_mem(&buf[buf_offset], input, to_copy);
319
   }
320
   return to_copy;
321
}
322
323
template <typename T, typename Alloc, typename Alloc2>
324
BOTAN_DEPRECATED("The buffer_insert functions are deprecated")
325
size_t buffer_insert(std::vector<T, Alloc>& buf, size_t buf_offset, const std::vector<T, Alloc2>& input) {
326
   BOTAN_ASSERT_NOMSG(buf_offset <= buf.size());
327
   const size_t to_copy = std::min(input.size(), buf.size() - buf_offset);
328
   if(to_copy > 0) {
329
      copy_mem(&buf[buf_offset], input.data(), to_copy);
330
   }
331
   return to_copy;
332
}
333
334
#endif
335
336
/**
337
* XOR arrays. Postcondition out[i] = in[i] ^ out[i] forall i = 0...length
338
* @param out the input/output range
339
* @param in the read-only input range
340
*/
341
inline constexpr void xor_buf(ranges::contiguous_output_range<uint8_t> auto&& out,
342
17.9k
                              ranges::contiguous_range<uint8_t> auto&& in) {
343
17.9k
   ranges::assert_equal_byte_lengths(out, in);
344
345
17.9k
   std::span<uint8_t> o(out);
346
17.9k
   std::span<const uint8_t> i(in);
347
348
27.9k
   for(; o.size_bytes() >= 32; o = o.subspan(32), i = i.subspan(32)) {
349
10.0k
      auto x = typecast_copy<std::array<uint64_t, 4>>(o.template first<32>());
350
10.0k
      const auto y = typecast_copy<std::array<uint64_t, 4>>(i.template first<32>());
351
352
10.0k
      x[0] ^= y[0];
353
10.0k
      x[1] ^= y[1];
354
10.0k
      x[2] ^= y[2];
355
10.0k
      x[3] ^= y[3];
356
357
10.0k
      typecast_copy(o.template first<32>(), x);
358
10.0k
   }
359
360
228k
   for(size_t off = 0; off != o.size_bytes(); ++off) {
361
210k
      o[off] ^= i[off];
362
210k
   }
363
17.9k
}
_ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEENSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeIhEENS4_IKhLm18446744073709551615EEEEEvOT_OT0_
Line
Count
Source
342
17.6k
                              ranges::contiguous_range<uint8_t> auto&& in) {
343
17.6k
   ranges::assert_equal_byte_lengths(out, in);
344
345
17.6k
   std::span<uint8_t> o(out);
346
17.6k
   std::span<const uint8_t> i(in);
347
348
27.6k
   for(; o.size_bytes() >= 32; o = o.subspan(32), i = i.subspan(32)) {
349
10.0k
      auto x = typecast_copy<std::array<uint64_t, 4>>(o.template first<32>());
350
10.0k
      const auto y = typecast_copy<std::array<uint64_t, 4>>(i.template first<32>());
351
352
10.0k
      x[0] ^= y[0];
353
10.0k
      x[1] ^= y[1];
354
10.0k
      x[2] ^= y[2];
355
10.0k
      x[3] ^= y[3];
356
357
10.0k
      typecast_copy(o.template first<32>(), x);
358
10.0k
   }
359
360
223k
   for(size_t off = 0; off != o.size_bytes(); ++off) {
361
206k
      o[off] ^= i[off];
362
206k
   }
363
17.6k
}
_ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEENSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeIhEERKNS3_6vectorIhNS_16secure_allocatorIhEEEEEEvOT_OT0_
Line
Count
Source
342
245
                              ranges::contiguous_range<uint8_t> auto&& in) {
343
245
   ranges::assert_equal_byte_lengths(out, in);
344
345
245
   std::span<uint8_t> o(out);
346
245
   std::span<const uint8_t> i(in);
347
348
245
   for(; o.size_bytes() >= 32; o = o.subspan(32), i = i.subspan(32)) {
349
0
      auto x = typecast_copy<std::array<uint64_t, 4>>(o.template first<32>());
350
0
      const auto y = typecast_copy<std::array<uint64_t, 4>>(i.template first<32>());
351
352
0
      x[0] ^= y[0];
353
0
      x[1] ^= y[1];
354
0
      x[2] ^= y[2];
355
0
      x[3] ^= y[3];
356
357
0
      typecast_copy(o.template first<32>(), x);
358
0
   }
359
360
4.16k
   for(size_t off = 0; off != o.size_bytes(); ++off) {
361
3.92k
      o[off] ^= i[off];
362
3.92k
   }
363
245
}
Unexecuted instantiation: _ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEERNSt3__16vectorIhNS3_9allocatorIhEEEETkNS1_16contiguous_rangeIhEERNS3_4spanIKhLm18446744073709551615EEEEEvOT_OT0_
Unexecuted instantiation: _ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEERNSt3__15arrayIhLm12EEETkNS1_16contiguous_rangeIhEERNS3_4spanIKhLm18446744073709551615EEEEEvOT_OT0_
364
365
/**
366
* XOR arrays. Postcondition out[i] = in1[i] ^ in2[i] forall i = 0...length
367
* @param out the output range
368
* @param in1 the first input range
369
* @param in2 the second input range
370
*/
371
inline constexpr void xor_buf(ranges::contiguous_output_range<uint8_t> auto&& out,
372
                              ranges::contiguous_range<uint8_t> auto&& in1,
373
3.84k
                              ranges::contiguous_range<uint8_t> auto&& in2) {
374
3.84k
   ranges::assert_equal_byte_lengths(out, in1, in2);
375
376
3.84k
   std::span o{out};
377
3.84k
   std::span i1{in1};
378
3.84k
   std::span i2{in2};
379
380
8.50k
   for(; o.size_bytes() >= 32; o = o.subspan(32), i1 = i1.subspan(32), i2 = i2.subspan(32)) {
381
4.66k
      auto x = typecast_copy<std::array<uint64_t, 4>>(i1.template first<32>());
382
4.66k
      const auto y = typecast_copy<std::array<uint64_t, 4>>(i2.template first<32>());
383
384
4.66k
      x[0] ^= y[0];
385
4.66k
      x[1] ^= y[1];
386
4.66k
      x[2] ^= y[2];
387
4.66k
      x[3] ^= y[3];
388
389
4.66k
      typecast_copy(o.template first<32>(), x);
390
4.66k
   }
391
392
21.7k
   for(size_t off = 0; off != o.size_bytes(); ++off) {
393
17.9k
      o[off] = i1[off] ^ i2[off];
394
17.9k
   }
395
3.84k
}
_ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEENSt3__14spanIhLm18446744073709551615EEETkNS1_16contiguous_rangeIhEENS4_IKhLm18446744073709551615EEETkNS6_IhEES8_EEvOT_OT0_OT1_
Line
Count
Source
373
3.84k
                              ranges::contiguous_range<uint8_t> auto&& in2) {
374
3.84k
   ranges::assert_equal_byte_lengths(out, in1, in2);
375
376
3.84k
   std::span o{out};
377
3.84k
   std::span i1{in1};
378
3.84k
   std::span i2{in2};
379
380
8.50k
   for(; o.size_bytes() >= 32; o = o.subspan(32), i1 = i1.subspan(32), i2 = i2.subspan(32)) {
381
4.66k
      auto x = typecast_copy<std::array<uint64_t, 4>>(i1.template first<32>());
382
4.66k
      const auto y = typecast_copy<std::array<uint64_t, 4>>(i2.template first<32>());
383
384
4.66k
      x[0] ^= y[0];
385
4.66k
      x[1] ^= y[1];
386
4.66k
      x[2] ^= y[2];
387
4.66k
      x[3] ^= y[3];
388
389
4.66k
      typecast_copy(o.template first<32>(), x);
390
4.66k
   }
391
392
21.7k
   for(size_t off = 0; off != o.size_bytes(); ++off) {
393
17.9k
      o[off] = i1[off] ^ i2[off];
394
17.9k
   }
395
3.84k
}
Unexecuted instantiation: _ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEERNSt3__16vectorIhNS3_9allocatorIhEEEETkNS1_16contiguous_rangeIhEERNS3_4spanIKhLm18446744073709551615EEETkNS9_IhEERKNS4_IhNS_16secure_allocatorIhEEEEEEvOT_OT0_OT1_
Unexecuted instantiation: _ZN5Botan7xor_bufITkNS_6ranges23contiguous_output_rangeIhEERNSt3__16vectorIhNS3_9allocatorIhEEEETkNS1_16contiguous_rangeIhEERNS3_4spanIKhLm18446744073709551615EEETkNS9_IhEESC_EEvOT_OT0_OT1_
396
397
/**
398
* XOR arrays. Postcondition out[i] = in[i] ^ out[i] forall i = 0...length
399
* @param out the input/output buffer
400
* @param in the read-only input buffer
401
* @param length the length of the buffers
402
*/
403
17.6k
inline void xor_buf(uint8_t out[], const uint8_t in[], size_t length) {
404
   // simply assumes that *out and *in point to "length" allocated bytes at least
405
17.6k
   xor_buf(std::span{out, length}, std::span{in, length});
406
17.6k
}
407
408
/**
409
* XOR arrays. Postcondition out[i] = in[i] ^ in2[i] forall i = 0...length
410
* @param out the output buffer
411
* @param in the first input buffer
412
* @param in2 the second input buffer
413
* @param length the length of the three buffers
414
*/
415
3.84k
inline void xor_buf(uint8_t out[], const uint8_t in[], const uint8_t in2[], size_t length) {
416
   // simply assumes that *out, *in, and *in2 point to "length" allocated bytes at least
417
3.84k
   xor_buf(std::span{out, length}, std::span{in, length}, std::span{in2, length});
418
3.84k
}
419
420
// TODO: deprecate and replace, use .subspan()
421
0
inline void xor_buf(std::span<uint8_t> out, std::span<const uint8_t> in, size_t n) {
422
0
   BOTAN_ARG_CHECK(out.size() >= n, "output span is too small");
423
0
   BOTAN_ARG_CHECK(in.size() >= n, "input span is too small");
424
0
   xor_buf(out.first(n), in.first(n));
425
0
}
Unexecuted instantiation: Botan::xor_buf(std::__1::span<unsigned char, 18446744073709551615ul>, std::__1::span<unsigned char const, 18446744073709551615ul>, unsigned long)
Unexecuted instantiation: Botan::xor_buf(std::__1::span<unsigned char, 18446744073709551615ul>, std::__1::span<unsigned char const, 18446744073709551615ul>, unsigned long)
426
427
// TODO: deprecate and replace, use .subspan()
428
template <typename Alloc>
429
31
void xor_buf(std::vector<uint8_t, Alloc>& out, const uint8_t* in, size_t n) {
430
31
   BOTAN_ARG_CHECK(out.size() >= n, "output vector is too small");
431
   // simply assumes that *in points to "n" allocated bytes at least
432
31
   xor_buf(std::span{out}.first(n), std::span{in, n});
433
31
}
Unexecuted instantiation: void Botan::xor_buf<Botan::secure_allocator<unsigned char> >(std::__1::vector<unsigned char, Botan::secure_allocator<unsigned char> >&, unsigned char const*, unsigned long)
void Botan::xor_buf<std::__1::allocator<unsigned char> >(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >&, unsigned char const*, unsigned long)
Line
Count
Source
429
31
void xor_buf(std::vector<uint8_t, Alloc>& out, const uint8_t* in, size_t n) {
430
31
   BOTAN_ARG_CHECK(out.size() >= n, "output vector is too small");
431
   // simply assumes that *in points to "n" allocated bytes at least
432
31
   xor_buf(std::span{out}.first(n), std::span{in, n});
433
31
}
434
435
// TODO: deprecate and replace
436
template <typename Alloc, typename Alloc2>
437
void xor_buf(std::vector<uint8_t, Alloc>& out, const uint8_t* in, const std::vector<uint8_t, Alloc2>& in2, size_t n) {
438
   BOTAN_ARG_CHECK(out.size() >= n, "output vector is too small");
439
   BOTAN_ARG_CHECK(in2.size() >= n, "input vector is too small");
440
   // simply assumes that *in points to "n" allocated bytes at least
441
   xor_buf(std::span{out}.first(n), std::span{in, n}, std::span{in2}.first(n));
442
}
443
444
template <typename Alloc, typename Alloc2>
445
245
std::vector<uint8_t, Alloc>& operator^=(std::vector<uint8_t, Alloc>& out, const std::vector<uint8_t, Alloc2>& in) {
446
245
   if(out.size() < in.size()) {
447
0
      out.resize(in.size());
448
0
   }
449
450
245
   xor_buf(std::span{out}.first(in.size()), in);
451
245
   return out;
452
245
}
453
454
}  // namespace Botan
455
456
#endif