|
BitMagic-C++
|
Base class for bit-transposed(bit-sliced) sparse vector construction. More...
#include <bmbmatrix.h>

Public Types | |
| enum | bit_planes { sv_slices = (sizeof(Val) * 8 * MAX_SIZE + 1) , sv_value_slices = (sizeof(Val) * 8 * MAX_SIZE) } |
| enum | vector_capacity { max_vector_size = MAX_SIZE } |
| typedef Val | value_type |
| typedef BV | bvector_type |
| typedef BV::size_type | size_type |
| typedef bvector_type * | bvector_type_ptr |
| typedef const bvector_type * | bvector_type_const_ptr |
| typedef const value_type & | const_reference |
| typedef BV::allocator_type | allocator_type |
| typedef bvector_type::allocation_policy | allocation_policy_type |
| typedef bvector_type::enumerator | bvector_enumerator_type |
| typedef allocator_type::allocator_pool_type | allocator_pool_type |
| typedef bm::basic_bmatrix< BV > | bmatrix_type |
| typedef std::make_unsigned< value_type >::type | unsigned_value_type |
Public Member Functions | |
| base_sparse_vector () | |
| base_sparse_vector (bm::null_support null_able, bool is_dynamic, allocation_policy_type ap=allocation_policy_type(), size_type bv_max_size=bm::id_max, const allocator_type &alloc=allocator_type()) | |
| base_sparse_vector (const base_sparse_vector< Val, BV, MAX_SIZE > &bsv) | |
| base_sparse_vector (base_sparse_vector< Val, BV, MAX_SIZE > &&bsv) BMNOEXCEPT | |
| void | swap (base_sparse_vector< Val, BV, MAX_SIZE > &bsv) BMNOEXCEPT |
| size_type | size () const BMNOEXCEPT |
| void | resize (size_type new_size, bool set_null) |
| void | clear_range (size_type left, size_type right, bool set_null) |
| void | keep_range_no_check (size_type left, size_type right, bm::null_support slice_null) |
| void | clear_all (bool free_mem=true) BMNOEXCEPT |
| resize to zero, free memory | |
| bool | empty () const BMNOEXCEPT |
| void | swap_elements (size_type idx1, size_type idx2) |
| swap two vector elements | |
| void | optimize (bm::word_t *temp_block=0, typename bvector_type::optmode opt_mode=bvector_type::opt_compress, typename bvector_type::statistics *stat=0) |
| run memory optimization for all bit-vector rows | |
| void | calc_stat (typename bvector_type::statistics *st) const BMNOEXCEPT |
| Calculates memory statistics. | |
| bool | equal (const base_sparse_vector< Val, BV, MAX_SIZE > &sv, bm::null_support null_able=bm::use_null) const BMNOEXCEPT |
| check if another sparse vector has the same content and size | |
Protected Types | |
| typedef bvector_type::block_idx_type | block_idx_type |
Protected Member Functions | |
| void | copy_from (const base_sparse_vector< Val, BV, MAX_SIZE > &bsv) |
| void | merge_matr (bmatrix_type &bmatr) |
| Merge plane bvectors from an outside base matrix Note: outside base matrix gets destroyed. | |
| void | freeze_matr () |
| Turn on RO mode. | |
| void | clear_value_planes_from (unsigned plane_idx, size_type idx) |
| void | insert_clear_value_planes_from (unsigned plane_idx, size_type idx) |
| void | erase_column (size_type idx, bool erase_null) |
| void | insert_null (size_type idx, bool not_null) |
| void | bit_sub_rows (const bvector_type &bv, bool use_null) |
| Set SUB (MINUS) operation on all existing bit-slices. | |
| void | bit_and_rows (const bvector_type &bv) |
| Set AND (intersect) operation on all existing bit-slices. | |
| void | optimize_block (block_idx_type nb, typename BV::optmode opt_mode) |
| plane index for the "NOT NULL" flags plane | |
| void | sync_ro () BMNOEXCEPT |
| Sybc read-only state. | |
| void | copy_range_slices (const base_sparse_vector< Val, BV, MAX_SIZE > &bsv, typename base_sparse_vector< Val, BV, MAX_SIZE >::size_type left, typename base_sparse_vector< Val, BV, MAX_SIZE >::size_type right, bm::null_support slice_null) |
| Perform copy_range() on a set of planes. | |
Static Protected Member Functions | |
| static constexpr unsigned | value_bits () BMNOEXCEPT |
| Number of total bit-planes in the value type. | |
Protected Attributes | |
| bmatrix_type | bmatr_ |
| bit-transposed matrix | |
| unsigned_value_type | slice_mask_ = 0 |
| slice presence bit-mask | |
| size_type | size_ = 0 |
| array size | |
| unsigned | effective_slices_ =0 |
| number of bit slices actually allocated | |
| bool | is_ro_ =false |
| read-only | |
Various traits | |
| bool | is_nullable () const BMNOEXCEPT |
| check if container supports NULL(unassigned) values | |
| bm::null_support | get_null_support () const BMNOEXCEPT |
| check if container supports NULL (unassigned) values | |
| const bvector_type * | get_null_bvector () const BMNOEXCEPT |
| Get bit-vector of assigned values or NULL (if not constructed that way). | |
| bool | is_null (size_type idx) const BMNOEXCEPT |
| test if specified element is NULL | |
| void | set_allocator_pool (allocator_pool_type *pool_ptr) BMNOEXCEPT |
| Set allocation pool. | |
| allocator_pool_type * | get_allocator_pool () const BMNOEXCEPT |
| Get allocation pool. | |
| static constexpr bool | is_signed () BMNOEXCEPT |
| returns true if value type is signed integral type | |
Access to internals | |
| bvector_type_ptr | get_create_slice (unsigned i) |
| get access to bit-plain, function checks and creates a plane | |
| bvector_type_const_ptr | get_slice (unsigned i) const BMNOEXCEPT |
| get read-only access to bit-plane | |
| unsigned | effective_slices () const BMNOEXCEPT |
| Number of effective bit-planes in the value type. | |
| bvector_type_ptr | slice (unsigned i) BMNOEXCEPT |
| get access to bit-plane as is (can return NULL) | |
| bvector_type_const_ptr | slice (unsigned i) const BMNOEXCEPT |
| bvector_type * | get_null_bvect () BMNOEXCEPT |
| void | free_slice (unsigned i) |
| free memory in bit-plane | |
| bm::id64_t | get_slice_mask (unsigned element_idx) const BMNOEXCEPT |
| const bmatrix_type & | get_bmatrix () const BMNOEXCEPT |
| bmatrix_type & | get_bmatrix () BMNOEXCEPT |
| access to internal bit-matrix | |
| void | mark_null_idx (unsigned null_idx) BMNOEXCEPT |
| Set NULL plain index. | |
| static unsigned | slices () BMNOEXCEPT |
| get total number of bit-planes in the vector | |
| static unsigned | stored_slices () BMNOEXCEPT |
| Number of stored bit-planes (value planes + extra. | |
| static unsigned_value_type | s2u (value_type v) BMNOEXCEPT |
| Convert signed value type to unsigned representation. | |
| static value_type | u2s (unsigned_value_type v) BMNOEXCEPT |
| Convert unsigned value type to signed representation. | |
Base class for bit-transposed(bit-sliced) sparse vector construction.
Keeps the basic housekeeping lements like matrix of sparse elements
Definition at line 351 of file bmbmatrix.h.
| typedef bvector_type::allocation_policy bm::base_sparse_vector< Val, BV, MAX_SIZE >::allocation_policy_type |
Definition at line 372 of file bmbmatrix.h.
| typedef allocator_type::allocator_pool_type bm::base_sparse_vector< Val, BV, MAX_SIZE >::allocator_pool_type |
Definition at line 374 of file bmbmatrix.h.
| typedef BV::allocator_type bm::base_sparse_vector< Val, BV, MAX_SIZE >::allocator_type |
Definition at line 371 of file bmbmatrix.h.
|
protected |
Definition at line 675 of file bmbmatrix.h.
| typedef bm::basic_bmatrix<BV> bm::base_sparse_vector< Val, BV, MAX_SIZE >::bmatrix_type |
Definition at line 375 of file bmbmatrix.h.
| typedef bvector_type::enumerator bm::base_sparse_vector< Val, BV, MAX_SIZE >::bvector_enumerator_type |
Definition at line 373 of file bmbmatrix.h.
| typedef BV bm::base_sparse_vector< Val, BV, MAX_SIZE >::bvector_type |
Definition at line 366 of file bmbmatrix.h.
| typedef const bvector_type* bm::base_sparse_vector< Val, BV, MAX_SIZE >::bvector_type_const_ptr |
Definition at line 369 of file bmbmatrix.h.
| typedef bvector_type* bm::base_sparse_vector< Val, BV, MAX_SIZE >::bvector_type_ptr |
Definition at line 368 of file bmbmatrix.h.
| typedef const value_type& bm::base_sparse_vector< Val, BV, MAX_SIZE >::const_reference |
Definition at line 370 of file bmbmatrix.h.
| typedef BV::size_type bm::base_sparse_vector< Val, BV, MAX_SIZE >::size_type |
Definition at line 367 of file bmbmatrix.h.
| typedef std::make_unsigned<value_type>::type bm::base_sparse_vector< Val, BV, MAX_SIZE >::unsigned_value_type |
Definition at line 376 of file bmbmatrix.h.
| typedef Val bm::base_sparse_vector< Val, BV, MAX_SIZE >::value_type |
Definition at line 365 of file bmbmatrix.h.
| enum bm::base_sparse_vector::bit_planes |
| Enumerator | |
|---|---|
| sv_slices | |
| sv_value_slices | |
Definition at line 354 of file bmbmatrix.h.
| enum bm::base_sparse_vector::vector_capacity |
| Enumerator | |
|---|---|
| max_vector_size | |
Definition at line 360 of file bmbmatrix.h.
| bm::base_sparse_vector< Val, BV, MAX_SIZE >::base_sparse_vector | ( | ) |
Definition at line 1625 of file bmbmatrix.h.
References bmatr_, bm::id_max, and sv_slices.
Referenced by base_sparse_vector(), copy_from(), copy_range_slices(), equal(), and swap().
| bm::base_sparse_vector< Val, BV, MAX_SIZE >::base_sparse_vector | ( | bm::null_support | null_able, |
| bool | is_dynamic, | ||
| allocation_policy_type | ap = allocation_policy_type(), | ||
| size_type | bv_max_size = bm::id_max, | ||
| const allocator_type & | alloc = allocator_type() ) |
Definition at line 1632 of file bmbmatrix.h.
References bmatr_, slice_mask_, sv_slices, and bm::use_null.
| bm::base_sparse_vector< Val, BV, MAX_SIZE >::base_sparse_vector | ( | const base_sparse_vector< Val, BV, MAX_SIZE > & | bsv | ) |
Definition at line 1652 of file bmbmatrix.h.
References base_sparse_vector(), bmatr_, effective_slices_, size_, and slice_mask_.
|
inline |
move-ctor
Definition at line 391 of file bmbmatrix.h.
|
inlineprotected |
Set AND (intersect) operation on all existing bit-slices.
| bv | - argument vector row[i] -= bv |
Definition at line 672 of file bmbmatrix.h.
|
inlineprotected |
Set SUB (MINUS) operation on all existing bit-slices.
| bv | - argument vector row[i] -= bv |
Definition at line 665 of file bmbmatrix.h.
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::calc_stat | ( | typename bvector_type::statistics * | st | ) | const |
Calculates memory statistics.
Function fills statistics structure containing information about how this vector uses memory and estimation of max. amount of memory bvector needs to serialize itself.
| st | - pointer on statistics structure to be filled in. |
Definition at line 1918 of file bmbmatrix.h.
References BM_ASSERT, bmatr_, BMNOEXCEPT, get_bmatrix(), and slices().
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::clear_all | ( | bool | free_mem = true | ) |
resize to zero, free memory
| free_mem | - fully destroys the plane vectors if true |
Definition at line 1759 of file bmbmatrix.h.
References bmatr_, BMNOEXCEPT, get_null_bvect(), bm::basic_bmatrix< BV >::get_row(), is_ro_, size_, slice_mask_, and slices().
Referenced by resize().
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::clear_range | ( | size_type | left, |
| size_type | right, | ||
| bool | set_null ) |
Definition at line 1776 of file bmbmatrix.h.
References bmatr_, clear_range(), get_null_bvect(), and bm::basic_bmatrix< BV >::get_row().
Referenced by clear_range(), keep_range_no_check(), and resize().
|
protected |
clear column in all value planes
| plane_idx | - row (plane index to start from) |
| idx | - bit (column) to clear |
Definition at line 1934 of file bmbmatrix.h.
References bmatr_.
|
protected |
Definition at line 1663 of file bmbmatrix.h.
References base_sparse_vector(), bmatr_, effective_slices_, get_bmatrix(), bm::basic_bmatrix< BV >::get_null_idx(), resize(), bm::basic_bmatrix< BV >::row(), bm::basic_bmatrix< BV >::rows(), size(), size_, slice_mask_, and slices().
|
protected |
Perform copy_range() on a set of planes.
Definition at line 2049 of file bmbmatrix.h.
References base_sparse_vector(), bmatr_, bm::bvector< Alloc >::copy_range(), get_create_slice(), get_null_bvect(), get_null_bvector(), bm::basic_bmatrix< BV >::row(), bm::basic_bmatrix< BV >::rows(), and bm::use_null.
|
inline |
Number of effective bit-planes in the value type.
Definition at line 514 of file bmbmatrix.h.
|
inline |
return true if empty
Definition at line 417 of file bmbmatrix.h.
| bool bm::base_sparse_vector< Val, BV, MAX_SIZE >::equal | ( | const base_sparse_vector< Val, BV, MAX_SIZE > & | sv, |
| bm::null_support | null_able = bm::use_null ) const |
check if another sparse vector has the same content and size
| sv | - sparse vector for comparison |
| null_able | - flag to consider NULL vector in comparison (default) or compare only value content planes |
Definition at line 1961 of file bmbmatrix.h.
References base_sparse_vector(), BM_ASSERT, BMNOEXCEPT, get_null_bvector(), bm::basic_bmatrix< BV >::get_row(), bm::basic_bmatrix< BV >::rows(), slices(), and bm::use_null.
|
protected |
erase bit (column) from all planes
| idx | - bit (column) to erase |
| erase_null | - erase the NULL vector |
Definition at line 1952 of file bmbmatrix.h.
References bmatr_.
|
inline |
free memory in bit-plane
Definition at line 536 of file bmbmatrix.h.
|
inlineprotected |
Turn on RO mode.
Definition at line 633 of file bmbmatrix.h.
|
inline |
Get allocation pool.
Definition at line 474 of file bmbmatrix.h.
|
inline |
access to internal bit-matrix
Definition at line 559 of file bmbmatrix.h.
|
inline |
get read-only access to inetrnal bit-matrix
Definition at line 553 of file bmbmatrix.h.
Referenced by calc_stat(), copy_from(), deserialize_df2(), bm::sparse_vector< Val, BV >::join(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().
| base_sparse_vector< Val, BV, MAX_SIZE >::bvector_type_ptr bm::base_sparse_vector< Val, BV, MAX_SIZE >::get_create_slice | ( | unsigned | i | ) |
get access to bit-plain, function checks and creates a plane
Definition at line 1851 of file bmbmatrix.h.
References bmatr_, effective_slices_, and slice_mask_.
Referenced by copy_range_slices(), and merge_matr().
|
inline |
Definition at line 525 of file bmbmatrix.h.
Referenced by clear_all(), clear_range(), copy_range_slices(), insert_null(), merge_matr(), and optimize().
|
inline |
Get bit-vector of assigned values or NULL (if not constructed that way).
Definition at line 451 of file bmbmatrix.h.
Referenced by copy_range_slices(), equal(), generate_random_subset(), is_null(), main(), print_sorted(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().
|
inline |
check if container supports NULL (unassigned) values
Definition at line 444 of file bmbmatrix.h.
|
inline |
get read-only access to bit-plane
Definition at line 497 of file bmbmatrix.h.
Referenced by get_slice_mask().
| bm::id64_t bm::base_sparse_vector< Val, BV, MAX_SIZE >::get_slice_mask | ( | unsigned | element_idx | ) | const |
return mask of allocated bit-planes 1 in the mask - means bit-plane N is present returns 64-bit unsigned mask for sub 64-bit types (like int) unallocated mask bits will be zero extended
Definition at line 1870 of file bmbmatrix.h.
References BMNOEXCEPT, get_slice(), and bm::basic_bmatrix< BV >::rows().
|
protected |
insert false (clear) column in all value planes
| plane_idx | - row (plane index to start from) |
| idx | - bit (column) to clear insert |
Definition at line 1943 of file bmbmatrix.h.
References bmatr_.
|
protected |
| bool bm::base_sparse_vector< Val, BV, MAX_SIZE >::is_null | ( | size_type | idx | ) | const |
test if specified element is NULL
| idx | - element index |
Definition at line 1830 of file bmbmatrix.h.
References BMNOEXCEPT, and get_null_bvector().
Referenced by print_svector().
|
inline |
check if container supports NULL(unassigned) values
Definition at line 439 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, 1 >::get_null_support(), bm::sparse_vector< Val, BV >::join_null_slice(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::merge().
|
inlinestaticconstexpr |
returns true if value type is signed integral type
Definition at line 433 of file bmbmatrix.h.
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::keep_range_no_check | ( | size_type | left, |
| size_type | right, | ||
| bm::null_support | slice_null ) |
Definition at line 1798 of file bmbmatrix.h.
References clear_range(), size(), and bm::use_null.
|
inline |
Set NULL plain index.
Definition at line 565 of file bmbmatrix.h.
|
protected |
Merge plane bvectors from an outside base matrix Note: outside base matrix gets destroyed.
Definition at line 1705 of file bmbmatrix.h.
References BM_ASSERT, bmatr_, get_create_slice(), get_null_bvect(), bm::basic_bmatrix< BV >::get_null_idx(), bm::basic_bmatrix< BV >::get_row(), bm::basic_bmatrix< BV >::rows(), and slice_mask_.
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::optimize | ( | bm::word_t * | temp_block = 0, |
| typename bvector_type::optmode | opt_mode = bvector_type::opt_compress, | ||
| typename bvector_type::statistics * | stat = 0 ) |
run memory optimization for all bit-vector rows
| temp_block | - pre-allocated memory block to avoid unnecessary re-allocs |
| opt_mode | - requested compression depth |
| stat | - memory allocation statistics after optimization |
Definition at line 1888 of file bmbmatrix.h.
References bm::bv_statistics::add(), bmatr_, bm::basic_bmatrix< BV >::destruct_row(), get_null_bvect(), bm::basic_bmatrix< BV >::get_row(), bm::basic_bmatrix< BV >::rows(), slice_mask_, and slices().
|
inlineprotected |
plane index for the "NOT NULL" flags plane
optimize block in all matrix planes
Definition at line 685 of file bmbmatrix.h.
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::resize | ( | size_type | new_size, |
| bool | set_null ) |
Definition at line 1812 of file bmbmatrix.h.
References clear_all(), clear_range(), size(), and size_.
Referenced by copy_from().
|
static |
Convert signed value type to unsigned representation.
Definition at line 2087 of file bmbmatrix.h.
References BMNOEXCEPT, and is_signed().
Referenced by bm::rsc_sparse_vector< unsigned, sparse_vector_u32 >::s2u().
|
inline |
Set allocation pool.
Definition at line 468 of file bmbmatrix.h.
|
inline |
Definition at line 402 of file bmbmatrix.h.
Referenced by copy_from(), bm::base_sparse_vector< Val, BV, 1 >::empty(), keep_range_no_check(), and resize().
|
inline |
get access to bit-plane as is (can return NULL)
Definition at line 521 of file bmbmatrix.h.
|
inline |
Definition at line 522 of file bmbmatrix.h.
|
inlinestatic |
get total number of bit-planes in the vector
Definition at line 503 of file bmbmatrix.h.
Referenced by calc_stat(), clear_all(), copy_from(), equal(), optimize(), bm::rsc_sparse_vector< unsigned, sparse_vector_u32 >::slices(), and sync_ro().
|
inlinestatic |
Number of stored bit-planes (value planes + extra.
Definition at line 508 of file bmbmatrix.h.
Referenced by bm::rsc_sparse_vector< unsigned, sparse_vector_u32 >::stored_slices().
| void bm::base_sparse_vector< Val, BV, MAX_SIZE >::swap | ( | base_sparse_vector< Val, BV, MAX_SIZE > & | bsv | ) |
Definition at line 1744 of file bmbmatrix.h.
References base_sparse_vector(), bmatr_, BMNOEXCEPT, effective_slices_, size_, slice_mask_, and bm::xor_swap().
|
inline |
swap two vector elements
Definition at line 420 of file bmbmatrix.h.
|
protected |
Sybc read-only state.
Definition at line 2030 of file bmbmatrix.h.
References BMNOEXCEPT, bm::basic_bmatrix< BV >::get_row(), is_ro_, bm::basic_bmatrix< BV >::rows(), and slices().
|
static |
Convert unsigned value type to signed representation.
Definition at line 2108 of file bmbmatrix.h.
References BMNOEXCEPT, and is_signed().
Referenced by bm::rsc_sparse_vector< unsigned, sparse_vector_u32 >::u2s().
|
inlinestaticconstexprprotected |
Number of total bit-planes in the value type.
Definition at line 678 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, 1 >::slices(), and bm::base_sparse_vector< Val, BV, 1 >::stored_slices().
|
protected |
bit-transposed matrix
Definition at line 701 of file bmbmatrix.h.
Referenced by bm::str_sparse_vector< char, bm::bvector<>, 64 >::assign(), base_sparse_vector(), base_sparse_vector(), base_sparse_vector(), calc_stat(), clear_all(), clear_range(), clear_value_planes_from(), copy_from(), copy_range_slices(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::decode_substr(), erase_column(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::get(), get_create_slice(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::import_no_check(), insert_clear_value_planes_from(), bm::sparse_vector< Val, BV >::join(), bm::sparse_vector< Val, BV >::join_null_slice(), bm::sparse_vector< Val, BV >::merge(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::merge(), merge_matr(), optimize(), and swap().
|
protected |
number of bit slices actually allocated
Definition at line 704 of file bmbmatrix.h.
Referenced by base_sparse_vector(), copy_from(), get_create_slice(), and swap().
|
protected |
read-only
Definition at line 705 of file bmbmatrix.h.
Referenced by clear_all(), bm::sparse_vector< unsigned, bm::bvector<> >::is_ro(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::is_ro(), and sync_ro().
|
protected |
array size
Definition at line 703 of file bmbmatrix.h.
Referenced by bm::str_sparse_vector< char, bm::bvector<>, 64 >::assign(), base_sparse_vector(), clear_all(), copy_from(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::import(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::import_no_check(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::push_back(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::push_back(), resize(), bm::sparse_vector< unsigned, bm::bvector<> >::size(), bm::str_sparse_vector< char, bm::bvector<>, 64 >::size(), and swap().
|
protected |
slice presence bit-mask
Definition at line 702 of file bmbmatrix.h.
Referenced by base_sparse_vector(), base_sparse_vector(), clear_all(), copy_from(), get_create_slice(), merge_matr(), optimize(), and swap().