BitMagic-C++: bm.h File Reference

BitMagic-C++

Data Structures | Namespaces | Macros | Typedefs | Functions
bm.h File Reference

Compressed bit-vector bvector<> container, set algebraic methods, traversal iterators. More...

`#include <iterator>`
`#include <initializer_list>`
`#include <stdexcept>`
`#include <limits.h>`
`#include "bmdef.h"`
`#include "bmconst.h"`
`#include "bmsimd.h"`
`#include "bmfwd.h"`
`#include "bmfunc.h"`
`#include "encoding.h"`
`#include "bmalloc.h"`
`#include "bmblocks.h"`
`#include "bmbuffer.h"`
`#include "bmrs.h"`
Include dependency graph for bm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures
class | bm::bvector< Alloc >
| Bitvector Bit-vector container with runtime compression of bits. More...
struct | bm::bvector< Alloc >::statistics
| Statistical information about bitset's memory allocation details. More...
class | bm::bvector< Alloc >::reference
| Class reference implements an object for bit assignment. More...
class | bm::bvector< Alloc >::iterator_base
| Base class for all iterators. More...
struct | bm::bvector< Alloc >::iterator_base::bitblock_descr
| Bit-block descriptor. More...
struct | bm::bvector< Alloc >::iterator_base::dgap_descr
| Information about current DGAP block. More...
union | bm::bvector< Alloc >::iterator_base::block_descr
class | bm::bvector< Alloc >::insert_iterator
| Output iterator iterator designed to set "ON" bits based on input sequence of integers (bit indeces). More...
class | bm::bvector< Alloc >::bulk_insert_iterator
| Output iterator iterator designed to set "ON" bits based on input sequence of integers. More...
class | bm::bvector< Alloc >::enumerator
| Constant iterator designed to enumerate "ON" bits. More...
class | bm::bvector< Alloc >::counted_enumerator
| Constant iterator designed to enumerate "ON" bits counted_enumerator keeps bitcount, ie number of ON bits starting from the position 0 in the bit string up to the currently enumerated bit. More...
class | bm::bvector< Alloc >::mem_pool_guard
struct | bm::bvector< Alloc >::allocation_policy
| memory allocation policy More...

## Namespaces
| bm

## Macros
#define | BM_DECLARE_TEMP_BLOCK(x) bm::bit_block_t x;
#define | BM_OR_OP(x)
#define | BM_XOR_OP(x)
#define | BM_AND_OP(x)
#define | BM_SUB_OP(x)

## Typedefs
typedef int(* | bit_visitor_callback_type) (void *handle_ptr, bm::id_t bit_idx)
| Callback type to visit (callback style) bits in bit-vector(s) More...

## Functions
template<class Alloc >
bvector< Alloc > | bm::operator& (const bvector< Alloc > &bv1, const bvector< Alloc > &bv2)
template<class Alloc >
bvector< Alloc > | bm::operator| (const bvector< Alloc > &bv1, const bvector< Alloc > &bv2)
template<class Alloc >
bvector< Alloc > | bm::operator^ (const bvector< Alloc > &bv1, const bvector< Alloc > &bv2)
template<class Alloc >
bvector< Alloc > | bm::operator- (const bvector< Alloc > &bv1, const bvector< Alloc > &bv2)

## Detailed Description

Compressed bit-vector bvector<> container, set algebraic methods, traversal iterators.

Definition in file bm.h.

## Macro Definition Documentation

## ◆ BM_AND_OP

#define BM_AND_OP | ( |  | x | ) |

Value:
if (0 != (blk = blk_blk[j+x])) \
{ \
if (0 != (arg_blk = blk_blk_arg[j+x])) \
{ \
combine_operation_block_and(i, j+x, blk, arg_blk); \
if (opt_mode == opt_compress) \
blockman_.optimize_bit_block(i, j+x); \
} \
else \
blockman_.zero_block(i, j+x); \
}

Definition at line 5364 of file bm.h.

## ◆ BM_DECLARE_TEMP_BLOCK

#define BM_DECLARE_TEMP_BLOCK | ( |  | x | ) | bm::bit_block_t x;

Examples
  bvsetalgebra.cpp, rscsample01.cpp, rscsample02.cpp, sample11.cpp, sample14.cpp, sample4.cpp, strsvsample01.cpp, strsvsample02.cpp, strsvsample03.cpp, strsvsample05.cpp, svsample01.cpp, svsample02.cpp, svsample03.cpp, svsample08.cpp, xsample01.cpp, xsample02.cpp, xsample05.cpp, and xsample08.cpp.

Definition at line 47 of file bm.h.

## ◆ BM_OR_OP

#define BM_OR_OP | ( |  | x | ) |

Value:
{ \
blk = blk_blk[j+x]; arg_blk = blk_blk_arg[j+x]; \
if (blk != arg_blk) \
combine_operation_block_or(i, j+x, blk, arg_blk); \
}

Definition at line 5198 of file bm.h.

## ◆ BM_SUB_OP

#define BM_SUB_OP | ( |  | x | ) |

Value:
if ((0 != (blk = blk_blk[j+x])) && (0 != (arg_blk = blk_blk_arg[j+x]))) \
combine_operation_block_sub(i, j+x, blk, arg_blk);

Definition at line 5459 of file bm.h.

## ◆ BM_XOR_OP

#define BM_XOR_OP | ( |  | x | ) |

Value:
{ \
blk = blk_blk[j+x]; arg_blk = blk_blk_arg[j+x]; \
combine_operation_block_xor(i, j+x, blk, arg_blk); \
}

Definition at line 5271 of file bm.h.