#ifndef RR_BITFIELD_H #define RR_BITFIELD_H #include /// @brief Tests whether a bit of an u64_t at a given index from the least significant bit is set. /// @param buffer Buffer of which to test the presence of a bit. /// @param index Index of the bit of which to test the presence. /// The index starts at 0;0 is the least significant bit. /// @return Whether the bit in 'buffer' at 'index' was set. inline bool_t rr_is_bit_set(u64_t buffer, usz_t index); /// @brief Sets a bit at a given index from the least significant bit in an u64_t and returns the new u64_t. /// @param buffer The buffer to set the 'index'th bit of. /// @param index Index of the bit in the buffer (as counted from the least significant bit) to set a bit of. /// The index starts with 0; there will always be a bit set (except if the index is greater than 63). /// @return The modified buffer with the bit set. inline u64_t rr_set_bit(u64_t buffer, usz_t index); /// @brief Returns a bitfield with a given number of bits set to 1, beginning with the least significant bit. /// @param count Number of bits to set /// @return The bitfield of which the bits were set. u64_t rr_bitpad_lsb(usz_t count); /// @brief Returns a bitfield with a given number of bits set to 1, beginning with the most significant bit. /// @param count Number of bits to set /// @return The bitfield of which the bits were set. u64_t rr_bitpad_msb(usz_t count); #endif // RR_BITFIELD_H