20 inline constexpr magicNumberType(
void) : value16(1) {}
27 static const bool _isLittleEndian = (magicNumberType().value8[0] == 1);
31 inline T swapOrder(
const T&
value)
37 void* result_p =
static_cast<void*
>(&result);
38 const void* value_p =
static_cast<const void*
>(&
value);
40 const uint8_t* valueItr =
static_cast<const uint8_t*
>(value_p) +
sizeof(T) - 1;
41 uint8_t* resultItr =
static_cast<uint8_t*
>(result_p);
42 uint8_t* resultEnd = resultItr +
sizeof(T);
45 for(; resultItr != resultEnd; valueItr--, resultItr++)
46 *resultItr = *valueItr;
65 else return detail::swapOrder(
value);
68 template<
typename Iterator>
72 for(Iterator itr=
begin; itr !=
end; ++itr)
73 *itr = detail::swapOrder(*itr);
83 else return detail::swapOrder(
value);
86 template<
typename Iterator>
90 for(Iterator itr=
begin; itr !=
end; ++itr)
91 *itr = detail::swapOrder(*itr);
static const bool isBigEndian
Definition: Endian.h:56
static const bool isLittleEndian
Definition: Endian.h:55
T big(const T &value)
Definition: Endian.h:80
T little(const T &value)
Definition: Endian.h:62
Definition: aggregatebsdf.h:29
auto end(T &&t)
Definition: iterator_util.h:43
auto begin(T &&t)
Definition: iterator_util.h:29
decltype(auto) value(T &&t)
return the value of an attribute, or if not an attribute the object
Definition: attribute_value.h:20