BitMagic-C++
Public Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes
bm::basic_bmatrix< BV > Class Template Reference

Basic dense bit-matrix class. More...

#include <bmbmatrix.h>

Inheritance diagram for bm::basic_bmatrix< BV >:
Inheritance graph
[legend]
Collaboration diagram for bm::basic_bmatrix< BV >:
Collaboration graph
[legend]

Public Types

typedef BV bvector_type
 
typedef bvector_typebvector_type_ptr
 
typedef const bvector_typebvector_type_const_ptr
 
typedef BV::allocator_type allocator_type
 
typedef bvector_type::allocation_policy allocation_policy_type
 
typedef allocator_type::allocator_pool_type allocator_pool_type
 
typedef bvector_type::size_type size_type
 
typedef bvector_type::block_idx_type block_idx_type
 
typedef unsigned char octet_type
 

Public Member Functions

Construction, assignment
 basic_bmatrix (size_type rsize, allocation_policy_type ap=allocation_policy_type(), size_type bv_max_size=bm::id_max, const allocator_type &alloc=allocator_type())
 
 ~basic_bmatrix () BMNOEXEPT
 
 basic_bmatrix (const basic_bmatrix< BV > &bbm)
 
basic_bmatrix< BV > & operator= (const basic_bmatrix< BV > &bbm)
 
 basic_bmatrix (basic_bmatrix< BV > &&bbm) BMNOEXEPT
 
basic_bmatrix< BV > & operator= (basic_bmatrix< BV > &&bbm) BMNOEXEPT
 
void set_allocator_pool (allocator_pool_type *pool_ptr)
 
content manipulation
void swap (basic_bmatrix< BV > &bbm) BMNOEXEPT
 
void copy_from (const basic_bmatrix< BV > &bbm)
 
row access
const bvector_typerow (size_type i) const
 
bvector_type_const_ptr get_row (size_type i) const
 
bvector_typeget_row (size_type i)
 
size_type rows () const
 
bvector_type_ptr construct_row (size_type row)
 
bvector_type_ptr construct_row (size_type row, const bvector_type &bv)
 
void destruct_row (size_type row)
 
octet access and transposition
void set_octet (size_type pos, size_type octet_idx, unsigned char octet)
 
void insert_octet (size_type pos, size_type octet_idx, unsigned char octet)
 
unsigned char get_octet (size_type pos, size_type octet_idx) const
 
int compare_octet (size_type pos, size_type octet_idx, char octet) const
 
Utility function
bool test_4rows (unsigned i) const
 Test if 4 rows from i are not NULL. More...
 
const bm::word_tget_block (size_type p, unsigned i, unsigned j) const
 Get low level internal access to. More...
 
unsigned get_half_octet (size_type pos, size_type row_idx) const
 
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...
 

Protected Member Functions

void allocate_rows (size_type rsize)
 
void free_rows () BMNOEXEPT
 
bvector_typeconstruct_bvector (const bvector_type *bv) const
 
void destruct_bvector (bvector_type *bv) const
 

Static Protected Member Functions

static void throw_bad_alloc ()
 

Protected Attributes

size_type bv_size_
 
allocator_type alloc_
 
allocation_policy_type ap_
 
allocator_pool_typepool_
 
bvector_type_ptrbv_rows_
 
size_type rsize_
 

Detailed Description

template<typename BV>
class bm::basic_bmatrix< BV >

Basic dense bit-matrix class.

Container of row-major bit-vectors, forming a bit-matrix. This class uses dense form of row storage. It is applicable as a build block for other sparse containers and succinct data structures, implementing high level abstractions.

Definition at line 53 of file bmbmatrix.h.

Member Typedef Documentation

◆ allocation_policy_type

Definition at line 60 of file bmbmatrix.h.

◆ allocator_pool_type

template<typename BV>
typedef allocator_type::allocator_pool_type bm::basic_bmatrix< BV >::allocator_pool_type

Definition at line 61 of file bmbmatrix.h.

◆ allocator_type

template<typename BV>
typedef BV::allocator_type bm::basic_bmatrix< BV >::allocator_type

Definition at line 59 of file bmbmatrix.h.

◆ block_idx_type

template<typename BV>
typedef bvector_type::block_idx_type bm::basic_bmatrix< BV >::block_idx_type

Definition at line 63 of file bmbmatrix.h.

◆ bvector_type

template<typename BV>
typedef BV bm::basic_bmatrix< BV >::bvector_type

Definition at line 56 of file bmbmatrix.h.

◆ bvector_type_const_ptr

template<typename BV>
typedef const bvector_type* bm::basic_bmatrix< BV >::bvector_type_const_ptr

Definition at line 58 of file bmbmatrix.h.

◆ bvector_type_ptr

template<typename BV>
typedef bvector_type* bm::basic_bmatrix< BV >::bvector_type_ptr

Definition at line 57 of file bmbmatrix.h.

◆ octet_type

template<typename BV>
typedef unsigned char bm::basic_bmatrix< BV >::octet_type

Definition at line 64 of file bmbmatrix.h.

◆ size_type

template<typename BV>
typedef bvector_type::size_type bm::basic_bmatrix< BV >::size_type

Definition at line 62 of file bmbmatrix.h.

Constructor & Destructor Documentation

◆ basic_bmatrix() [1/3]

template<typename BV >
bm::basic_bmatrix< BV >::basic_bmatrix ( size_type  rsize,
allocation_policy_type  ap = allocation_policy_type(),
size_type  bv_max_size = bm::id_max,
const allocator_type alloc = allocator_type() 
)

Definition at line 473 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::operator=().

◆ ~basic_bmatrix()

template<typename BV >
bm::basic_bmatrix< BV >::~basic_bmatrix ( )

Definition at line 490 of file bmbmatrix.h.

◆ basic_bmatrix() [2/3]

template<typename BV>
bm::basic_bmatrix< BV >::basic_bmatrix ( const basic_bmatrix< BV > &  bbm)

copy-ctor

Definition at line 498 of file bmbmatrix.h.

◆ basic_bmatrix() [3/3]

template<typename BV>
bm::basic_bmatrix< BV >::basic_bmatrix ( basic_bmatrix< BV > &&  bbm)

move-ctor

Definition at line 512 of file bmbmatrix.h.

Member Function Documentation

◆ allocate_rows()

template<typename BV >
void bm::basic_bmatrix< BV >::allocate_rows ( size_type  rsize)
protected

Definition at line 609 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ compare_octet()

template<typename BV >
int bm::basic_bmatrix< BV >::compare_octet ( size_type  pos,
size_type  octet_idx,
char  octet 
) const

Compare vector[pos] with octet

It uses regulat comparison of chars to comply with the (signed) char sort order.

Parameters
pos- column position in the matrix
octet_idx- octet based row position (1 octet - 8 rows)
octet- octet value to compare
Returns
0 - equal, -1 - less(vect[pos] < octet), 1 - greater

Definition at line 976 of file bmbmatrix.h.

Referenced by bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::compare(), and bm::basic_bmatrix< bm::bvector<> >::rows().

◆ construct_bvector()

template<typename BV >
basic_bmatrix< BV >::bvector_type * bm::basic_bmatrix< BV >::construct_bvector ( const bvector_type bv) const
protected

Definition at line 731 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ construct_row() [1/2]

template<typename BV >
basic_bmatrix< BV >::bvector_type_ptr bm::basic_bmatrix< BV >::construct_row ( size_type  row)

Make sure row is constructed, return bit-vector

Definition at line 681 of file bmbmatrix.h.

Referenced by bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::import_no_check(), and bm::basic_bmatrix< bm::bvector<> >::rows().

◆ construct_row() [2/2]

template<typename BV >
basic_bmatrix< BV >::bvector_type_ptr bm::basic_bmatrix< BV >::construct_row ( size_type  row,
const bvector_type bv 
)

Make sure row is copy-constructed, return bit-vector

Definition at line 696 of file bmbmatrix.h.

◆ copy_from()

template<typename BV>
void bm::basic_bmatrix< BV >::copy_from ( const basic_bmatrix< BV > &  bbm)

◆ destruct_bvector()

template<typename BV >
void bm::basic_bmatrix< BV >::destruct_bvector ( bvector_type bv) const
protected

Definition at line 756 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ destruct_row()

template<typename BV >
void bm::basic_bmatrix< BV >::destruct_row ( size_type  row)

Definition at line 715 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ free_rows()

template<typename BV >
void bm::basic_bmatrix< BV >::free_rows ( )
protected

◆ get_block()

template<typename BV >
const bm::word_t * bm::basic_bmatrix< BV >::get_block ( size_type  p,
unsigned  i,
unsigned  j 
) const

Get low level internal access to.

Definition at line 770 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ get_half_octet()

template<typename BV >
unsigned bm::basic_bmatrix< BV >::get_half_octet ( size_type  pos,
size_type  row_idx 
) const

Definition at line 988 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ get_octet()

template<typename BV >
unsigned char bm::basic_bmatrix< BV >::get_octet ( size_type  pos,
size_type  octet_idx 
) const

return octet from the matrix

Parameters
pos- column position in the matrix
octet_idx- octet based row position (1 octet - 8 rows)

