BitMagic-C++
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
bm::str_sparse_vector< CharType, BV, STR_SIZE > Class Template Reference

succinct sparse vector for strings with compression using bit-slicing ( transposition) method More...

#include <bmstrsparsevec.h>

Inheritance diagram for bm::str_sparse_vector< CharType, BV, STR_SIZE >:
Inheritance graph
[legend]
Collaboration diagram for bm::str_sparse_vector< CharType, BV, STR_SIZE >:
Collaboration graph
[legend]

Data Structures

class  back_insert_iterator
 Back insert iterator implements buffered insert, faster than generic access assignment. More...
 
class  const_iterator
 Const iterator to do quick traverse of the sparse vector. More...
 
class  const_reference
 Reference class to access elements via common [] operator. More...
 
struct  is_dynamic_splices
 
struct  is_remap_support
 
struct  is_rsc_support
 
class  reference
 Reference class to access elements via common [] operator. More...
 
class  reference_base
 
struct  statistics
 

Public Types

enum  octet_slices { sv_octet_slices = STR_SIZE }
 
typedef BV bvector_type
 
typedef bvector_typebvector_type_ptr
 
typedef const bvector_typebvector_type_const_ptr
 
typedef CharType value_type
 
typedef CharType * value_type_prt
 
typedef bvector_type::size_type size_type
 
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 base_sparse_vector< CharType, BV, STR_SIZE > parent_type
 
typedef parent_type::unsigned_value_type unsigned_value_type
 
typedef bm::dynamic_heap_matrix< unsigned char, allocator_typeslice_octet_matrix_type
 Matrix of character remappings. More...
 
typedef slice_octet_matrix_type remap_matrix_type
 
typedef bm::dynamic_heap_matrix< size_t, allocator_typeoctet_freq_matrix_type
 Matrix of character frequencies (for optimal code remap) More...
 
- Public Types inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
enum  bit_planes
 
enum  vector_capacity
 
typedef CharType value_type
 
typedef BV bvector_type
 
typedef BV::size_type size_type
 
typedef bvector_typebvector_type_ptr
 
typedef const bvector_typebvector_type_const_ptr
 
typedef const value_typeconst_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

 str_sparse_vector (bm::null_support null_able=bm::no_null, allocation_policy_type ap=allocation_policy_type(), size_type bv_max_size=bm::id_max, const allocator_type &alloc=allocator_type())
 Sparse vector constructor. More...
 
 str_sparse_vector (const str_sparse_vector &str_sv)
  More...
 
 str_sparse_vector (const str_sparse_vector &str_sv, bm::remap_setup remap_mode)
  More...
 
str_sparse_vector< CharType, BV, STR_SIZE > & operator= (const str_sparse_vector< CharType, BV, STR_SIZE > &str_sv)
  More...
 
 str_sparse_vector (str_sparse_vector< CharType, BV, STR_SIZE > &&str_sv) BMNOEXCEPT
  More...
 
str_sparse_vector< CharType, BV, STR_SIZE > & operator= (str_sparse_vector< CharType, BV, STR_SIZE > &&str_sv) BMNOEXCEPT
  More...
 
void sync (bool force)
 syncronize internal structures More...
 
bool equal (const str_sparse_vector< CharType, BV, STR_SIZE > &sv, bm::null_support null_able=bm::use_null) const BMNOEXCEPT
 check if another sparse vector has the same content and size More...
 
size_type effective_size () const BMNOEXCEPT
 size of sparse vector (may be different for RSC) More...
 
String element access
const const_reference operator[] (size_type idx) const
 Operator to get read access to an element
More...
 
reference operator[] (size_type idx)
 Operator to get write access to an element
More...
 
void set (size_type idx, const value_type *str)
 set specified element with bounds checking and automatic resize More...
 
void set_null (size_type idx)
 set NULL status for the specified element Vector is resized automatically More...
 
void set_null (const bvector_type &bv_idx)
 Set NULL all elements set as 1 in the argument vector. More...
 
void clear (const bvector_type &bv_idx)
 Set vector elements spcified by argument bit-vector to empty Note that set to empty elements are NOT going to tuned to NULL (NULL qualifier is preserved) More...
 
void keep (const bvector_type &bv_idx)
 Set NULL all elements NOT set as 1 in the argument vector. More...
 
void insert (size_type idx, const value_type *str)
 insert the specified element More...
 
template<typename StrType >
void insert (size_type idx, const StrType &str)
 insert STL string More...
 
void erase (size_type idx)
 erase the specified element More...
 
size_type get (size_type idx, value_type *str, size_type buf_size) const BMNOEXCEPT
 get specified element More...
 
template<typename StrType >
void assign (size_type idx, const StrType &str)
 set specified element with bounds checking and automatic resize More...
 
template<typename StrType >
void push_back (const StrType &str)
 push back a string More...
 
void push_back (const value_type *str)
 push back a string (zero terminated) More...
 
void push_back_null (size_type count)
 push back specified amount of NULL values More...
 
void push_back_null ()
 push back NULL value More...
 
template<typename StrType >
bool try_get (size_type idx, StrType &str) const
 get specified string element if NOT NULL Template method expects an STL-compatible type basic_string<> More...
 
template<typename StrType >
void get (size_type idx, StrType &str) const
 get specified string element Template method expects an STL-compatible type basic_string<> More...
 
void swap (str_sparse_vector &str_sv) BMNOEXCEPT
  More...
 
Element comparison functions <br>
int compare (size_type idx, const value_type *str) const BMNOEXCEPT
 Compare vector element with argument lexicographically. More...
 
int compare (size_type idx1, size_type idx2) const BMNOEXCEPT
 Compare two vector elements. More...
 
unsigned common_prefix_length (size_type idx1, size_type idx2) const BMNOEXCEPT
 Find size of common prefix between two vector elements in octets. More...
 
int compare_remap (size_type idx, const value_type *str) const BMNOEXCEPT
 Variant of compare for remapped vectors. More...
 
int compare_nomap (size_type idx, const value_type *str) const BMNOEXCEPT
 Variant of compare for non-mapped vectors. More...
 
Clear <br>
void clear_all (bool free_mem) BMNOEXCEPT
 resize to zero, free memory More...
 
void clear () BMNOEXCEPT
 resize to zero, free memory More...
 
str_sparse_vector< CharType, BV, STR_SIZE > & clear_range (size_type left, size_type right, bool set_null=false)
 clear range (assign bit 0 for all planes) More...
 
Memory optimization/compression <br>
void optimize (bm::word_t *temp_block=0, typename bvector_type::optmode opt_mode=bvector_type::opt_compress, typename str_sparse_vector< CharType, BV, STR_SIZE >::statistics *stat=0)
 run memory optimization for all vector planes More...
 
void calc_stat (struct str_sparse_vector< CharType, BV, STR_SIZE >::statistics *st) const BMNOEXCEPT
 Calculates memory statistics. More...
 
void freeze ()
 Turn sparse vector into immutable mode Read-only (immutable) vector uses less memory and allows faster searches. More...
 
bool is_ro () const BMNOEXCEPT
 Returns true if vector is read-only. More...
 
Iterator access
const_iterator begin () const BMNOEXCEPT
 Provide const iterator access to container content
More...
 
const_iterator end () const BMNOEXCEPT
 Provide const iterator access to the end
More...
 
const_iterator get_const_iterator (size_type idx) const BMNOEXCEPT
 Get const_itertor re-positioned to specific element. More...
 
back_insert_iterator get_back_inserter ()
 Provide back insert iterator Back insert iterator implements buffered insertion, which is faster, than random access or push_back. More...
 
Export content to C-style <br>
template<typename CharMatrix >
size_type decode (CharMatrix &cmatr, size_type idx_from, size_type dec_size, bool zero_mem=true) const
 Bulk export strings to a C-style matrix of chars. More...
 
template<typename CharMatrix >
size_type decode_substr (CharMatrix &cmatr, size_type idx_from, size_type dec_size, unsigned substr_from, unsigned substr_to, bool zero_mem=true) const
 Bulk export strings to a C-style matrix of chars. More...
 
template<typename CharMatrix >
void import (CharMatrix &cmatr, size_type idx_from, size_type imp_size)
 Bulk import of strings from a C-style matrix of chars. More...
 
template<typename CharMatrix >
void import_back (CharMatrix &cmatr, size_type imp_size)
 Bulk push-back import of strings from a C-style matrix of chars. More...
 
Merge, split, partition data <br>
void copy_range (const str_sparse_vector< CharType, BV, STR_SIZE > &sv, size_type left, size_type right, bm::null_support slice_null=bm::use_null)
 copy range of values from another sparse vector More...
 
str_sparse_vector< CharType, BV, STR_SIZE > & merge (str_sparse_vector< CharType, BV, STR_SIZE > &str_sv)
 merge with another sparse vector using OR operation Merge is different from join(), because it borrows data from the source vector, so it gets modified (destructive join) More...
 
void keep_range (size_type left, size_type right, bm::null_support slice_null=bm::use_null)
 Keep only specified interval in the sparse vector, clear all other elements. More...
 
- Public Member Functions inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
 base_sparse_vector ()
 
 base_sparse_vector (bm::null_support null_able, 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< CharType, BV, MAX_SIZE > &bsv)
 
 base_sparse_vector (base_sparse_vector< CharType, BV, MAX_SIZE > &&bsv) BMNOEXCEPT
  More...
 
void swap (base_sparse_vector< CharType, 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 More...
 
bool empty () const BMNOEXCEPT
  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 BMNOEXCEPT
 Calculates memory statistics. More...
 
bool equal (const base_sparse_vector< CharType, 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 More...
 
bool is_nullable () const BMNOEXCEPT
 check if container supports NULL(unassigned) values More...
 
bm::null_support get_null_support () const BMNOEXCEPT
 check if container supports NULL (unassigned) values More...
 
const bvector_typeget_null_bvector () const BMNOEXCEPT
 Get bit-vector of assigned values or NULL (if not constructed that way) More...
 
bool is_null (size_type idx) const BMNOEXCEPT
 test if specified element is NULL More...
 
void set_allocator_pool (allocator_pool_type *pool_ptr) BMNOEXCEPT
 Set allocation pool. More...
 
allocator_pool_typeget_allocator_pool () const BMNOEXCEPT
 Get allocation pool. More...
 
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 BMNOEXCEPT
 get read-only access to bit-plane More...
 
unsigned effective_slices () const BMNOEXCEPT
 Number of effective bit-planes in the value type. More...
 
bvector_type_ptr slice (unsigned i) BMNOEXCEPT
 get access to bit-plane as is (can return NULL) More...
 
bvector_type_const_ptr slice (unsigned i) const BMNOEXCEPT
 
bvector_typeget_null_bvect () BMNOEXCEPT
 
void free_slice (unsigned i)
 free memory in bit-plane More...
 
bm::id64_t get_slice_mask (unsigned element_idx) const BMNOEXCEPT
  More...
 
const bmatrix_typeget_bmatrix () const BMNOEXCEPT
  More...
 
bmatrix_typeget_bmatrix () BMNOEXCEPT
 access to internal bit-matrix More...
 
void mark_null_idx (unsigned null_idx) BMNOEXCEPT
 Set NULL plain index. More...
 

Static Public Member Functions

static bool find_rank (size_type rank, size_type &pos) BMNOEXCEPT
 find position of compressed element by its rank More...
 
Various traits <br>
static constexpr bool is_compressed () BMNOEXCEPT
 various type traits More...
 
static constexpr bool is_str () BMNOEXCEPT
 
- Static Public Member Functions inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
static constexpr bool is_signed () BMNOEXCEPT
 returns true if value type is signed integral type More...
 
static unsigned slices () BMNOEXCEPT
 get total number of bit-planes in the vector More...
 
static unsigned stored_slices () BMNOEXCEPT
 Number of stored bit-planes (value planes + extra. More...
 
static unsigned_value_type s2u (value_type v) BMNOEXCEPT
 Convert signed value type to unsigned representation. More...
 
static value_type u2s (unsigned_value_type v) BMNOEXCEPT
 Convert unsigned value type to signed representation. More...
 

Protected Types

enum  insert_buf_size_e { ins_buf_size = bm::gap_max_bits }
 
- Protected Types inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
typedef bvector_type::block_idx_type block_idx_type
 

Protected Member Functions

template<typename CharMatrix , size_t BufSize = ins_buf_size>
void import_no_check (CharMatrix &cmatr, size_type idx_from, size_type imp_size, bool set_not_null=true)
  More...
 
template<size_t BufSize = ins_buf_size>
void import_char_slice (const unsigned_value_type *ch_slice, unsigned ch_acc, size_type char_slice_idx, size_type idx_from, size_type imp_size)
  More...
 
void set_value (size_type idx, const value_type *str)
 set value without checking boundaries More...
 
void set_value_no_null (size_type idx, const value_type *str)
 set value without checking boundaries or support of NULL More...
 
void insert_value (size_type idx, const value_type *str)
 insert value without checking boundaries More...
 
void insert_value_no_null (size_type idx, const value_type *str)
 insert value without checking boundaries or support of NULL More...
 
size_type size_internal () const
  More...
 
void resize_internal (size_type sz)
  More...
 
size_t remap_size () const
  More...
 
const unsigned char * get_remap_buffer () const
  More...
 
unsigned char * init_remap_buffer ()
  More...
 
void set_remap ()
  More...
 
bool resolve_range (size_type from, size_type to, size_type *idx_from, size_type *idx_to) const
 
const remap_matrix_typeget_remap_matrix () const
  More...
 
remap_matrix_typeget_remap_matrix ()
  More...
 
void remap (back_insert_iterator &iit)
 reamp using statistics table from inserter More...
 
void remap_from_impl (const str_sparse_vector &str_sv, octet_freq_matrix_type *omatrix, bool move_data)
 Remap from implementation, please note that move_data flag can violate cosnt-ness. More...
 
- Protected Member Functions inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
void copy_from (const base_sparse_vector< CharType, 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)
  More...
 
void insert_clear_value_planes_from (unsigned plane_idx, size_type idx)
  More...
 
void erase_column (size_type idx, bool erase_null)
  More...
 
void insert_null (size_type idx, bool not_null)
  More...
 
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 copy_range_slices (const base_sparse_vector< CharType, BV, MAX_SIZE > &bsv, typename base_sparse_vector< CharType, BV, MAX_SIZE >::size_type left, typename base_sparse_vector< CharType, BV, MAX_SIZE >::size_type right, bm::null_support slice_null)
 Perform copy_range() on a set of planes. More...
 

Static Protected Member Functions

Errors and exceptions <br>
static void throw_range_error (const char *err_msg)
 throw range error More...
 
static void throw_bad_value (const char *err_msg)
 throw domain error More...
 
- Static Protected Member Functions inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
static constexpr unsigned value_bits () BMNOEXCEPT
 Number of total bit-planes in the value type. More...
 

Protected Attributes

unsigned remap_flags_
 remapping status More...
 
slice_octet_matrix_type remap_matrix1_
 octet remap table 1 More...
 
slice_octet_matrix_type remap_matrix2_
 octet remap table 2 More...
 
- Protected Attributes inherited from bm::base_sparse_vector< CharType, BV, STR_SIZE >
bmatrix_type bmatr_
 bit-transposed matrix More...
 
unsigned_value_type slice_mask_
 slice presence bit-mask More...
 
size_type size_
 array size More...
 
unsigned effective_slices_
 number of bit slices actually allocated More...
 
bool is_ro_
 read-only More...
 

Friends

template<class SVect >
class sparse_vector_serializer
 
template<class SVect >
class sparse_vector_deserializer
 

Size, etc <br>

size_type size () const
 return size of the vector More...
 
bool empty () const
 return true if vector is empty More...
 
void resize (size_type sz)
 resize vector More...
 
size_type effective_max_str () const BMNOEXCEPT
 get effective string length used in vector Calculate and returns efficiency, how close are we to the reserved maximum. More...
 
size_type effective_vector_max () const
 get effective string length used in vector More...
 
void sync_size () BMNOEXCEPT
 recalculate size to exclude tail NULL elements After this call size() will return the true size of the vector More...
 
static size_type max_str ()
 get maximum string length capacity More...
 

Char remapping, succinct utilities

Remapping runs character usage analysis (frequency analysis) based on that implements reduction of dit-depth thus improves search performance and memory usage (both RAM and serialized).

Remapping limits farther modifications of sparse vector. (Use remapped vector as read-only).

bool is_remap () const BMNOEXCEPT
 Get character remapping status (true | false) More...
 
void remap_from (const str_sparse_vector &str_sv, octet_freq_matrix_type *omatrix=0)
 Build remapping profile and load content from another sparse vector Remapped vector likely saves memory (both RAM and disk) but should not be modified (should be read-only). More...
 
void remap ()
 Build remapping profile and re-load content to save memory. More...
 
void calc_octet_stat (octet_freq_matrix_type &octet_matrix) const
  More...
 
void build_octet_remap (slice_octet_matrix_type &octet_remap_matrix1, slice_octet_matrix_type &octet_remap_matrix2, octet_freq_matrix_type &octet_occupancy_matrix) const
  More...
 
bool remap_tosv (value_type *sv_str, size_type buf_size, const value_type *str) const BMNOEXCEPT
  More...
 
void recalc_remap_matrix2 ()
  More...
 
static bool remap_tosv (value_type *BMRESTRICT sv_str, size_type buf_size, const value_type *BMRESTRICT str, const slice_octet_matrix_type &BMRESTRICT octet_remap_matrix2) BMNOEXCEPT
  More...
 
static bool remap_fromsv (value_type *BMRESTRICT str, size_type buf_size, const value_type *BMRESTRICT sv_str, const slice_octet_matrix_type &BMRESTRICT octet_remap_matrix1) BMNOEXCEPT
  More...
 

Detailed Description

template<typename CharType, typename BV, unsigned STR_SIZE>
class bm::str_sparse_vector< CharType, BV, STR_SIZE >

succinct sparse vector for strings with compression using bit-slicing ( transposition) method

Initial string is bit-transposed into bit-slices so collection may use less memory due to prefix sum (GAP) compression in bit-slices. In addition, the container can use chracter re-mapping using char freaquencies to compute the minimal codes. Re-mapping can reduce memory footprint, get better search performance and improve storage compression.

Template parameters: CharType - type of character (char or unsigned char) (wchar not tested) BV - bit-vector for bit-slicing STR_SIZE - initial string size (can dynamically increase on usage)

Examples
strsvsample01.cpp, strsvsample02.cpp, strsvsample02a.cpp, strsvsample03.cpp, strsvsample04.cpp, strsvsample05.cpp, strsvsample06.cpp, strsvsample07.cpp, and xsample05.cpp.

Definition at line 71 of file bmstrsparsevec.h.

Member Typedef Documentation

◆ octet_freq_matrix_type

template<typename CharType , typename BV , unsigned STR_SIZE>
typedef bm::dynamic_heap_matrix<size_t, allocator_type> bm::str_sparse_vector< CharType, BV, STR_SIZE >::octet_freq_matrix_type

Matrix of character frequencies (for optimal code remap)

Definition at line 108 of file bmstrsparsevec.h.

◆ slice_octet_matrix_type

template<typename CharType , typename BV , unsigned STR_SIZE>
typedef bm::dynamic_heap_matrix<unsigned char, allocator_type> bm::str_sparse_vector< CharType, BV, STR_SIZE >::slice_octet_matrix_type

Matrix of character remappings.

Definition at line 101 of file bmstrsparsevec.h.

Member Enumeration Documentation

◆ insert_buf_size_e

template<typename CharType , typename BV , unsigned STR_SIZE>
enum bm::str_sparse_vector::insert_buf_size_e
protected
Enumerator
ins_buf_size 

Definition at line 1333 of file bmstrsparsevec.h.

◆ octet_slices

template<typename CharType , typename BV , unsigned STR_SIZE>
enum bm::str_sparse_vector::octet_slices
Enumerator
sv_octet_slices 

Definition at line 92 of file bmstrsparsevec.h.

Constructor & Destructor Documentation

◆ str_sparse_vector() [1/4]

template<class CharType , class BV , unsigned STR_SIZE>
bm::str_sparse_vector< CharType, BV, STR_SIZE >::str_sparse_vector ( bm::null_support  null_able = bm::no_null,
allocation_policy_type  ap = allocation_policy_type(),
size_type  bv_max_size = bm::id_max,
const allocator_type alloc = allocator_type() 
)

Sparse vector constructor.

Parameters
null_able- defines if vector supports NULL values flag by default it is OFF, use bm::use_null to enable it
ap- allocation strategy for underlying bit-vectors Default allocation policy uses BM_BIT setting (fastest access)
bv_max_size- maximum possible size of underlying bit-vectors Please note, this is NOT size of svector itself, it is dynamic upper limit which should be used very carefully if we surely know the ultimate size
alloc- allocator for bit-vectors
See also
bvector<> container
bm::bvector<>::allocation_policy
bm::startegy

Definition at line 1568 of file bmstrsparsevec.h.

◆ str_sparse_vector() [2/4]

template<class CharType , class BV , unsigned STR_SIZE>
bm::str_sparse_vector< CharType, BV, STR_SIZE >::str_sparse_vector ( const str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv)

copy-ctor

Definition at line 1584 of file bmstrsparsevec.h.

◆ str_sparse_vector() [3/4]

template<class CharType , class BV , unsigned STR_SIZE>
bm::str_sparse_vector< CharType, BV, STR_SIZE >::str_sparse_vector ( const str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv,
bm::remap_setup  remap_mode 
)

construct empty sparse vector, copying the remap tables from another vector

Parameters
str_sv- source vector to take the remap tables from (assumed to be remaped)
remap_mode- remap table copy param

Definition at line 1598 of file bmstrsparsevec.h.

References BM_ASSERT, bm::COPY_RTABLES, and bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_.

◆ str_sparse_vector() [4/4]

template<typename CharType , typename BV , unsigned STR_SIZE>
bm::str_sparse_vector< CharType, BV, STR_SIZE >::str_sparse_vector ( str_sparse_vector< CharType, BV, STR_SIZE > &&  str_sv)
inline

Member Function Documentation

◆ assign()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename StrType >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::assign ( size_type  idx,
const StrType &  str 
)
inline

set specified element with bounds checking and automatic resize

This is an equivalent of set() method, but templetized to be more compatible with the STL std::string and the likes

Parameters
idx- element index (vector auto-resized if needs to)
str- input string expected an STL class with size() support, like basic_string<> or vector<char>
Examples
strsvsample01.cpp, and strsvsample04.cpp.

Definition at line 640 of file bmstrsparsevec.h.

References BM_ASSERT, bm::base_sparse_vector< CharType, BV, STR_SIZE >::bmatr_, bm::base_sparse_vector< CharType, BV, STR_SIZE >::clear_value_planes_from(), bm::base_sparse_vector< CharType, BV, STR_SIZE >::get_null_bvect(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix2_, bm::basic_bmatrix< BV >::set_octet(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::size(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::size_.

Referenced by main(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back().

◆ begin()

template<class CharType , class BV , unsigned STR_SIZE>
str_sparse_vector< CharType, BV, STR_SIZE >::const_iterator bm::str_sparse_vector< CharType, BV, STR_SIZE >::begin

Provide const iterator access to container content

Examples
strsvsample01.cpp, strsvsample02.cpp, strsvsample02a.cpp, strsvsample04.cpp, and strsvsample06.cpp.

Definition at line 2395 of file bmstrsparsevec.h.

Referenced by main().

◆ build_octet_remap()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::build_octet_remap ( slice_octet_matrix_type octet_remap_matrix1,
slice_octet_matrix_type octet_remap_matrix2,
octet_freq_matrix_type octet_occupancy_matrix 
) const

Compute optimal remap codes

Definition at line 2042 of file bmstrsparsevec.h.

References BM_ASSERT, bm::find_first_nz(), and bm::find_max_nz().

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().

◆ calc_octet_stat()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::calc_octet_stat ( octet_freq_matrix_type octet_matrix) const

Calculate flags which octets are present on each byte-plane.

Definition at line 2012 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::const_iterator::valid().

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().

◆ calc_stat()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::calc_stat ( struct str_sparse_vector< CharType, BV, STR_SIZE >::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.

Parameters
st- pointer on statistics structure to be filled in.
See also
statistics
Examples
strsvsample02a.cpp, strsvsample03.cpp, and strsvsample05.cpp.

Definition at line 1812 of file bmstrsparsevec.h.

References bm::bv_statistics::bit_blocks, BM_ASSERT, bm::bv_statistics::bv_count, bm::bv_statistics::gap_blocks, bm::bv_statistics::gap_cap_overhead, bm::bv_statistics::max_serialize_mem, bm::bv_statistics::memory_used, and bm::bv_statistics::ptr_sub_blocks.

Referenced by main().

◆ clear() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear ( )
inline

resize to zero, free memory

Definition at line 807 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear_all().

◆ clear() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear ( const bvector_type bv_idx)
inline

Set vector elements spcified by argument bit-vector to empty Note that set to empty elements are NOT going to tuned to NULL (NULL qualifier is preserved)

Parameters
bv_idx- index bit-vector for elements which to be set to 0

Definition at line 580 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::bit_sub_rows().

◆ clear_all()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear_all ( bool  free_mem)

resize to zero, free memory

Definition at line 2405 of file bmstrsparsevec.h.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear().

◆ clear_range()

template<typename CharType , typename BV , unsigned STR_SIZE>
str_sparse_vector<CharType, BV, STR_SIZE>& bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear_range ( size_type  left,
size_type  right,
bool  set_null = false 
)
inline

clear range (assign bit 0 for all planes)

Parameters
left- interval start
right- interval end (closed interval)
set_null- set cleared values to unassigned (NULL)
Examples
strsvsample04.cpp.

Definition at line 816 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::clear_range(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_null().

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::import(), main(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().

◆ common_prefix_length()

template<class CharType , class BV , unsigned STR_SIZE>
unsigned bm::str_sparse_vector< CharType, BV, STR_SIZE >::common_prefix_length ( size_type  idx1,
size_type  idx2 
) const

Find size of common prefix between two vector elements in octets.

Returns
size of common prefix

Definition at line 1965 of file bmstrsparsevec.h.

◆ compare() [1/2]

template<class CharType , class BV , unsigned STR_SIZE>
int bm::str_sparse_vector< CharType, BV, STR_SIZE >::compare ( size_type  idx,
const value_type str 
) const

Compare vector element with argument lexicographically.

The function does not account for NULL values, NULL element is treated as an empty string

NOTE: for a re-mapped container, input string may have no correct remapping, in this case we have an ambiguity (we know it is not equal (0) but LT or GT?). Behavior is undefined.

Parameters
idx- vactor element index
str- argument to compare with
Returns
0 - equal, < 0 - vect[idx] < str, >0 otherwise
Examples
strsvsample02a.cpp.

Definition at line 1900 of file bmstrsparsevec.h.

References BM_ASSERT.

Referenced by main().

◆ compare() [2/2]

template<class CharType , class BV , unsigned STR_SIZE>
int bm::str_sparse_vector< CharType, BV, STR_SIZE >::compare ( size_type  idx1,
size_type  idx2 
) const

Compare two vector elements.

The function does not account for NULL values, NULL element is treated as an empty string

Parameters
idx1- vactor element index 1
idx2- vactor element index 2
Returns
0 - equal, < 0 - vect[idx1] < vect[idx2], >0 otherwise

Definition at line 1913 of file bmstrsparsevec.h.

References BM_ASSERT.

◆ compare_nomap()

template<class CharType , class BV , unsigned STR_SIZE>
int bm::str_sparse_vector< CharType, BV, STR_SIZE >::compare_nomap ( size_type  idx,
const value_type str 
) const

Variant of compare for non-mapped vectors.

Caller MUST guarantee vector is not remapped.

Definition at line 1873 of file bmstrsparsevec.h.

References BM_ASSERT, and is_remap.

◆ compare_remap()

template<class CharType , class BV , unsigned STR_SIZE>
int bm::str_sparse_vector< CharType, BV, STR_SIZE >::compare_remap ( size_type  idx,
const value_type str 
) const

Variant of compare for remapped vectors.

Caller MUST guarantee vector is remapped.

Definition at line 1844 of file bmstrsparsevec.h.

References BM_ASSERT, and is_remap.

◆ copy_range()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::copy_range ( const str_sparse_vector< CharType, BV, STR_SIZE > &  sv,
size_type  left,
size_type  right,
bm::null_support  slice_null = bm::use_null 
)

copy range of values from another sparse vector

Copy [left..right] values from the source vector, clear everything outside the range.

Parameters
sv- source vector
left- index from in losed diapason of [left..right]
right- index to in losed diapason of [left..right]
slice_null- "use_null" copy range for NULL vector or do not copy it

Definition at line 2329 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix1_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix2_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::size(), and bm::xor_swap().

◆ decode()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename CharMatrix >
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::decode ( CharMatrix &  cmatr,
size_type  idx_from,
size_type  dec_size,
bool  zero_mem = true 
) const
inline

Bulk export strings to a C-style matrix of chars.

Parameters
cmatr- dest matrix (bm::heap_matrix)
idx_from- index in the sparse vector to export from
dec_size- decoding size (matrix column allocation should match)
zero_mem- set to false if target array is pre-initialized with 0s to avoid performance penalty
Returns
number of actually exported elements (can be less than requested)

Definition at line 1064 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::decode_substr(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::effective_max_str().

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().

◆ decode_substr()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename CharMatrix >
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::decode_substr ( CharMatrix &  cmatr,
size_type  idx_from,
size_type  dec_size,
unsigned  substr_from,
unsigned  substr_to,
bool  zero_mem = true 
) const
inline

Bulk export strings to a C-style matrix of chars.

Parameters
cmatr- dest matrix (bm::heap_matrix)
idx_from- index in the sparse vector to export from
dec_size- decoding size (matrix column allocation should match)
substr_from- sub-string position from
substr_to- sub-string position to
zero_mem- set to false if target array is pre-initialized with 0s to avoid performance penalty
Returns
number of actually exported elements (can be less than requested)

Decoder functor

< target array for reverse transpose

< bit-plane mask

< i

< SV read offset

Definition at line 1088 of file bmstrsparsevec.h.

References BM_ASSERT, bm::base_sparse_vector< CharType, BV, STR_SIZE >::bmatr_, BMNOEXCEPT, BMNOEXCEPT2, BMRESTRICT, bm::str_sparse_vector< CharType, BV, STR_SIZE >::end(), bm::for_each_bit_range_no_check(), bm::base_sparse_vector< CharType, BV, STR_SIZE >::get_null_bvector(), bm::basic_bmatrix< BV >::get_row(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix1_, bm::basic_bmatrix< BV >::rows_not_null(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::size().

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::decode().

◆ effective_max_str()

template<class CharType , class BV , unsigned STR_SIZE>
str_sparse_vector< CharType, BV, STR_SIZE >::size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::effective_max_str

◆ effective_size()

template<typename CharType , typename BV , unsigned STR_SIZE>
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::effective_size ( ) const
inline

size of sparse vector (may be different for RSC)

Definition at line 1330 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::size().

◆ effective_vector_max()

template<typename CharType , typename BV , unsigned STR_SIZE>
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::effective_vector_max ( ) const
inline

get effective string length used in vector

Returns
current string length maximum

Definition at line 860 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::effective_max_str().

◆ empty()

template<typename CharType , typename BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::empty ( ) const
inline

◆ end()

template<typename CharType , typename BV , unsigned STR_SIZE>
const_iterator bm::str_sparse_vector< CharType, BV, STR_SIZE >::end ( ) const
inline

Provide const iterator access to the end

Examples
strsvsample01.cpp, strsvsample02.cpp, strsvsample02a.cpp, strsvsample04.cpp, and strsvsample06.cpp.

Definition at line 922 of file bmstrsparsevec.h.

References bm::id_max.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::decode_substr(), and main().

◆ equal()

template<class CharType , class BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::equal ( const str_sparse_vector< CharType, BV, STR_SIZE > &  sv,
bm::null_support  null_able = bm::use_null 
) const

check if another sparse vector has the same content and size

Parameters
sv- sparse vector for comparison
null_able- flag to consider NULL vector in comparison (default) or compare only value content planes
Returns
true, if it is the same
Examples
strsvsample03.cpp, and xsample05.cpp.

Definition at line 2299 of file bmstrsparsevec.h.

Referenced by main().

◆ erase()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::erase ( size_type  idx)

erase the specified element

Parameters
idx- element index
Examples
strsvsample01.cpp.

Definition at line 1654 of file bmstrsparsevec.h.

References BM_ASSERT.

Referenced by main().

◆ find_rank()

template<class CharType , class BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::find_rank ( size_type  rank,
size_type pos 
)
static

find position of compressed element by its rank

Definition at line 1990 of file bmstrsparsevec.h.

References BM_ASSERT.

◆ freeze()

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::freeze ( )
inline

Turn sparse vector into immutable mode Read-only (immutable) vector uses less memory and allows faster searches.

Before freezing it is recommenede to call optimize() to get full memory saving effect

See also
optimize, remap
Examples
strsvsample03.cpp.

Definition at line 907 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::freeze_matr().

Referenced by main().

◆ get() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename StrType >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::get ( size_type  idx,
StrType &  str 
) const
inline

get specified string element Template method expects an STL-compatible type basic_string<>

Parameters
idx- element index (vector auto-resized if needs to)
str- string to get [out]

Definition at line 718 of file bmstrsparsevec.h.

References BM_ASSERT, bm::base_sparse_vector< CharType, BV, STR_SIZE >::bmatr_, bm::basic_bmatrix< BV >::get_octet(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix1_, and bm::str_sparse_vector< CharType, BV, STR_SIZE >::throw_bad_value().

◆ get() [2/2]

template<class CharType , class BV , unsigned STR_SIZE>
str_sparse_vector< CharType, BV, STR_SIZE >::size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::get ( size_type  idx,
value_type str,
size_type  buf_size 
) const

get specified element

Parameters
idx- element index
str- string buffer
buf_size- string buffer size
Returns
string length
Examples
strsvsample02a.cpp, strsvsample05.cpp, and xsample05.cpp.

Definition at line 1776 of file bmstrsparsevec.h.

Referenced by check_sparse(), main(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::try_get().

◆ get_back_inserter()

template<typename CharType , typename BV , unsigned STR_SIZE>
back_insert_iterator bm::str_sparse_vector< CharType, BV, STR_SIZE >::get_back_inserter ( )
inline

Provide back insert iterator Back insert iterator implements buffered insertion, which is faster, than random access or push_back.

Examples
strsvsample02a.cpp, strsvsample03.cpp, strsvsample04.cpp, strsvsample05.cpp, strsvsample06.cpp, strsvsample07.cpp, and xsample05.cpp.

Definition at line 934 of file bmstrsparsevec.h.

Referenced by GenerateTestData(), and main().

◆ get_const_iterator()

template<typename CharType , typename BV , unsigned STR_SIZE>
const_iterator bm::str_sparse_vector< CharType, BV, STR_SIZE >::get_const_iterator ( size_type  idx) const
inline

Get const_itertor re-positioned to specific element.

Parameters
idx- position in the sparse vector

Definition at line 927 of file bmstrsparsevec.h.

◆ get_remap_buffer()

template<typename CharType , typename BV , unsigned STR_SIZE>
const unsigned char* bm::str_sparse_vector< CharType, BV, STR_SIZE >::get_remap_buffer ( ) const
inlineprotected

◆ get_remap_matrix() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
remap_matrix_type* bm::str_sparse_vector< CharType, BV, STR_SIZE >::get_remap_matrix ( )
inlineprotected

◆ get_remap_matrix() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
const remap_matrix_type* bm::str_sparse_vector< CharType, BV, STR_SIZE >::get_remap_matrix ( ) const
inlineprotected

◆ import()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename CharMatrix >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::import ( CharMatrix &  cmatr,
size_type  idx_from,
size_type  imp_size 
)
inline

Bulk import of strings from a C-style matrix of chars.

Parameters
cmatr- source matrix (bm::heap_matrix) [in/out] parameter gets modified(corrupted) in the process
idx_from- destination index in the sparse vector
imp_size- import size (number or rows to import)

Definition at line 1228 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear_range(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::import_no_check(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::size_.

◆ import_back()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename CharMatrix >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::import_back ( CharMatrix &  cmatr,
size_type  imp_size 
)
inline

Bulk push-back import of strings from a C-style matrix of chars.

Parameters
cmatr- source matrix (bm::heap_matrix) [in/out] parameter gets modified(corrupted) in the process
imp_size- import size (number or rows to import)

Definition at line 1249 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::import_no_check(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::size().

◆ import_char_slice()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<size_t BufSize = ins_buf_size>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::import_char_slice ( const unsigned_value_type ch_slice,
unsigned  ch_acc,
size_type  char_slice_idx,
size_type  idx_from,
size_type  imp_size 
)
inlineprotected

◆ import_no_check()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename CharMatrix , size_t BufSize = ins_buf_size>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::import_no_check ( CharMatrix &  cmatr,
size_type  idx_from,
size_type  imp_size,
bool  set_not_null = true 
)
inlineprotected

◆ init_remap_buffer()

template<typename CharType , typename BV , unsigned STR_SIZE>
unsigned char* bm::str_sparse_vector< CharType, BV, STR_SIZE >::init_remap_buffer ( )
inlineprotected

◆ insert() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename StrType >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert ( size_type  idx,
const StrType &  str 
)
inline

insert STL string

Parameters
idx- element index (vector auto-resized if needs to)
str- STL string to set

Definition at line 605 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert().

◆ insert() [2/2]

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert ( size_type  idx,
const value_type str 
)

insert the specified element

Parameters
idx- element index (vector auto-resized if needs to)
str- string to set (zero terminated)
Examples
strsvsample01.cpp, and strsvsample02.cpp.

Definition at line 1638 of file bmstrsparsevec.h.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert(), insertion_sort(), and main().

◆ insert_value()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert_value ( size_type  idx,
const value_type str 
)
protected

insert value without checking boundaries

Definition at line 1734 of file bmstrsparsevec.h.

◆ insert_value_no_null()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::insert_value_no_null ( size_type  idx,
const value_type str 
)
protected

insert value without checking boundaries or support of NULL

Definition at line 1744 of file bmstrsparsevec.h.

References BM_ASSERT.

◆ is_compressed()

template<typename CharType , typename BV , unsigned STR_SIZE>
static constexpr bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::is_compressed ( )
inlinestaticconstexpr

various type traits

Definition at line 948 of file bmstrsparsevec.h.

◆ is_remap()

template<typename CharType , typename BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::is_remap ( ) const
inline

Get character remapping status (true | false)

Definition at line 971 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl().

◆ is_ro()

template<typename CharType , typename BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::is_ro ( ) const
inline

Returns true if vector is read-only.

Examples
strsvsample03.cpp.

Definition at line 910 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::is_ro_.

Referenced by main().

◆ keep()

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::keep ( const bvector_type bv_idx)
inline

Set NULL all elements NOT set as 1 in the argument vector.

Parameters
bv_idx- index bit-vector for elements which needs to be kept

Definition at line 588 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::bit_and_rows().

◆ keep_range()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::keep_range ( size_type  left,
size_type  right,
bm::null_support  slice_null = bm::use_null 
)

Keep only specified interval in the sparse vector, clear all other elements.

Parameters
left- interval start
right- interval end (closed interval)
slice_null- "use_null" copy range for NULL vector or not

Definition at line 2382 of file bmstrsparsevec.h.

References bm::xor_swap().

◆ max_str()

template<typename CharType , typename BV , unsigned STR_SIZE>
static size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::max_str ( )
inlinestatic

get maximum string length capacity

Returns
maximum string length sparse vector can take

Definition at line 848 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::sv_octet_slices.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::const_iterator::set_substr().

◆ merge()

template<class CharType , class BV , unsigned STR_SIZE>
str_sparse_vector< CharType, BV, STR_SIZE > & bm::str_sparse_vector< CharType, BV, STR_SIZE >::merge ( str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv)

merge with another sparse vector using OR operation Merge is different from join(), because it borrows data from the source vector, so it gets modified (destructive join)

Parameters
tr_sv- [in, out]argument vector to join with (vector mutates)
Returns
self reference

Definition at line 2350 of file bmstrsparsevec.h.

References bm::base_sparse_vector< Val, BV, MAX_SIZE >::bmatr_, bm::base_sparse_vector< Val, BV, MAX_SIZE >::is_nullable(), bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix1_, bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix2_, and bm::str_sparse_vector< CharType, BV, STR_SIZE >::size().

◆ operator=() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
str_sparse_vector<CharType, BV, STR_SIZE>& bm::str_sparse_vector< CharType, BV, STR_SIZE >::operator= ( const str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv)
inline

◆ operator=() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
str_sparse_vector<CharType, BV, STR_SIZE>& bm::str_sparse_vector< CharType, BV, STR_SIZE >::operator= ( str_sparse_vector< CharType, BV, STR_SIZE > &&  str_sv)
inline

move assignmment operator

Definition at line 532 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::swap().

◆ operator[]() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
reference bm::str_sparse_vector< CharType, BV, STR_SIZE >::operator[] ( size_type  idx)
inline

Operator to get write access to an element

Definition at line 552 of file bmstrsparsevec.h.

◆ operator[]() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
const const_reference bm::str_sparse_vector< CharType, BV, STR_SIZE >::operator[] ( size_type  idx) const
inline

Operator to get read access to an element

Definition at line 548 of file bmstrsparsevec.h.

◆ optimize()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::optimize ( bm::word_t temp_block = 0,
typename bvector_type::optmode  opt_mode = bvector_type::opt_compress,
typename str_sparse_vector< CharType, BV, STR_SIZE >::statistics stat = 0 
)

run memory optimization for all vector planes

Parameters
temp_block- pre-allocated memory block to avoid unnecessary re-allocs
opt_mode- requested compression depth
stat- memory allocation statistics after optimization
Examples
strsvsample01.cpp, strsvsample02.cpp, strsvsample02a.cpp, strsvsample03.cpp, strsvsample04.cpp, strsvsample05.cpp, strsvsample06.cpp, and xsample05.cpp.

Definition at line 1797 of file bmstrsparsevec.h.

References bm::bv_statistics::add().

Referenced by main().

◆ push_back() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename StrType >
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back ( const StrType &  str)
inline

push back a string

Parameters
str- string to set (STL class with size() support, like basic_string)
Examples
strsvsample01.cpp, and strsvsample04.cpp.

Definition at line 675 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::assign(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::size_.

Referenced by main().

◆ push_back() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back ( const value_type str)
inline

push back a string (zero terminated)

Parameters
str- string to set

Definition at line 681 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::set(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::size_.

◆ push_back_null() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back_null ( )
inline

◆ push_back_null() [2/2]

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back_null ( size_type  count)

push back specified amount of NULL values

Parameters
count- number of NULLs to push back
Examples
strsvsample01.cpp.

Definition at line 1676 of file bmstrsparsevec.h.

References BM_ASSERT, and bm::id_max.

Referenced by main().

◆ recalc_remap_matrix2()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::recalc_remap_matrix2

re-calculate remap matrix2 based on matrix1

Definition at line 2084 of file bmstrsparsevec.h.

References BM_ASSERT.

◆ remap() [1/2]

template<class CharType , class BV , unsigned MAX_STR_SIZE>
void bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::remap

Build remapping profile and re-load content to save memory.

Examples
strsvsample02a.cpp.

Definition at line 2167 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::swap().

Referenced by main().

◆ remap() [2/2]

template<class CharType , class BV , unsigned MAX_STR_SIZE>
void bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::remap ( back_insert_iterator iit)
protected

◆ remap_from()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from ( const str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv,
octet_freq_matrix_type omatrix = 0 
)

Build remapping profile and load content from another sparse vector Remapped vector likely saves memory (both RAM and disk) but should not be modified (should be read-only).

Parameters
str_sv- source sparse vector (assumed it is not remapped)
omatrix- pointer to externall computed char freaquency matrix (optional) \so remap, freeze
Examples
strsvsample03.cpp, strsvsample05.cpp, and xsample05.cpp.

Definition at line 2196 of file bmstrsparsevec.h.

Referenced by main().

◆ remap_from_impl()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_from_impl ( const str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv,
octet_freq_matrix_type omatrix,
bool  move_data 
)
protected

◆ remap_fromsv()

template<class CharType , class BV , unsigned MAX_STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, MAX_STR_SIZE >::remap_fromsv ( value_type *BMRESTRICT  str,
size_type  buf_size,
const value_type *BMRESTRICT  sv_str,
const slice_octet_matrix_type &BMRESTRICT  octet_remap_matrix1 
)
static

remap string from internal code to external (ASCII) system

Returns
true if remapping was ok, false if found incorrect value for the plane

Definition at line 2140 of file bmstrsparsevec.h.

◆ remap_size()

template<typename CharType , typename BV , unsigned STR_SIZE>
size_t bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_size ( ) const
inlineprotected

◆ remap_tosv() [1/2]

template<class CharType , class BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_tosv ( value_type *BMRESTRICT  sv_str,
size_type  buf_size,
const value_type *BMRESTRICT  str,
const slice_octet_matrix_type &BMRESTRICT  octet_remap_matrix2 
)
static

remap string from external (ASCII) system to matrix internal code

Returns
true if remapping was ok, false if found incorrect value for the plane

Definition at line 2114 of file bmstrsparsevec.h.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_tosv().

◆ remap_tosv() [2/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_tosv ( value_type sv_str,
size_type  buf_size,
const value_type str 
) const
inline

remap string from external (ASCII) system to matrix internal code

Definition at line 1021 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix2_, and bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_tosv().

◆ resize()

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::resize ( size_type  sz)
inline

◆ resize_internal()

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::resize_internal ( size_type  sz)
inlineprotected

◆ set()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set ( size_type  idx,
const value_type str 
)

set specified element with bounds checking and automatic resize

Parameters
idx- element index (vector auto-resized if needs to)
str- string to set (zero terminated)
Examples
strsvsample01.cpp, strsvsample04.cpp, and strsvsample06.cpp.

Definition at line 1627 of file bmstrsparsevec.h.

Referenced by main(), and bm::str_sparse_vector< CharType, BV, STR_SIZE >::push_back().

◆ set_null() [1/2]

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_null ( const bvector_type bv_idx)
inline

Set NULL all elements set as 1 in the argument vector.

Parameters
bv_idx- index bit-vector for elements which needs to be turned to NULL

Definition at line 572 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::bit_sub_rows().

◆ set_null() [2/2]

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_null ( size_type  idx)

set NULL status for the specified element Vector is resized automatically

Parameters
idx- element index (vector auto-resized if needs to)
Examples
strsvsample04.cpp.

Definition at line 1666 of file bmstrsparsevec.h.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::clear_range(), and main().

◆ set_remap()

template<typename CharType , typename BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_remap ( )
inlineprotected

◆ set_value()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_value ( size_type  idx,
const value_type str 
)
protected

set value without checking boundaries

Definition at line 1688 of file bmstrsparsevec.h.

◆ set_value_no_null()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::set_value_no_null ( size_type  idx,
const value_type str 
)
protected

set value without checking boundaries or support of NULL

Definition at line 1699 of file bmstrsparsevec.h.

References BM_ASSERT.

◆ size()

template<typename CharType , typename BV , unsigned STR_SIZE>
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::size ( ) const
inline

◆ size_internal()

template<typename CharType , typename BV , unsigned STR_SIZE>
size_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::size_internal ( ) const
inlineprotected

◆ swap()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::swap ( str_sparse_vector< CharType, BV, STR_SIZE > &  str_sv)

◆ sync()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::sync ( bool  force)

syncronize internal structures

Definition at line 2290 of file bmstrsparsevec.h.

◆ sync_size()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::sync_size

recalculate size to exclude tail NULL elements After this call size() will return the true size of the vector

Definition at line 2836 of file bmstrsparsevec.h.

References bm::base_sparse_vector< CharType, BV, STR_SIZE >::get_null_bvector(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::size_.

◆ throw_bad_value()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::throw_bad_value ( const char *  err_msg)
staticprotected

throw domain error

Definition at line 2427 of file bmstrsparsevec.h.

References BM_ASSERT_THROW.

Referenced by bm::str_sparse_vector< CharType, BV, STR_SIZE >::get().

◆ throw_range_error()

template<class CharType , class BV , unsigned STR_SIZE>
void bm::str_sparse_vector< CharType, BV, STR_SIZE >::throw_range_error ( const char *  err_msg)
staticprotected

throw range error

Definition at line 2414 of file bmstrsparsevec.h.

References BM_ASSERT_THROW.

◆ try_get()

template<typename CharType , typename BV , unsigned STR_SIZE>
template<typename StrType >
bool bm::str_sparse_vector< CharType, BV, STR_SIZE >::try_get ( size_type  idx,
StrType &  str 
) const
inline

get specified string element if NOT NULL Template method expects an STL-compatible type basic_string<>

Parameters
idx- element index (vector auto-resized if needs to)
str- string to get [out]
Returns
true if element is not null and try-get successfull
Examples
strsvsample01.cpp.

Definition at line 702 of file bmstrsparsevec.h.

References bm::str_sparse_vector< CharType, BV, STR_SIZE >::get(), and bm::base_sparse_vector< CharType, BV, STR_SIZE >::is_null().

Referenced by main().

Field Documentation

◆ remap_flags_

template<typename CharType , typename BV , unsigned STR_SIZE>
unsigned bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_flags_
protected

◆ remap_matrix1_

template<typename CharType , typename BV , unsigned STR_SIZE>
slice_octet_matrix_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix1_
protected

◆ remap_matrix2_

template<typename CharType , typename BV , unsigned STR_SIZE>
slice_octet_matrix_type bm::str_sparse_vector< CharType, BV, STR_SIZE >::remap_matrix2_
protected

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