ReXGlue SDK
Loading...
Searching...
No Matches
bit.h File Reference
#include <algorithm>
#include <bit>
#include <climits>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <span>
#include <type_traits>
#include <utility>
#include <vector>
#include <rex/platform.h>
#include <rex/types.h>

Go to the source code of this file.

Classes

class  rex::BitMap

Namespaces

namespace  rex

Concepts

concept  rex::FlagsEnum

Macros

#define REX_RESTRICT_VAR   __restrict

Functions

template<typename T>
constexpr bool rex::is_pow2 (T value)
template<typename T>
T rex::next_pow2 (T value)
constexpr u32 rex::MakeBitmask (u32 a, u32 b)
constexpr u32 rex::select_bits (u32 value, u32 a, u32 b)
template<class T>
constexpr u32 rex::BitCount (T v)
u8 rex::lzcnt (u8 v)
u8 rex::lzcnt (u16 v)
u8 rex::lzcnt (u32 v)
u8 rex::lzcnt (u64 v)
u8 rex::tzcnt (u8 v)
u8 rex::tzcnt (u16 v)
u8 rex::tzcnt (u32 v)
u8 rex::tzcnt (u64 v)
u8 rex::lzcnt (i8 v)
u8 rex::lzcnt (i16 v)
u8 rex::lzcnt (i32 v)
u8 rex::lzcnt (i64 v)
u8 rex::tzcnt (i8 v)
u8 rex::tzcnt (i16 v)
u8 rex::tzcnt (i32 v)
u8 rex::tzcnt (i64 v)
bool rex::bit_scan_forward (u32 v, u32 *out_first_set_index)
bool rex::bit_scan_forward (u64 v, u32 *out_first_set_index)
bool rex::bit_scan_forward (i32 v, u32 *out_first_set_index)
bool rex::bit_scan_forward (i64 v, u32 *out_first_set_index)
template<typename T>
T rex::log2_floor (T v)
template<typename T>
T rex::log2_ceil (T v)
template<typename T>
T rex::RotateLeft (T v, u8 sh)
template<typename Block>
std::pair< size_t, size_t > rex::GetNextRangeUnset (const Block *bits, size_t first, size_t length)
template<typename Block>
void rex::SetRange (Block *bits, size_t first, size_t length)
template<FlagsEnum E>
constexpr E rex::operator| (E lhs, E rhs)
template<FlagsEnum E>
constexpr E rex::operator& (E lhs, E rhs)
template<FlagsEnum E>
constexpr E rex::operator^ (E lhs, E rhs)
template<FlagsEnum E>
constexpr E rex::operator~ (E value)
template<FlagsEnum E>
constexpr E & rex::operator|= (E &lhs, E rhs)
template<FlagsEnum E>
constexpr E & rex::operator&= (E &lhs, E rhs)
template<FlagsEnum E>
constexpr E & rex::operator^= (E &lhs, E rhs)
template<FlagsEnum E>
constexpr bool rex::HasFlags (E value, E flags)
template<typename Dst, typename Src>
void rex::Reinterpret (Dst &REX_RESTRICT_VAR dst, const Src &REX_RESTRICT_VAR src)
template<typename Dst, typename Src>
Dst rex::Reinterpret (const Src &REX_RESTRICT_VAR src)
bool rex::AreBitsEqual (std::span< const f32 > a, std::span< const f32 > b)

Variables

template<typename E>
constexpr bool rex::is_flags_enum = false

Detailed Description

License
BSD 3-Clause License See LICENSE file in the project root for full license text.
Remarks
Derived from Xenia's xenia/base/bit_map.h and xenia/base/bit_range.h (Ben Vanik, 2015-2019).

Macro Definition Documentation

◆ REX_RESTRICT_VAR

#define REX_RESTRICT_VAR   __restrict

Restrict qualifier for variable declarations. Not for return values or the this pointer.

void Copy(u8* REX_RESTRICT_VAR dst, const u8* REX_RESTRICT_VAR src);
#define REX_RESTRICT_VAR
Definition bit.h:494