BitMagic-C++: bm::aggregator< BV > Class Template Reference

BitMagic-C++

Data Structures | Public Types | Data Fields
bm::aggregator< BV > Class Template Reference
BitMagic Library » bvector<> container » bvector<> algorithms

Algorithms for fast aggregation of a group of bit-vectors. More...

`#include <bmaggregator.h>`

Inheritance diagram for bm::aggregator< BV >:
[legend]

## Public Types
enum | max_size { max_aggregator_cap = 512 }
| Maximum aggregation capacity in one pass. More...
enum | operation { BM_NOT_DEFINED = 0, BM_SHIFT_R_AND = 1 }
| Codes for aggregation operations which can be pipelined for efficient execution. More...
enum | operation_status { op_undefined = 0, op_prepared, op_in_progress, op_done }
typedef BV | bvector_type
typedef BV::size_type | size_type
typedef bm::id64_t | digest_type
typedef bvector_type::allocator_type::allocator_pool_type | allocator_pool_type

## Public Member Functions
Construction and setup
| aggregator ()
| ~aggregator ()
void | set_optimization (typename bvector_type::optmode opt=bvector_type::opt_compress)
| set on-the-fly bit-block compression By default aggregator does not try to optimize result, but in some cases it can be quite a lot faster than calling bvector<>::optimize() later (because block data sits in CPU cache). More...
Methods to setup argument groups and run operations on groups
unsigned | add (const bvector_type *bv, unsigned agr_group=0) BMNOEXCEPT
| Attach source bit-vector to a argument group (0 or 1). More...
void | reset () BMNOEXCEPT
| Reset aggregate groups, forget all attached vectors. More...
void | combine_or (bvector_type &bv_target)
| Aggregate added group of vectors using logical OR Operation does NOT perform an explicit reset of arg group(s) More...
void | combine_and (bvector_type &bv_target)
| Aggregate added group of vectors using logical AND Operation does NOT perform an explicit reset of arg group(s) More...
bool | combine_and_sub (bvector_type &bv_target)
| Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) More...
bool | combine_and_sub (bvector_type &bv_target, bool any)
| Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) Operation can terminate early if anything was found. More...
bool | find_first_and_sub (size_type &idx)
void | combine_shift_right_and (bvector_type &bv_target)
| Aggregate added group of vectors using SHIFT-RIGHT and logical AND Operation does NOT perform an explicit reset of arg group(s) More...
void | set_range_hint (size_type from, size_type to) BMNOEXCEPT
| Set search hint for the range, where results needs to be searched (experimental for internal use). More...
Logical operations (C-style interface)
void | combine_or (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
| Aggregate group of vectors using logical OR. More...
void | combine_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
| Aggregate group of vectors using logical AND. More...
bool | combine_and_sub (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, unsigned src_and_size, const bvector_type_const_ptr *bv_src_sub, unsigned src_sub_size, bool any)
| Fusion aggregate group of vectors using logical AND MINUS another set. More...
bool | find_first_and_sub (size_type &idx, const bvector_type_const_ptr *bv_src_and, unsigned src_and_size, const bvector_type_const_ptr *bv_src_sub, unsigned src_sub_size)
bool | combine_shift_right_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, unsigned src_and_size, bool any)
| Fusion aggregate group of vectors using SHIFT right with AND. More...
Horizontal Logical operations used for tests (C-style interface)
void | combine_or_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
| Horizontal OR aggregation (potentially slower) method. More...
void | combine_and_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
| Horizontal AND aggregation (potentially slower) method. More...
void | combine_and_sub_horizontal (bvector_type &bv_target, const bvector_type_const_ptr *bv_src_and, unsigned src_and_size, const bvector_type_const_ptr *bv_src_sub, unsigned src_sub_size)
| Horizontal AND-SUB aggregation (potentially slower) method. More...

## Data Fields
const typedef bvector_type * | bvector_type_const_ptr

## Pipeline operations
typedef bvector_type::blocks_manager_type | blocks_manager_type
typedef BV::block_idx_type | block_idx_type
int | get_operation () const BMNOEXCEPT
| Get current operation code. More...
void | set_operation (int op_code) BMNOEXCEPT
| Set operation code for the aggregator. More...
void | stage (bm::word_t *temp_block)
| Prepare operation, create internal resources, analyse dependencies. More...
operation_status | run_step (unsigned i, unsigned j)
| Run a step of current arrgegation operation. More...
operation_status | get_operation_status () const
const bvector_type * | get_target () const
bm::word_t * | get_temp_block ()
void | combine_or (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
void | combine_and (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
digest_type | combine_and_sub (unsigned i, unsigned j, const bvector_type_const_ptr *bv_src_and, unsigned src_and_size, const bvector_type_const_ptr *bv_src_sub, unsigned src_sub_size, int *is_result_full)
void | prepare_shift_right_and (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
bool | combine_shift_right_and (unsigned i, unsigned j, bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size)
bm::word_t * | sort_input_blocks_or (const bvector_type_const_ptr *bv_src, unsigned src_size, unsigned i, unsigned j, unsigned *arg_blk_count, unsigned *arg_blk_gap_count) BMNOEXCEPT
bm::word_t * | sort_input_blocks_and (const bvector_type_const_ptr *bv_src, unsigned src_size, unsigned i, unsigned j, unsigned *arg_blk_count, unsigned *arg_blk_gap_count) BMNOEXCEPT
bool | process_bit_blocks_or (blocks_manager_type &bman_target, unsigned i, unsigned j, unsigned block_count)
void | process_gap_blocks_or (unsigned block_count)
digest_type | process_bit_blocks_and (unsigned block_count, digest_type digest)
digest_type | process_gap_blocks_and (unsigned block_count, digest_type digest)
bool | test_gap_blocks_and (unsigned block_count, unsigned bit_idx)
bool | test_gap_blocks_sub (unsigned block_count, unsigned bit_idx)
digest_type | process_bit_blocks_sub (unsigned block_count, digest_type digest)
digest_type | process_gap_blocks_sub (unsigned block_count, digest_type digest)
bvector_type * | check_create_target ()
static unsigned | resize_target (bvector_type &bv_target, const bvector_type_const_ptr *bv_src, unsigned src_size, bool init_clear=true)
static unsigned | max_top_blocks (const bvector_type_const_ptr *bv_src, unsigned src_size) BMNOEXCEPT
static unsigned | find_effective_sub_block_size (unsigned i, const bvector_type_const_ptr *bv_src, unsigned src_size, bool top_null_as_zero) BMNOEXCEPT
static bool | any_carry_overs (const unsigned char *carry_overs, unsigned co_size) BMNOEXCEPT
static unsigned | process_shift_right_and (bm::word_t *BMRESTRICT blk, const bm::word_t *BMRESTRICT arg_blk, digest_type &BMRESTRICT digest, unsigned carry_over) BMNOEXCEPT
static const bm::word_t * | get_arg_block (const bvector_type_const_ptr *bv_src, unsigned k, unsigned i, unsigned j) BMNOEXCEPT

## Detailed Description

### template<typename BV>
class bm::aggregator< BV >

Algorithms for fast aggregation of a group of bit-vectors.

Current implementation can aggregate up to max_aggregator_cap vectors (TODO: remove this limitation)

Algorithms of this class use cache locality optimizations and efficient on cases, wehen we need to apply the same logical operation (aggregate) more than 2x vectors.

TARGET = BV1 or BV2 or BV3 or BV4 ...

Examples
  bvsetalgebra.cpp, sample16.cpp, and xsample04.cpp.

Definition at line 58 of file bmaggregator.h.

## Member Typedef Documentation

## ◆ allocator_pool_type

template<typename BV >

typedef bvector_type::allocator_type::allocator_pool_type bm::aggregator< BV >::allocator_pool_type

Definition at line 66 of file bmaggregator.h.

## ◆ block_idx_type

template<typename BV >

typedef BV::block_idx_type bm::aggregator< BV >::block_idx_type
| protected

Definition at line 334 of file bmaggregator.h.

## ◆ blocks_manager_type

template<typename BV >

typedef bvector_type::blocks_manager_type bm::aggregator< BV >::blocks_manager_type
| protected

Definition at line 333 of file bmaggregator.h.

## ◆ bvector_type

template<typename BV >

typedef BV bm::aggregator< BV >::bvector_type

Definition at line 61 of file bmaggregator.h.

## ◆ digest_type

template<typename BV >

typedef bm::id64_t bm::aggregator< BV >::digest_type

Definition at line 64 of file bmaggregator.h.

## ◆ size_type

template<typename BV >

typedef BV::size_type bm::aggregator< BV >::size_type

Definition at line 62 of file bmaggregator.h.

## Member Enumeration Documentation

## ◆ max_size

template<typename BV >

enum bm::aggregator::max_size

Maximum aggregation capacity in one pass.

Enumerator
max_aggregator_cap |

Definition at line 69 of file bmaggregator.h.

## ◆ operation

template<typename BV >

enum bm::aggregator::operation

Codes for aggregation operations which can be pipelined for efficient execution.

Enumerator
BM_NOT_DEFINED |
BM_SHIFT_R_AND |

Definition at line 76 of file bmaggregator.h.

## ◆ operation_status

template<typename BV >

enum bm::aggregator::operation_status

Enumerator
op_undefined |
op_prepared |
op_in_progress |
op_done |

Definition at line 82 of file bmaggregator.h.

## Constructor & Destructor Documentation

## ◆ aggregator()

template<typename BV >

bm::aggregator< BV >::aggregator

Definition at line 523 of file bmaggregator.h.

## ◆ ~aggregator()

template<typename BV >

bm::aggregator< BV >::~aggregator

Definition at line 532 of file bmaggregator.h.

## Member Function Documentation

## ◆ add()

template<typename BV >

unsigned bm::aggregator< BV >::add | ( | const bvector_type * | bv,
|  | unsigned | agr_group = `0`
| ) |  |

Attach source bit-vector to a argument group (0 or 1).

Arg group 1 used for fused operations like (AND-SUB)

Parameters

  bv | - input bit-vector pointer to attach
  agr_group | - input argument group (0 - default, 1 - fused op)

Returns
  current arg group size (0 if vector was not added (empty))

See also
  reset

Definition at line 576 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_SUB(), DemoOR(), DemoSUB(), and main().

## ◆ any_carry_overs()

template<typename BV >

bool bm::aggregator< BV >::any_carry_overs | ( | const unsigned char * | carry_overs,
|  | unsigned | co_size
| ) |  |
| staticprotected

Definition at line 1856 of file bmaggregator.h.

## ◆ check_create_target()

template<typename BV >

aggregator< BV >::bvector_type * bm::aggregator< BV >::check_create_target
| protected

Definition at line 563 of file bmaggregator.h.

## ◆ combine_and() [1/3]

template<typename BV >

void bm::aggregator< BV >::combine_and | ( | bvector_type & | bv_target | ) |

Aggregate added group of vectors using logical AND Operation does NOT perform an explicit reset of arg group(s)

Parameters

  bv_target | - target vector (input is arg group 0)

See also
  add, reset

Definition at line 617 of file bmaggregator.h.

Referenced by DemoAND(), and main().

## ◆ combine_and() [2/3]

template<typename BV >

void bm::aggregator< BV >::combine_and | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |

Aggregate group of vectors using logical AND.

Parameters

  bv_target | - target vector
  bv_src | - array of pointers on bit-vector aggregate arguments
  src_size | - size of bv_src (how many vectors to aggregate)

Definition at line 687 of file bmaggregator.h.

## ◆ combine_and() [3/3]

template<typename BV >

void bm::aggregator< BV >::combine_and | ( | unsigned | i,
|  | unsigned | j,
|  | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |
| protected

Definition at line 997 of file bmaggregator.h.

## ◆ combine_and_horizontal()

template<typename BV >

void bm::aggregator< BV >::combine_and_horizontal | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |

Horizontal AND aggregation (potentially slower) method.

Parameters

  bv_target | - target vector
  bv_src | - array of pointers on bit-vector aggregate arguments
  src_size | - size of bv_src (how many vectors to aggregate)

Definition at line 1618 of file bmaggregator.h.

## ◆ combine_and_sub() [1/4]

template<typename BV >

bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target | ) |

Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s)

Parameters

  bv_target | - target vector (input is arg group 0(AND), 1(SUB) )

Returns
  true if anything was found

See also
  add, reset

Definition at line 625 of file bmaggregator.h.

Referenced by DemoAND_SUB(), DemoSUB(), and main().

## ◆ combine_and_sub() [2/4]

template<typename BV >

bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target,
|  | bool | any
| ) |  |

Aggregate added group of vectors using fused logical AND-SUB Operation does NOT perform an explicit reset of arg group(s) Operation can terminate early if anything was found.

Parameters

  bv_target | - target vector (input is arg group 0(AND), 1(SUB) )
  any | - if true, search result will terminate of first found result

Returns
  true if anything was found

See also
  add, reset

Definition at line 635 of file bmaggregator.h.

## ◆ combine_and_sub() [3/4]

template<typename BV >

bool bm::aggregator< BV >::combine_and_sub | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src_and,
|  | unsigned | src_and_size,
|  | const bvector_type_const_ptr * | bv_src_sub,
|  | unsigned | src_sub_size,
|  | bool | any
| ) |  |

Fusion aggregate group of vectors using logical AND MINUS another set.

Parameters

  bv_target | - target vector
  bv_src_and | - array of pointers on bit-vectors for AND
  src_and_size | - size of AND group
  bv_src_sub | - array of pointers on bit-vectors for SUBstract
  src_sub_size | - size of SUB group
  any | - flag if caller needs any results asap (incomplete results)

Returns
  true when found

Definition at line 720 of file bmaggregator.h.

## ◆ combine_and_sub() [4/4]

template<typename BV >

aggregator< BV >::digest_type bm::aggregator< BV >::combine_and_sub | ( | unsigned | i,
|  | unsigned | j,
|  | const bvector_type_const_ptr * | bv_src_and,
|  | unsigned | src_and_size,
|  | const bvector_type_const_ptr * | bv_src_sub,
|  | unsigned | src_sub_size,
|  | int * | is_result_full
| ) |  |
| protected

Definition at line 1056 of file bmaggregator.h.

## ◆ combine_and_sub_horizontal()

template<typename BV >

void bm::aggregator< BV >::combine_and_sub_horizontal | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src_and,
|  | unsigned | src_and_size,
|  | const bvector_type_const_ptr * | bv_src_sub,
|  | unsigned | src_sub_size
| ) |  |

Horizontal AND-SUB aggregation (potentially slower) method.

