ReXGlue SDK
Loading...
Searching...
No Matches
rex::BitMap Class Reference

#include <rex/bit.h>

Public Member Functions

 BitMap (size_t size_bits)
 BitMap (u64 *data, size_t size_bits)
size_t AcquireEntry ()
void ReleaseEntry (size_t index)
void Resize (size_t new_size_bits)
void Reset ()
const std::vector< u64 > GetWords () const
std::vector< u64 > & GetWords ()

Detailed Description

Bitmap of free and used entries where a set bit marks a free entry.

Constructor & Destructor Documentation

◆ BitMap() [1/2]

rex::BitMap::BitMap ( size_t size_bits)

Creates a bitmap with every entry free.

Parameters
size_bitsNumber of entries, a multiple of 64.

◆ BitMap() [2/2]

rex::BitMap::BitMap ( u64 * data,
size_t size_bits )

Creates a bitmap initialized from existing words.

Parameters
dataSource words, 8 byte alignment preferred but not required.
size_bitsNumber of entries, a multiple of 64.

Member Function Documentation

◆ AcquireEntry()

size_t rex::BitMap::AcquireEntry ( )

Atomically marks the first free entry as used. Thread safe.

Returns
The index of the acquired entry, or size_t(-1) when no entry is free.

◆ GetWords()

const std::vector< u64 > rex::BitMap::GetWords ( ) const
inline

Returns a copy of the backing words.

◆ ReleaseEntry()

void rex::BitMap::ReleaseEntry ( size_t index)

Atomically marks an entry as free. Thread safe.

◆ Resize()

void rex::BitMap::Resize ( size_t new_size_bits)

Resizes the bitmap. New entries start free.

Parameters
new_size_bitsNumber of entries, a multiple of 64.

The documentation for this class was generated from the following file: