30auto bytes_cast(
const T& v) ->
const uint8_t (&)[
sizeof(T)] {
31 return *
reinterpret_cast<const uint8_t * [sizeof(T)]
>(&v);
35 return *
reinterpret_cast<uint8_t * [sizeof(T)]
>(&v);
38template <
typename IntType, u
int32_t
byteOrder>
41template <
typename IntType>
43 inline static IntType
hton(
const IntType& value) {
45 const unsigned char* inbytes =
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())) {
75 static constexpr bool value = std::is_pointer<
decltype(
f((T*)
nullptr,
""))>
::value;
82 static_assert(
sizeof(
decltype(*buffer.data())) == 1,
"elements to large");
91 :
data_(reinterpret_cast<const uint8_t*>(buffer.c_str())),
size_(buffer.
size()) {
92 static_assert(
sizeof(
decltype(*buffer.c_str())) == 1,
"elements to large");
95 template <
size_t size>
97 :
data_(reinterpret_cast<const uint8_t*>(buffer)),
size_(
size - 1) {
98 static_assert(
size > 0,
"even an empty string must be 0-terminated");
101 template <
size_t size>
Definition: sign_utils.h:64
ByteBufferProxy()
Definition: sign_utils.h:104
ByteBufferProxy(const char(&buffer)[size])
Definition: sign_utils.h:96
const uint8_t * data() const
Definition: sign_utils.h:106
ByteBufferProxy(const uint8_t(&buffer)[size])
Definition: sign_utils.h:102
const uint8_t * end() const
Definition: sign_utils.h:110
ByteBufferProxy(const T &buffer, decltype(buffer.data())=nullptr)
Definition: sign_utils.h:80
const uint8_t * begin() const
Definition: sign_utils.h:109
size_t size_
Definition: sign_utils.h:114
ByteBufferProxy(const T &buffer, std::enable_if_t<!has_data< T >::value, decltype(buffer.c_str())>=nullptr)
Definition: sign_utils.h:89
size_t size() const
Definition: sign_utils.h:107
const uint8_t * data_
Definition: sign_utils.h:113
auto bytes_cast(const T &v) -> const uint8_t(&)[sizeof(T)]
Definition: sign_utils.h:30
auth_token_key_t hmac_t
Definition: sign_utils.h:27
std::array< uint8_t, 32 > auth_token_key_t
Definition: sign_utils.h:26
IntType hton(const IntType &value)
Definition: sign_utils.h:60
Definition: alloc_driver.h:20
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:43
Definition: sign_utils.h:39