Parameters

  bv_target | - target vector
  bv_src_and | - array of pointers on bit-vector to AND aggregate
  src_and_size | - size of bv_src_and
  bv_src_sub | - array of pointers on bit-vector to SUB aggregate
  src_sub_size | - size of bv_src_sub

Definition at line 1642 of file bmaggregator.h.

## ◆ combine_or() [1/3]

template<typename BV >

void bm::aggregator< BV >::combine_or | ( | bvector_type & | bv_target | ) |

Aggregate added group of vectors using logical OR Operation does NOT perform an explicit reset of arg group(s)

Parameters

  bv_target | - target vector (input is arg group 0)

See also
  add, reset

Definition at line 609 of file bmaggregator.h.

Referenced by DemoOR(), and main().

## ◆ combine_or() [2/3]

template<typename BV >

void bm::aggregator< BV >::combine_or | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |

Aggregate group of vectors using logical OR.

Parameters

  bv_target | - target vector
  bv_src | - array of pointers on bit-vector aggregate arguments
  src_size | - size of bv_src (how many vectors to aggregate)

Definition at line 663 of file bmaggregator.h.

## ◆ combine_or() [3/3]

template<typename BV >

void bm::aggregator< BV >::combine_or | ( | unsigned | i,
|  | unsigned | j,
|  | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |
| protected

Definition at line 949 of file bmaggregator.h.

## ◆ combine_or_horizontal()

template<typename BV >

void bm::aggregator< BV >::combine_or_horizontal | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |

Horizontal OR aggregation (potentially slower) method.

Parameters

  bv_target | - target vector
  bv_src | - array of pointers on bit-vector aggregate arguments
  src_size | - size of bv_src (how many vectors to aggregate)

Definition at line 1594 of file bmaggregator.h.

## ◆ combine_shift_right_and() [1/3]

template<typename BV >

void bm::aggregator< BV >::combine_shift_right_and | ( | bvector_type & | bv_target | ) |

Aggregate added group of vectors using SHIFT-RIGHT and logical AND Operation does NOT perform an explicit reset of arg group(s)

Parameters

  bv_target | - target vector (input is arg group 0)

Returns
  bool if anything was found

See also
  add, reset

Definition at line 655 of file bmaggregator.h.

## ◆ combine_shift_right_and() [2/3]

template<typename BV >

bool bm::aggregator< BV >::combine_shift_right_and | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src_and,
|  | unsigned | src_and_size,
|  | bool | any
| ) |  |

Fusion aggregate group of vectors using SHIFT right with AND.

Parameters

  bv_target | - target vector
  bv_src_and | - array of pointers on bit-vectors for AND masking
  src_and_size | - size of AND group
  any | - flag if caller needs any results asap (incomplete results)

Returns
  true when found

Definition at line 1677 of file bmaggregator.h.

## ◆ combine_shift_right_and() [3/3]

template<typename BV >

bool bm::aggregator< BV >::combine_shift_right_and | ( | unsigned | i,
|  | unsigned | j,
|  | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |
| protected

Definition at line 1715 of file bmaggregator.h.

## ◆ find_effective_sub_block_size()

template<typename BV >

unsigned bm::aggregator< BV >::find_effective_sub_block_size | ( | unsigned | i,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size,
|  | bool | top_null_as_zero
| ) |  |
| staticprotected

Definition at line 901 of file bmaggregator.h.

## ◆ find_first_and_sub() [1/2]

template<typename BV >

bool bm::aggregator< BV >::find_first_and_sub | ( | size_type & | idx | ) |

Definition at line 645 of file bmaggregator.h.

## ◆ find_first_and_sub() [2/2]

template<typename BV >

bool bm::aggregator< BV >::find_first_and_sub | ( | size_type & | idx,
|  | const bvector_type_const_ptr * | bv_src_and,
|  | unsigned | src_and_size,
|  | const bvector_type_const_ptr * | bv_src_sub,
|  | unsigned | src_sub_size
| ) |  |

Definition at line 794 of file bmaggregator.h.

## ◆ get_arg_block()

template<typename BV >

const bm::word_t * bm::aggregator< BV >::get_arg_block | ( | const bvector_type_const_ptr * | bv_src,
|  | unsigned | k,
|  | unsigned | i,
|  | unsigned | j
| ) |  |
| staticprotected

Definition at line 1846 of file bmaggregator.h.

## ◆ get_operation()

template<typename BV >

int bm::aggregator< BV >::get_operation | ( |  | ) | const
| inline

Get current operation code.

Definition at line 308 of file bmaggregator.h.

## ◆ get_operation_status()

template<typename BV >

operation_status bm::aggregator< BV >::get_operation_status | ( |  | ) | const
| inline

Definition at line 324 of file bmaggregator.h.

## ◆ get_target()

template<typename BV >

const bvector_type* bm::aggregator< BV >::get_target | ( |  | ) | const
| inline

Definition at line 326 of file bmaggregator.h.

Referenced by DNA_FingerprintScanner::FindCollection().

## ◆ get_temp_block()

template<typename BV >

bm::word_t* bm::aggregator< BV >::get_temp_block | ( |  | ) |
| inline

Definition at line 328 of file bmaggregator.h.

## ◆ max_top_blocks()

template<typename BV >

unsigned bm::aggregator< BV >::max_top_blocks | ( | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |
| staticprotected

Definition at line 1479 of file bmaggregator.h.

## ◆ prepare_shift_right_and()

template<typename BV >

void bm::aggregator< BV >::prepare_shift_right_and | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size
| ) |  |
| protected

Definition at line 1663 of file bmaggregator.h.

## ◆ process_bit_blocks_and()

template<typename BV >

aggregator< BV >::digest_type bm::aggregator< BV >::process_bit_blocks_and | ( | unsigned | block_count,
|  | digest_type | digest
| ) |  |
| protected

Definition at line 1307 of file bmaggregator.h.

## ◆ process_bit_blocks_or()

template<typename BV >

bool bm::aggregator< BV >::process_bit_blocks_or | ( | blocks_manager_type & | bman_target,
|  | unsigned | i,
|  | unsigned | j,
|  | unsigned | block_count
| ) |  |
| protected

Definition at line 1238 of file bmaggregator.h.

## ◆ process_bit_blocks_sub()

template<typename BV >

aggregator< BV >::digest_type bm::aggregator< BV >::process_bit_blocks_sub | ( | unsigned | block_count,
|  | digest_type | digest
| ) |  |
| protected

Definition at line 1391 of file bmaggregator.h.

## ◆ process_gap_blocks_and()

template<typename BV >

aggregator< BV >::digest_type bm::aggregator< BV >::process_gap_blocks_and | ( | unsigned | block_count,
|  | digest_type | digest
| ) |  |
| protected

Definition at line 1139 of file bmaggregator.h.

## ◆ process_gap_blocks_or()

template<typename BV >

void bm::aggregator< BV >::process_gap_blocks_or | ( | unsigned | block_count | ) |
| protected

Definition at line 1128 of file bmaggregator.h.

## ◆ process_gap_blocks_sub()

template<typename BV >

aggregator< BV >::digest_type bm::aggregator< BV >::process_gap_blocks_sub | ( | unsigned | block_count,
|  | digest_type | digest
| ) |  |
| protected

Definition at line 1173 of file bmaggregator.h.

## ◆ process_shift_right_and()

template<typename BV >

unsigned bm::aggregator< BV >::process_shift_right_and | ( | bm::word_t *BMRESTRICT | blk,
|  | const bm::word_t *BMRESTRICT | arg_blk,
|  | digest_type &BMRESTRICT | digest,
|  | unsigned | carry_over
| ) |  |
| staticprotected

Returns
  carry over

Definition at line 1785 of file bmaggregator.h.

## ◆ reset()

template<typename BV >

void bm::aggregator< BV >::reset

Reset aggregate groups, forget all attached vectors.

Definition at line 542 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_SUB(), DemoOR(), DemoSUB(), and main().

## ◆ resize_target()

template<typename BV >

unsigned bm::aggregator< BV >::resize_target | ( | bvector_type & | bv_target,
|  | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size,
|  | bool | init_clear = `true`
| ) |  |
| staticprotected

Definition at line 1430 of file bmaggregator.h.

## ◆ run_step()

template<typename BV >

aggregator< BV >::operation_status bm::aggregator< BV >::run_step | ( | unsigned | i,
|  | unsigned | j
| ) |  |

Run a step of current arrgegation operation.

Definition at line 1896 of file bmaggregator.h.

## ◆ set_operation()

template<typename BV >

void bm::aggregator< BV >::set_operation | ( | int | op_code | ) |
| inline

Set operation code for the aggregator.

Definition at line 311 of file bmaggregator.h.

## ◆ set_optimization()

template<typename BV >

void bm::aggregator< BV >::set_optimization | ( | typename bvector_type::optmode | opt = `bvector_type::opt_compress` | ) |
| inline

set on-the-fly bit-block compression By default aggregator does not try to optimize result, but in some cases it can be quite a lot faster than calling bvector<>::optimize() later (because block data sits in CPU cache).

Parameters

  opt | - optimization mode (full compression by default)

Definition at line 105 of file bmaggregator.h.

Referenced by DemoAND(), DemoAND_SUB(), DemoOR(), and DemoSUB().

## ◆ set_range_hint()

template<typename BV >

void bm::aggregator< BV >::set_range_hint | ( | size_type | from,
|  | size_type | to
| ) |  |

Set search hint for the range, where results needs to be searched (experimental for internal use).

Definition at line 553 of file bmaggregator.h.

## ◆ sort_input_blocks_and()

template<typename BV >

bm::word_t * bm::aggregator< BV >::sort_input_blocks_and | ( | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size,
|  | unsigned | i,
|  | unsigned | j,
|  | unsigned * | arg_blk_count,
|  | unsigned * | arg_blk_gap_count
| ) |  |
| protected

Definition at line 1539 of file bmaggregator.h.

## ◆ sort_input_blocks_or()

template<typename BV >

bm::word_t * bm::aggregator< BV >::sort_input_blocks_or | ( | const bvector_type_const_ptr * | bv_src,
|  | unsigned | src_size,
|  | unsigned | i,
|  | unsigned | j,
|  | unsigned * | arg_blk_count,
|  | unsigned * | arg_blk_gap_count
| ) |  |
| protected

Definition at line 1500 of file bmaggregator.h.

## ◆ stage()

template<typename BV >

void bm::aggregator< BV >::stage | ( | bm::word_t * | temp_block | ) |

Prepare operation, create internal resources, analyse dependencies.

Prerequisites are: that operation is set and all argument vectors are added

Definition at line 1872 of file bmaggregator.h.

## ◆ test_gap_blocks_and()

template<typename BV >

bool bm::aggregator< BV >::test_gap_blocks_and | ( | unsigned | block_count,
|  | unsigned | bit_idx
| ) |  |
| protected

Definition at line 1207 of file bmaggregator.h.

## ◆ test_gap_blocks_sub()

template<typename BV >

bool bm::aggregator< BV >::test_gap_blocks_sub | ( | unsigned | block_count,
|  | unsigned | bit_idx
| ) |  |
| protected

Definition at line 1221 of file bmaggregator.h.

## Field Documentation

## ◆ bvector_type_const_ptr

template<typename BV >

const typedef bvector_type* bm::aggregator< BV >::bvector_type_const_ptr

Definition at line 63 of file bmaggregator.h.

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

- bmaggregator.h