NCBI C++ ToolKit
|
Search Toolkit Book for bm::base_sparse_vector
Base class for bit-transposed(bit-sliced) sparse vector construction. More...
#include <util/bitset/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) noexcept | |
void | swap (base_sparse_vector< Val, BV, MAX_SIZE > &bsv) noexcept |
size_type | size () const noexcept |
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) noexcept |
resize to zero, free memory More... | |
bool | empty () const noexcept |
void | swap_elements (size_type idx1, size_type idx2) |
swap two vector elements More... | |
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 More... | |
void | calc_stat (typename bvector_type::statistics *st) const noexcept |
Calculates memory statistics. More... | |
bool | equal (const base_sparse_vector< Val, BV, MAX_SIZE > &sv, bm::null_support null_able=bm::use_null) const noexcept |
check if another sparse vector has the same content and size More... | |
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. More... | |
void | freeze_matr () |
Turn on RO mode. More... | |
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. More... | |
void | bit_and_rows (const bvector_type &bv) |
Set AND (intersect) operation on all existing bit-slices. More... | |
void | optimize_block (block_idx_type nb, typename BV::optmode opt_mode) |
plane index for the "NOT NULL" flags plane More... | |
void | sync_ro () noexcept |
Sybc read-only state. More... | |
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. More... | |
Static Protected Member Functions | |
static constexpr unsigned | value_bits () noexcept |
Number of total bit-planes in the value type. More... | |
Protected Attributes | |
bmatrix_type | bmatr_ |
bit-transposed matrix More... | |
unsigned_value_type | slice_mask_ = 0 |
slice presence bit-mask More... | |
size_type | size_ = 0 |
array size More... | |
unsigned | effective_slices_ =0 |
number of bit slices actually allocated More... | |
bool | is_ro_ =false |
read-only More... | |
Various traits | |
bool | is_nullable () const noexcept |
check if container supports NULL(unassigned) values More... | |
bm::null_support | get_null_support () const noexcept |
check if container supports NULL (unassigned) values More... | |
const bvector_type * | get_null_bvector () const noexcept |
Get bit-vector of assigned values or NULL (if not constructed that way) More... | |
bool | is_null (size_type idx) const noexcept |
test if specified element is NULL More... | |
void | set_allocator_pool (allocator_pool_type *pool_ptr) noexcept |
Set allocation pool. More... | |
allocator_pool_type * | get_allocator_pool () const noexcept |
Get allocation pool. More... | |
static constexpr bool | is_signed () noexcept |
returns true if value type is signed integral type More... | |
Access to internals | |
bvector_type_ptr | get_create_slice (unsigned i) |
get access to bit-plain, function checks and creates a plane More... | |
bvector_type_const_ptr | get_slice (unsigned i) const noexcept |
get read-only access to bit-plane More... | |
unsigned | effective_slices () const noexcept |
Number of effective bit-planes in the value type. More... | |
bvector_type_ptr | slice (unsigned i) noexcept |
get access to bit-plane as is (can return NULL) More... | |
bvector_type_const_ptr | slice (unsigned i) const noexcept |
bvector_type * | get_null_bvect () noexcept |
void | free_slice (unsigned i) |
free memory in bit-plane More... | |
bm::id64_t | get_slice_mask (unsigned element_idx) const noexcept |
const bmatrix_type & | get_bmatrix () const noexcept |
bmatrix_type & | get_bmatrix () noexcept |
access to internal bit-matrix More... | |
void | mark_null_idx (unsigned null_idx) noexcept |
Set NULL plain index. More... | |
static unsigned | slices () noexcept |
get total number of bit-planes in the vector More... | |
static unsigned | stored_slices () noexcept |
Number of stored bit-planes (value planes + extra. More... | |
static unsigned_value_type | s2u (value_type v) noexcept |
Convert signed value type to unsigned representation. More... | |
static value_type | u2s (unsigned_value_type v) noexcept |
Convert unsigned value type to signed representation. More... | |
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.
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 bm::base_sparse_vector< Val, BV, MAX_SIZE >::bmatr_, bm::basic_bmatrix< BV >::construct_row(), bm::basic_bmatrix< BV >::set_null_idx(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::slice_mask_, 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.
|
inlinenoexcept |
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.
|
noexcept |
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, bm::basic_bmatrix< BV >::calc_stat(), and st().
|
noexcept |
resize to zero, free memory
free_mem | - fully destroys the plane vectors if true |
Definition at line 1759 of file bmbmatrix.h.
References bm::basic_bmatrix< BV >::clear_row(), bm::basic_bmatrix< BV >::get_row(), i, and bm::basic_bmatrix< BV >::rows().
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 bm::basic_bmatrix< BV >::get_row(), i, and bm::basic_bmatrix< BV >::rows().
|
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 bm::basic_bmatrix< BV >::clear_column().
|
protected |
Definition at line 1663 of file bmbmatrix.h.
References bm::basic_bmatrix< BV >::allocate_rows(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::bmatr_, bm::basic_bmatrix< BV >::construct_row(), bm::basic_bmatrix< BV >::destruct_row(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::effective_slices_, bm::base_sparse_vector< Val, BV, MAX_SIZE >::get_bmatrix(), bm::basic_bmatrix< BV >::get_null_idx(), bm::basic_bmatrix< BV >::get_row(), i, bm::basic_bmatrix< BV >::null_idx_, pythonpp::resize(), bm::basic_bmatrix< BV >::row(), bm::basic_bmatrix< BV >::rows(), and bm::base_sparse_vector< Val, BV, MAX_SIZE >::size().
|
protected |
Perform copy_range() on a set of planes.
Definition at line 2049 of file bmbmatrix.h.
References bm::basic_bmatrix< BV >::allocate_rows(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::bmatr_, bm::base_sparse_vector< Val, BV, MAX_SIZE >::get_null_bvector(), bm::basic_bmatrix< BV >::row(), bm::basic_bmatrix< BV >::rows(), and bm::use_null.
|
inlinenoexcept |
Number of effective bit-planes in the value type.
Definition at line 514 of file bmbmatrix.h.
|
inlinenoexcept |
return true if empty
Definition at line 417 of file bmbmatrix.h.
|
noexcept |
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 BM_ASSERT, eq(), bm::basic_bmatrix< BV >::get_row(), bm::basic_bmatrix< BV >::rows(), 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 bm::basic_bmatrix< BV >::erase_column().
|
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.
|
inlinenoexcept |
Get allocation pool.
Definition at line 474 of file bmbmatrix.h.
|
inlinenoexcept |
get read-only access to inetrnal bit-matrix
Definition at line 553 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_from(), bm::sparse_vector< Val, BV >::join(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl(), TestSparseVector(), TestSparseVector_XOR_Scanner(), TestSparseVectorSerialization2(), and TestStrSparseVector().
|
inlinenoexcept |
access to internal bit-matrix
Definition at line 559 of file bmbmatrix.h.
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 bm::basic_bmatrix< BV >::construct_row(), and i.
|
inlinenoexcept |
Definition at line 525 of file bmbmatrix.h.
Referenced by TestSparseVector().
|
inlinenoexcept |
Get bit-vector of assigned values or NULL (if not constructed that way)
Definition at line 451 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_range_slices(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl(), TestSignedSparseVectorSerial(), TestSparseVector(), TestSparseVectorSerial(), and TestStrSparseVectorSerial().
|
inlinenoexcept |
check if container supports NULL (unassigned) values
Definition at line 444 of file bmbmatrix.h.
Referenced by TestStrSparseVector().
|
inlinenoexcept |
get read-only access to bit-plane
Definition at line 497 of file bmbmatrix.h.
Referenced by TestSparseVector(), and TestSparseVector_XOR_Scanner().
|
noexcept |
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 i, mask, 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 bm::basic_bmatrix< BV >::insert_column().
|
protected |
insert (NOT) NULL value
Definition at line 1840 of file bmbmatrix.h.
|
noexcept |
test if specified element is NULL
idx | - element index |
Definition at line 1830 of file bmbmatrix.h.
Referenced by CheckSparseVectorFilter(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::const_iterator::is_null(), TestCompressedSparseVectorAlgo(), TestSparseVector(), TestSparseVectorFilter(), TestSparseVectorSerial(), TestStrSparseVector(), and TestStrSparseVectorSerial().
|
inlinenoexcept |
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(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::merge(), and TestSparseVector().
|
inlinestaticconstexprnoexcept |
returns true if value type is signed integral type
Definition at line 433 of file bmbmatrix.h.
Referenced by TestSparseVector().
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 ncbi::grid::netcache::search::fields::size, and bm::use_null.
|
inlinenoexcept |
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::basic_bmatrix< BV >::allocate_rows(), BM_ASSERT, bm::basic_bmatrix< BV >::get_null_idx(), bm::basic_bmatrix< BV >::get_row(), and bm::basic_bmatrix< BV >::rows().
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::basic_bmatrix< BV >::destruct_row(), bm::basic_bmatrix< BV >::get_row(), bm::basic_bmatrix< BV >::optimize(), bm::basic_bmatrix< BV >::rows(), and st().
|
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 ncbi::grid::netcache::search::fields::size.
|
staticnoexcept |
Convert signed value type to unsigned representation.
Definition at line 2087 of file bmbmatrix.h.
|
inlinenoexcept |
Set allocation pool.
Definition at line 468 of file bmbmatrix.h.
|
inlinenoexcept |
Definition at line 402 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_from(), and bm::base_sparse_vector< Val, BV, 1 >::empty().
|
inlinenoexcept |
Definition at line 522 of file bmbmatrix.h.
|
inlinenoexcept |
get access to bit-plane as is (can return NULL)
Definition at line 521 of file bmbmatrix.h.
|
inlinestaticnoexcept |
get total number of bit-planes in the vector
Definition at line 503 of file bmbmatrix.h.
|
inlinestaticnoexcept |
Number of stored bit-planes (value planes + extra.
Definition at line 508 of file bmbmatrix.h.
|
noexcept |
Definition at line 1744 of file bmbmatrix.h.
References bm::basic_bmatrix< BV >::swap(), and bm::xor_swap().
|
inline |
swap two vector elements
Definition at line 420 of file bmbmatrix.h.
|
protectednoexcept |
Sybc read-only state.
Definition at line 2030 of file bmbmatrix.h.
References bm::basic_bmatrix< BV >::get_row(), and bm::basic_bmatrix< BV >::rows().
|
staticnoexcept |
Convert unsigned value type to signed representation.
Definition at line 2108 of file bmbmatrix.h.
|
inlinestaticconstexprprotectednoexcept |
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::base_sparse_vector< Val, BV, 1 >::base_sparse_vector(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::base_sparse_vector(), bm::base_sparse_vector< Val, BV, 1 >::bit_and_rows(), bm::base_sparse_vector< Val, BV, 1 >::bit_sub_rows(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_from(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_range_slices(), bm::base_sparse_vector< Val, BV, 1 >::free_slice(), bm::base_sparse_vector< Val, BV, 1 >::freeze_matr(), bm::base_sparse_vector< Val, BV, 1 >::get_allocator_pool(), bm::base_sparse_vector< Val, BV, 1 >::get_bmatrix(), bm::base_sparse_vector< Val, BV, 1 >::get_null_bvect(), bm::base_sparse_vector< Val, BV, 1 >::get_null_bvector(), bm::base_sparse_vector< Val, BV, 1 >::get_slice(), bm::base_sparse_vector< Val, BV, 1 >::is_nullable(), bm::sparse_vector< Val, BV >::join(), bm::sparse_vector< Val, BV >::join_null_slice(), bm::base_sparse_vector< Val, BV, 1 >::mark_null_idx(), bm::sparse_vector< Val, BV >::merge(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::merge(), bm::base_sparse_vector< Val, BV, 1 >::optimize_block(), bm::base_sparse_vector< Val, BV, 1 >::set_allocator_pool(), bm::base_sparse_vector< Val, BV, 1 >::slice(), and bm::base_sparse_vector< Val, BV, 1 >::swap_elements().
|
protected |
number of bit slices actually allocated
Definition at line 704 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, 1 >::base_sparse_vector(), bm::base_sparse_vector< Val, BV, MAX_SIZE >::copy_from(), and bm::base_sparse_vector< Val, BV, 1 >::effective_slices().
|
protected |
read-only
Definition at line 705 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, 1 >::freeze_matr().
|
protected |
array size
Definition at line 703 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, 1 >::base_sparse_vector(), and bm::base_sparse_vector< Val, BV, 1 >::size().
|
protected |
slice presence bit-mask
Definition at line 702 of file bmbmatrix.h.
Referenced by bm::base_sparse_vector< Val, BV, MAX_SIZE >::base_sparse_vector().