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_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).
BMFORCEINLINE void get_block_coord(BI_TYPE nb, unsigned &i, unsigned &j) BMNOEXCEPT
Recalc linear bvector block index into 2D matrix coordinates.