1#ifndef BMBVIMPORT__H__INCLUDED__
2#define BMBVIMPORT__H__INCLUDED__
24#ifndef BM__H__INCLUDED__
27# error missing include (bm.h or bm64.h)
48 typename BV::size_type bit_arr_size,
57 using block_idx_type =
typename BV::block_idx_type;
64 typename BV::blocks_manager_type& bman = bv.get_blocks_manager();
65 bman.reserve_top_blocks(top_blocks);
67 for (
unsigned i = 0; i < top_blocks; ++i)
68 bman.check_alloc_top_subblock(i);
70 typename BV::block_idx_type nb = 0;
71 for (; nb < total_blocks; ++nb)
74 bman.set_block(nb, block);
75 const unsigned int*
BMRESTRICT bit_arr_block_ptr =
82 bman.optimize_bit_block(i0, j0, BV::opt_compress);
89 if (tail_idx < bit_arr_size)
93 bman.set_block(nb, block);
96 while (i < bit_arr_size)
97 block[k++] = bit_arr[i++];
104 bman.optimize_bit_block(i0, j0, BV::opt_compress);
108 bman.free_temp_block();
void bit_block_copy_unalign(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src) BMNOEXCEPT
Bitblock copy operation (unaligned src)
void bit_import_u32(BV &bv, const unsigned int *BMRESTRICT bit_arr, typename BV::size_type bit_arr_size, bool optimize)
Import native stream of bits (represented as 32-bit unsigned ints)
const unsigned set_sub_array_size
BMFORCEINLINE void get_block_coord(BI_TYPE nb, unsigned &i, unsigned &j) BMNOEXCEPT
Recalc linear bvector block index into 2D matrix coordinates.
const unsigned set_block_size
bm::bvector ::size_type bv_size_type