24#ifndef GUL17_BIT_MANIP_H_ 
   25#define GUL17_BIT_MANIP_H_ 
   55            std::is_integral<T>::value
 
   56            and not std::is_same<std::decay_t<T>, 
bool>::value,
 
   81#if defined(__BYTE_ORDER__) 
   82    little = __ORDER_LITTLE_ENDIAN__,
 
   83    big    = __ORDER_BIG_ENDIAN__,
 
   85#elif defined(_MSC_VER) && !defined(__clang__) 
   90    #error "Don't know how to determine machine endianness on this compiler" 
 
  120template <
typename T = 
unsigned, 
typename ReturnT = BitFunctionReturnType<T>>
 
  121auto constexpr inline bit_set(
unsigned bit) 
noexcept -> ReturnT {
 
  122    assert(bit < 
sizeof(T) * 8);
 
  123    return static_cast<ReturnT
>(std::make_unsigned_t<T>{1u} << bit);
 
 
  146template <
typename T, 
typename ReturnT = BitFunctionReturnType<T>>
 
  147auto constexpr inline bit_set(T previous, 
unsigned bit) 
noexcept -> ReturnT {
 
 
  171template <
typename T, 
typename ReturnT = BitFunctionReturnType<T>>
 
  198template <
typename T, 
typename ReturnT = BitFunctionReturnType<T>>
 
constexpr bool is_little_endian()
Determine whether this platform uses little-endian (Intel) order for storing multi-byte quantities in...
Definition bit_manip.h:253
 
auto constexpr bit_set(unsigned bit) noexcept -> ReturnT
Set a bit in an integral type.
Definition bit_manip.h:121
 
bool constexpr bit_test(T bits, unsigned bit) noexcept
Test a bit in an integral value.
Definition bit_manip.h:224
 
constexpr bool is_big_endian()
Determine whether this platform uses big-endian (Motorola) order for storing multi-byte quantities in...
Definition bit_manip.h:238
 
endian
An enum to determine the endianness of multi-byte scalars on the current platform.
Definition bit_manip.h:80
 
auto constexpr bit_flip(T previous, unsigned bit) noexcept -> ReturnT
Flip a bit in an integral value.
Definition bit_manip.h:199
 
auto constexpr bit_reset(T previous, unsigned bit) noexcept -> ReturnT
Reset a bit in an integral value.
Definition bit_manip.h:172
 
std::enable_if_t< std::is_integral< T >::value and not std::is_same< std::decay_t< T >, bool >::value, std::decay_t< T > > BitFunctionReturnType
Return type of the bit manipulation functions.
Definition bit_manip.h:58
 
@ native
Native endianness.
 
@ little
Little-endian (e.g. Intel)
 
@ big
Big-endian (e.g. Motorola)
 
Definition of macros used internally by GUL.
 
Namespace gul17 contains all functions and classes of the General Utility Library.
Definition doxygen.h:26