Definition at line 877 of file bmbmatrix.h.

Referenced by bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::calc_octet_stat(), bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::common_prefix_length(), bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::get(), and bm::basic_bmatrix< bm::bvector<> >::rows().

◆ get_row() [1/2]

template<typename BV >
const basic_bmatrix< BV >::bvector_type * bm::basic_bmatrix< BV >::get_row ( size_type  i) const

◆ get_row() [2/2]

template<typename BV >
basic_bmatrix< BV >::bvector_type * bm::basic_bmatrix< BV >::get_row ( size_type  i)

Get row bit-vector

Definition at line 547 of file bmbmatrix.h.

◆ insert_octet()

template<typename BV >
void bm::basic_bmatrix< BV >::insert_octet ( size_type  pos,
size_type  octet_idx,
unsigned char  octet 
)

Bit-transpose and insert an octet and assign it to a bit-matrix

Parameters
pos- column position in the matrix
octet_idx- octet based row position (1 octet - 8 rows)
octet- value to assign

Definition at line 828 of file bmbmatrix.h.

Referenced by bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::insert_value_no_null(), and bm::basic_bmatrix< bm::bvector<> >::rows().

◆ operator=() [1/2]

template<typename BV>
basic_bmatrix<BV>& bm::basic_bmatrix< BV >::operator= ( const basic_bmatrix< BV > &  bbm)
inline

Definition at line 79 of file bmbmatrix.h.

◆ operator=() [2/2]

template<typename BV>
basic_bmatrix<BV>& bm::basic_bmatrix< BV >::operator= ( basic_bmatrix< BV > &&  bbm)
inline

move assignmment operator

Definition at line 90 of file bmbmatrix.h.

◆ optimize()

template<typename BV >
void bm::basic_bmatrix< BV >::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

Parameters
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 1046 of file bmbmatrix.h.

Referenced by bm::base_sparse_vector< Val, BV, 1 >::free_plain(), and bm::basic_bmatrix< bm::bvector<> >::rows().

◆ row()

template<typename BV >
const basic_bmatrix< BV >::bvector_type * bm::basic_bmatrix< BV >::row ( size_type  i) const

◆ rows()

template<typename BV>
size_type bm::basic_bmatrix< BV >::rows ( ) const
inline

get number of value rows

Definition at line 131 of file bmbmatrix.h.

◆ set_allocator_pool()

template<typename BV>
void bm::basic_bmatrix< BV >::set_allocator_pool ( allocator_pool_type pool_ptr)
inline

Definition at line 101 of file bmbmatrix.h.

◆ set_octet()

template<typename BV >
void bm::basic_bmatrix< BV >::set_octet ( size_type  pos,
size_type  octet_idx,
unsigned char  octet 
)

Bit-transpose an octet and assign it to a bit-matrix

Parameters
pos- column position in the matrix
octet_idx- octet based row position (1 octet - 8 rows)
octet- value to assign

Definition at line 785 of file bmbmatrix.h.

Referenced by bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::assign(), bm::basic_bmatrix< bm::bvector<> >::rows(), and bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::set_value_no_null().

◆ swap()

template<typename BV>
void bm::basic_bmatrix< BV >::swap ( basic_bmatrix< BV > &  bbm)

◆ test_4rows()

template<typename BV >
bool bm::basic_bmatrix< BV >::test_4rows ( unsigned  i) const

Test if 4 rows from i are not NULL.

Definition at line 556 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::rows().

◆ throw_bad_alloc()

template<typename BV>
static void bm::basic_bmatrix< BV >::throw_bad_alloc ( )
inlinestaticprotected

Definition at line 225 of file bmbmatrix.h.

Field Documentation

◆ alloc_

template<typename BV>
allocator_type bm::basic_bmatrix< BV >::alloc_
protected

Definition at line 229 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::copy_from().

◆ ap_

template<typename BV>
allocation_policy_type bm::basic_bmatrix< BV >::ap_
protected

Definition at line 230 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::copy_from().

◆ bv_rows_

template<typename BV>
bvector_type_ptr* bm::basic_bmatrix< BV >::bv_rows_
protected

Definition at line 233 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::copy_from().

◆ bv_size_

template<typename BV>
size_type bm::basic_bmatrix< BV >::bv_size_
protected

Definition at line 228 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::copy_from().

◆ pool_

template<typename BV>
allocator_pool_type* bm::basic_bmatrix< BV >::pool_
protected

Definition at line 231 of file bmbmatrix.h.

Referenced by bm::basic_bmatrix< bm::bvector<> >::set_allocator_pool().

◆ rsize_

template<typename BV>
size_type bm::basic_bmatrix< BV >::rsize_
protected

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