29auto bytes_cast(
const T& v) ->
const uint8_t (&)[
sizeof(T)] {
30 return *
reinterpret_cast<const uint8_t(*)[sizeof(T)]
>(&v);
34 return *
reinterpret_cast<uint8_t(*)[sizeof(T)]
>(&v);
37template <
typename IntType, u
int32_t
byteOrder>
40template <
typename IntType>
42 inline static IntType
hton(
const IntType& value) {
44 const unsigned char* inbytes =
45 reinterpret_cast<const unsigned char*
>(&value);
46 unsigned char* outbytes =
reinterpret_cast<unsigned char*
>(&result);
47 for (
int i =
sizeof(IntType) - 1; i >= 0; --i) {
48 *(outbytes++) = inbytes[i];
54template <
typename IntType>
56 inline static IntType
hton(
const IntType& value) {
return value; }
59template <
typename IntType>
60inline IntType
hton(
const IntType& value) {
68 static int f(
const U*,
const void*) {
72 static int*
f(
const U* u,
decltype(u->data())) {
76 std::is_pointer<
decltype(
f((T*)
nullptr,
""))>
::value;
82 :
data_(reinterpret_cast<const uint8_t*>(buffer.
data())),
84 static_assert(
sizeof(
decltype(*buffer.data())) == 1,
"elements to large");
94 :
data_(reinterpret_cast<const uint8_t*>(buffer.c_str())),
96 static_assert(
sizeof(
decltype(*buffer.c_str())) == 1,
"elements to large");
99 template <
size_t size>
101 :
data_(reinterpret_cast<const uint8_t*>(buffer)),
size_(
size - 1) {
102 static_assert(
size > 0,
"even an empty string must be 0-terminated");
105 template <
size_t size>
Definition: sign_utils.h:64
ByteBufferProxy()
Definition: sign_utils.h:108
ByteBufferProxy(const char(&buffer)[size])
Definition: sign_utils.h:100
const uint8_t * data() const
Definition: sign_utils.h:110
ByteBufferProxy(const uint8_t(&buffer)[size])
Definition: sign_utils.h:106
const uint8_t * end() const
Definition: sign_utils.h:114
ByteBufferProxy(const T &buffer, decltype(buffer.data())=nullptr)
Definition: sign_utils.h:81
const uint8_t * begin() const
Definition: sign_utils.h:113
size_t size_
Definition: sign_utils.h:118
ByteBufferProxy(const T &buffer, std::enable_if_t<!has_data< T >::value, decltype(buffer.c_str())>=nullptr)
Definition: sign_utils.h:91
size_t size() const
Definition: sign_utils.h:111
const uint8_t * data_
Definition: sign_utils.h:117
auto bytes_cast(const T &v) -> const uint8_t(&)[sizeof(T)]
Definition: sign_utils.h:29
auth_token_key_t hmac_t
Definition: sign_utils.h:26
std::array< std::uint8_t, 32 > auth_token_key_t
Definition: sign_utils.h:25
IntType hton(const IntType &value)
Definition: sign_utils.h:60
Definition: alloc_utils.cpp:23
Definition: sign_utils.h:66
static int f(const U *, const void *)
Definition: sign_utils.h:68
static constexpr bool value
Definition: sign_utils.h:75
static int * f(const U *u, decltype(u->data()))
Definition: sign_utils.h:72
static IntType hton(const IntType &value)
Definition: sign_utils.h:56
static IntType hton(const IntType &value)
Definition: sign_utils.h:42
Definition: sign_utils.h:38