#include <MRBitSet.h>
Inheritance diagram for MR::BitSet:Public Types | |
| using | block_type = Uint64 |
| using | size_type = size_t |
| using | IndexType = size_t |
Public Member Functions | |
| BitSet () noexcept=default | |
| creates empty bitset | |
| BitSet (size_t numBits, bool fillValue=false) | |
| creates bitset of given size filled with given value | |
| void | reserve (size_type numBits) |
| MRMESH_API void | resize (size_type numBits, bool fillValue=false) |
| void | clear () |
| void | shrink_to_fit () |
| bool | empty () const noexcept |
| size_type | size () const noexcept |
| size_type | num_blocks () const noexcept |
| size_type | capacity () const noexcept |
| bool | uncheckedTest (IndexType n) const |
| bool | uncheckedTestSet (IndexType n, bool val=true) |
| bool | test (IndexType n) const |
| bool | test_set (IndexType n, bool val=true) |
| MRMESH_API BitSet & | set (IndexType n, size_type len, bool val) |
| BitSet & | set (IndexType n, bool val) |
| BitSet & | set (IndexType n) |
| MRMESH_API BitSet & | set () |
| MRMESH_API BitSet & | reset (IndexType n, size_type len) |
| BitSet & | reset (IndexType n) |
| MRMESH_API BitSet & | reset () |
| MRMESH_API BitSet & | flip (IndexType n, size_type len) |
| BitSet & | flip (IndexType n) |
| MRMESH_API BitSet & | flip () |
| MRMESH_API void | reverse () |
| changes the order of bits on the opposite | |
| void | push_back (bool val) |
| adds one more bit with the given value in the container, increasing its size on 1 | |
| void | pop_back () |
| removes last bit from the container, decreasing its size on 1 | |
| const auto & | bits () const |
| read-only access to all bits stored as a vector of uint64 blocks | |
| MRMESH_API BitSet & | operator&= (const BitSet &b) |
| MRMESH_API BitSet & | operator|= (const BitSet &b) |
| MRMESH_API BitSet & | operator^= (const BitSet &b) |
| MRMESH_API BitSet & | operator-= (const BitSet &b) |
| MRMESH_API BitSet & | subtract (const BitSet &b, int bShiftInBlocks) |
| subtracts b from this, considering that bits in b are shifted right on bShiftInBlocks*bits_per_block | |
| MRMESH_API bool | all () const |
| returns true if all bits in this container are set | |
| MRMESH_API bool | any () const |
| returns true if at least one bits in this container is set | |
| bool | none () const |
| returns true if all bits in this container are reset | |
| MRMESH_API size_type | count () const noexcept |
| computes the number of set bits in the whole set | |
| IndexType | find_first () const |
| return the smallest index i such that bit i is set, or npos if *this has no on bits. | |
| IndexType | find_next (IndexType n) const |
| return the smallest index i>n such that bit i is set, or npos if *this has no on bits. | |
| MRMESH_API IndexType | find_last () const |
| return the highest index i such that bit i is set, or npos if *this has no on bits. | |
| MRMESH_API size_t | nthSetBit (size_t n) const |
| returns the location of nth set bit (where the first bit corresponds to n=0) or npos if there are less bit set | |
| MRMESH_API bool | is_subset_of (const BitSet &a) const |
| returns true if, for every bit that is set in this bitset, the corresponding bit in bitset a is also set. Otherwise this function returns false. | |
| MRMESH_API bool | intersects (const BitSet &a) const |
| returns true if, there is a bit which is set in this bitset, such that the corresponding bit in bitset a is also set. Otherwise this function returns false. | |
| void | resizeWithReserve (size_t newSize) |
| doubles reserved memory until resize(newSize) can be done without reallocation | |
| void | autoResizeSet (size_t pos, size_type len, bool val=true) |
| sets elements [pos, pos+len) to given value, adjusting the size of the set to include new elements | |
| void | autoResizeSet (size_t pos, bool val=true) |
| bool | autoResizeTestSet (size_t pos, bool val=true) |
| same as autoResizeSet and returns previous value of pos-bit | |
| size_t | heapBytes () const |
| returns the amount of memory this object occupies on heap | |
| IndexType | backId () const |
| returns the identifier of the back() element | |
| IndexType | endId () const |
Static Public Member Functions | |
| static BitSet | fromBlocks (std::vector< block_type > &&blocks) |
| creates bitset from the given blocks of bits | |
| static IndexType | beginId () |
| [beginId(), endId()) is the range of all bits in the set | |
Static Public Attributes | |
| static constexpr size_t | bits_per_block = sizeof( block_type ) * 8 |
| static constexpr size_t | npos = (size_t)-1 |
std::vector<bool> like container (random-access, size_t - index type, bool - value type) with all bits after size() considered off during testing
| using MR::BitSet::block_type = Uint64 |
| using MR::BitSet::IndexType = size_t |
| using MR::BitSet::size_type = size_t |
|
defaultnoexcept |
creates empty bitset
|
inlineexplicit |
creates bitset of given size filled with given value
|
nodiscard |
returns true if all bits in this container are set
|
nodiscard |
returns true if at least one bits in this container is set
|
inline |
|
inline |
sets elements [pos, pos+len) to given value, adjusting the size of the set to include new elements
|
inlinenodiscard |
same as autoResizeSet and returns previous value of pos-bit
|
inlinenodiscard |
returns the identifier of the back() element
|
inlinestaticnodiscard |
|
inlinenodiscard |
read-only access to all bits stored as a vector of uint64 blocks
|
inlinenodiscardnoexcept |
|
inline |
|
nodiscardnoexcept |
computes the number of set bits in the whole set
|
inlinenodiscardnoexcept |
|
inlinenodiscard |
|
inlinenodiscard |
return the smallest index i such that bit i is set, or npos if *this has no on bits.
|
nodiscard |
return the highest index i such that bit i is set, or npos if *this has no on bits.
return the smallest index i>n such that bit i is set, or npos if *this has no on bits.
| MRMESH_API BitSet & MR::BitSet::flip | ( | ) |
| MRMESH_API BitSet & MR::BitSet::flip | ( | IndexType | n, |
| size_type | len ) |
|
inlinestatic |
creates bitset from the given blocks of bits
|
inlinenodiscard |
returns the amount of memory this object occupies on heap
|
nodiscard |
returns true if, there is a bit which is set in this bitset, such that the corresponding bit in bitset a is also set. Otherwise this function returns false.
|
nodiscard |
returns true if, for every bit that is set in this bitset, the corresponding bit in bitset a is also set. Otherwise this function returns false.
|
inlinenodiscard |
returns true if all bits in this container are reset
|
nodiscard |
returns the location of nth set bit (where the first bit corresponds to n=0) or npos if there are less bit set
|
inlinenodiscardnoexcept |
| MRMESH_API BitSet & MR::BitSet::operator&= | ( | const BitSet & | b | ) |
| MRMESH_API BitSet & MR::BitSet::operator-= | ( | const BitSet & | b | ) |
| MRMESH_API BitSet & MR::BitSet::operator^= | ( | const BitSet & | b | ) |
| MRMESH_API BitSet & MR::BitSet::operator|= | ( | const BitSet & | b | ) |
|
inline |
removes last bit from the container, decreasing its size on 1
|
inline |
adds one more bit with the given value in the container, increasing its size on 1
|
inline |
| MRMESH_API BitSet & MR::BitSet::reset | ( | ) |
| MRMESH_API BitSet & MR::BitSet::reset | ( | IndexType | n, |
| size_type | len ) |
| MRMESH_API void MR::BitSet::resize | ( | size_type | numBits, |
| bool | fillValue = false ) |
|
inline |
doubles reserved memory until resize(newSize) can be done without reallocation
| MRMESH_API void MR::BitSet::reverse | ( | ) |
changes the order of bits on the opposite
| MRMESH_API BitSet & MR::BitSet::set | ( | ) |
| MRMESH_API BitSet & MR::BitSet::set | ( | IndexType | n, |
| size_type | len, | ||
| bool | val ) |
|
inline |
|
inlinenodiscardnoexcept |
| MRMESH_API BitSet & MR::BitSet::subtract | ( | const BitSet & | b, |
| int | bShiftInBlocks ) |
subtracts b from this, considering that bits in b are shifted right on bShiftInBlocks*bits_per_block
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |