1 #ifndef ALGO_BV_MERGE_HPP_
2 #define ALGO_BV_MERGE_HPP_
46 template<
class BV = bm::bvector<> >
84 m_BlobStack.push_back(
buffer);
95 if (m_BlobStack.size() == 1) {
97 m_BlobStack.resize(0);
104 const unsigned char*
buffer = &((*buf)[0]);
106 m_BufResourcePool->Put(
buf);
108 m_BlobStack.resize(0);
111 typename TBitVector::statistics st1;
112 m_TmpBv.optimize(0, TBitVector::opt_compress, &st1);
117 if (st1.max_serialize_mem > sbuf->
size()) {
118 sbuf->
resize(st1.max_serialize_mem);
134 m_BufResourcePool->Put(
buf);
136 m_BlobStack.resize(0);
Serialization / compression of bvector<>. Set theoretical operations on compressed BLOBs.
Implementation of merger interface for bitsets.
bm::word_t * m_TmpBvBlock
deserialization temp block
vector< CMergeVolumes::TRawBuffer * > TRawBufferStack
virtual ~CMergeBitsetBlob()
virtual void Reset()
Reset merging, forget all the accumulated buffers.
virtual void Merge(CMergeVolumes::TRawBuffer *buffer)
Merge request Implementation MUST return the buffer to the pool.
virtual CMergeVolumes::TRawBuffer * GetMergeBuffer()
Returns destination (merged) buffer Caller MUST return the buffer to the buffer pool.
TRawBufferStack m_BlobStack
blocks to merge
TBitVector m_TmpBv
temp bit-vector
Reallocable memory buffer (no memory copy overhead) Mimics vector<>, without the overhead of explicit...
void resize(size_type new_size)
BLOB merge interface, merges one or more BLOBs together.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
Pool::TValue * Release()
Return the pointer to the caller, not to the pool.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
size_t serialize(const BV &bv, unsigned char *buf, bm::word_t *temp_block=0, unsigned serialization_flags=0)
Saves bitvector into memory.
size_t deserialize(BV &bv, const unsigned char *buf, bm::word_t *temp_block=0, const bm::bv_ref_vector< BV > *ref_vect=0)
Bitvector deserialization from a memory BLOB.
@ BM_NO_GAP_LENGTH
save no GAP info (save some space)
@ BM_NO_BYTE_ORDER
save no byte-order info (save some space)
void aligned_free(void *ptr) BMNOEXCEPT
Aligned free.
void * aligned_new_malloc(size_t size)
Aligned malloc (unlike classic malloc it throws bad_alloc exception)
const unsigned set_block_alloc_size
const struct ncbi::grid::netcache::search::fields::SIZE size
Compressed bitset (entry point to bm.h)