1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
<title>BitMagic: Set algorithms</title>
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
<link href="tabs.css" rel="stylesheet" type="text/css">
7
<!-- Generated by Doxygen 1.5.5 -->
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
<title>BitMagic: GAP functions</title>
6
<link href="tabs.css" rel="stylesheet" type="text/css"/>
7
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
10
<!-- Generated by Doxygen 1.6.1 -->
8
11
<div class="navigation" id="top">
11
14
<li><a href="index.html"><span>Main Page</span></a></li>
12
15
<li><a href="modules.html"><span>Modules</span></a></li>
13
16
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
<li><a href="classes.html"><span>Data Structures</span></a></li>
17
<li><a href="annotated.html"><span>Data Structures</span></a></li>
15
18
<li><a href="files.html"><span>Files</span></a></li>
16
19
<li><a href="examples.html"><span>Examples</span></a></li>
20
23
<div class="contents">
21
<h1>Set algorithms<br>
24
<h1>GAP functions<br/>
23
[<a class="el" href="a00108.html">BitMagic C++ Library</a>]</small>
26
[<a class="el" href="a00112.html">BitMagic C++ Library</a>]</small>
26
<div class="dynheader">
27
Collaboration diagram for Set algorithms:</div>
28
<p><div class="dynheader">
29
Collaboration diagram for GAP functions:</div>
28
30
<div class="dynsection">
29
<center><table><tr><td><img src="a00114.png" border="0" alt="" usemap="#a00182_map">
30
<map name="a00182_map">
31
<area shape="rect" id="node1" href="a00108.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,33">
b'<area shape="rect" id="node3" href="a00115.html" title="Distance metrics" alt="" coords="352,5,472,33">'
b'</map></td></tr></table></center>'
31
<center><table><tr><td><img src="a00114.png" border="0" alt="" usemap="#a00114_map"/>
32
<map name="a00114_map" id="a00114">
33
<area shape="rect" href="a00112.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
33
36
<table border="0" cellpadding="0" cellspacing="0">
35
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
36
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">Distance metrics</a></td></tr>
38
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
39
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
40
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#g54ff78528c99ae3ca443eb99ba44785b">bm::combine_or</a> (BV &bv, It first, It last)</td></tr>
42
<tr><td class="mdescLeft"> </td><td class="mdescRight">OR Combine bitvector and the iterable sequence. <a href="#g54ff78528c99ae3ca443eb99ba44785b"></a><br></td></tr>
43
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
44
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#g3cb362aee03de6a321495100ae5c8375">bm::combine_xor</a> (BV &bv, It first, It last)</td></tr>
46
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR Combine bitvector and the iterable sequence. <a href="#g3cb362aee03de6a321495100ae5c8375"></a><br></td></tr>
47
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
48
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gb88c5bf51484323e0139aa789d7f0b98">bm::combine_sub</a> (BV &bv, It first, It last)</td></tr>
50
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB Combine bitvector and the iterable sequence. <a href="#gb88c5bf51484323e0139aa789d7f0b98"></a><br></td></tr>
51
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
52
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#g22922f71bd1eec8a5b663dc77b90cf6c">bm::combine_and_sorted</a> (BV &bv, It first, It last)</td></tr>
54
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#g22922f71bd1eec8a5b663dc77b90cf6c"></a><br></td></tr>
55
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
56
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#g819bdab57a624a08456ea79161b9c5d2">bm::combine_and</a> (BV &bv, It first, It last)</td></tr>
58
<tr><td class="mdescLeft"> </td><td class="mdescRight">AND Combine bitvector and the iterable sequence. <a href="#g819bdab57a624a08456ea79161b9c5d2"></a><br></td></tr>
59
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV> </td></tr>
60
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00106.html#a3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gc7a59d3bc266310ec127cb3efadb0d33">bm::count_intervals</a> (const BV &bv)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute number of bit intervals (GAPs) in the bitvector. <a href="#gc7a59d3bc266310ec127cb3efadb0d33"></a><br></td></tr>
63
<tr><td class="memTemplParams" nowrap colspan="2">template<class BV, class It> </td></tr>
64
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gcd88ed9539553dd93419b7029e8a4584">bm::export_array</a> (BV &bv, It first, It last)</td></tr>
66
<tr><td class="mdescLeft"> </td><td class="mdescRight">Export bitset from an array of binary data representing the bit vector. <a href="#gcd88ed9539553dd93419b7029e8a4584"></a><br></td></tr>
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
38
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html">bm::gap_len_table< T ></a></td></tr>
39
<tr><td class="mdescLeft"> </td><td class="mdescRight">Default GAP lengths table. <a href="a00066.html#_details">More...</a><br/></td></tr>
40
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00067.html">bm::gap_len_table_min< T ></a></td></tr>
41
<tr><td class="mdescLeft"> </td><td class="mdescRight">Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets. <a href="a00067.html#_details">More...</a><br/></td></tr>
42
<tr><td colspan="2"><h2>Functions</h2></td></tr>
43
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
44
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga866352ef5986a7d2b709795d127b666b">bm::gap_test</a> (const T *buf, unsigned pos)</td></tr>
45
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if bit = pos is true. <a href="#ga866352ef5986a7d2b709795d127b666b"></a><br/></td></tr>
46
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
47
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga570a6f573ffb9ac9e41a688d2bdc6004">bm::gap_bit_count</a> (const T *buf, unsigned dsize=0)</td></tr>
48
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates number of bits ON in GAP buffer. <a href="#ga570a6f573ffb9ac9e41a688d2bdc6004"></a><br/></td></tr>
49
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
50
<tr><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga406952734f1b05962941b32e37b3eb96">bm::gapcmp</a> (const T *buf1, const T *buf2)</td></tr>
51
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of GAP buffers. <a href="#ga406952734f1b05962941b32e37b3eb96"></a><br/></td></tr>
52
<tr><td class="memTemplParams" colspan="2">template<typename T , class F > </td></tr>
53
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga5e3123c3c9d3587f470abdbe6c8c3ad3">bm::gap_buff_any_op</a> (const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)</td></tr>
54
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract distance test operation for GAP buffers. Receives functor F as a template argument. <a href="#ga5e3123c3c9d3587f470abdbe6c8c3ad3"></a><br/></td></tr>
55
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
56
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga69186bd13bda27e04b3e33683ff884c2">bm::gap_set_value</a> (unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)</td></tr>
57
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument. <a href="#ga69186bd13bda27e04b3e33683ff884c2"></a><br/></td></tr>
58
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
59
<tr><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gaa7df7193094353ea24b8519debf745be">bm::gap_find_in_block</a> (const T *buf, unsigned nbit, <a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *prev)</td></tr>
60
<tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for the next 1 bit in the GAP block. <a href="#gaa7df7193094353ea24b8519debf745be"></a><br/></td></tr>
61
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
62
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga08e0ae8b2fd5869aa31cfad7d47177c4">bm::gap_sub_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
63
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB (AND NOT) GAP block to bitblock. <a href="#ga08e0ae8b2fd5869aa31cfad7d47177c4"></a><br/></td></tr>
64
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
65
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gab939656d4ea54fd3868aa236cdb20b82">bm::gap_xor_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
66
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR GAP block to bitblock. <a href="#gab939656d4ea54fd3868aa236cdb20b82"></a><br/></td></tr>
67
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
68
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga12615cd62f2e5367e1bc688d00a2188f">bm::gap_add_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
69
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds(OR) GAP block to bitblock. <a href="#ga12615cd62f2e5367e1bc688d00a2188f"></a><br/></td></tr>
70
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
71
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gafe6f72a009618290eeab3cddee869543">bm::gap_and_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
72
<tr><td class="mdescLeft"> </td><td class="mdescRight">ANDs GAP block to bitblock. <a href="#gafe6f72a009618290eeab3cddee869543"></a><br/></td></tr>
73
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
74
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga4862f4dcdcb7c0575e2e2db9e5f2a849">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
75
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga4862f4dcdcb7c0575e2e2db9e5f2a849"></a><br/></td></tr>
76
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
77
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga9bb80c42ee0ecf8f2af8250d7f5d327b">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf, unsigned dest_len)</td></tr>
78
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga9bb80c42ee0ecf8f2af8250d7f5d327b"></a><br/></td></tr>
79
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
80
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c">bm::gap_convert_to_bitset_smart</a> (unsigned *dest, const T *buf, id_t set_max)</td></tr>
81
<tr><td class="mdescLeft"> </td><td class="mdescRight">Smart GAP block to bitblock conversion. <a href="#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c"></a><br/></td></tr>
82
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
83
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga14d29338ffd1387758810b3f9e3a72c6">bm::gap_control_sum</a> (const T *buf)</td></tr>
84
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates sum of all words in GAP block. (For debugging purposes). <a href="#ga14d29338ffd1387758810b3f9e3a72c6"></a><br/></td></tr>
85
<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
86
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gaef53b2877ff369badd7bb25b26bb9029">bm::gap_set_all</a> (T *buf, unsigned set_max, unsigned value)</td></tr>
87
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets all bits to 0 or 1 (GAP). <a href="#gaef53b2877ff369badd7bb25b26bb9029"></a><br/></td></tr>
88
<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
89
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga5d49355eb9dd7947699e20f3a2a75ef5">bm::gap_init_range_block</a> (T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)</td></tr>
90
<tr><td class="mdescLeft"> </td><td class="mdescRight">Init gap block so it has block in it (can be whole block). <a href="#ga5d49355eb9dd7947699e20f3a2a75ef5"></a><br/></td></tr>
91
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
92
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga3f22bfde5dfe06d6d77dc2598b8c0845">bm::gap_invert</a> (T *buf)</td></tr>
93
<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverts all bits in the GAP buffer. <a href="#ga3f22bfde5dfe06d6d77dc2598b8c0845"></a><br/></td></tr>
94
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
95
<tr><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga690ff7c8b16e1821a77663b7194267e7">bm::gap_is_all_zero</a> (const T *buf, unsigned set_max)</td></tr>
96
<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporary inverts all bits in the GAP buffer. <a href="#ga690ff7c8b16e1821a77663b7194267e7"></a><br/></td></tr>
97
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
98
<tr><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga1427d43e91872f981c6311fa76ab5633">bm::gap_is_all_one</a> (const T *buf, unsigned set_max)</td></tr>
99
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if GAP block is all-one. <a href="#ga1427d43e91872f981c6311fa76ab5633"></a><br/></td></tr>
100
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
101
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gad6bfb9da9950b0df8983a9faf9db5042">bm::gap_length</a> (const T *buf)</td></tr>
102
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block length. <a href="#gad6bfb9da9950b0df8983a9faf9db5042"></a><br/></td></tr>
103
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
104
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga0419ed06e2f0b7891e7d721546f5fb45">bm::gap_capacity</a> (const T *buf, const T *glevel_len)</td></tr>
105
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity. <a href="#ga0419ed06e2f0b7891e7d721546f5fb45"></a><br/></td></tr>
106
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
107
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga94a5371b5dc6a1560d95d7c2dde88815">bm::gap_limit</a> (const T *buf, const T *glevel_len)</td></tr>
108
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity limit. <a href="#ga94a5371b5dc6a1560d95d7c2dde88815"></a><br/></td></tr>
109
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
110
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga1defe73aa4227a0e7204363ac6bb1ac1">bm::gap_level</a> (const T *buf)</td></tr>
111
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP blocks capacity level. <a href="#ga1defe73aa4227a0e7204363ac6bb1ac1"></a><br/></td></tr>
112
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
113
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga501aa9bf029e7f9ea9518e7003fe5549">bm::set_gap_level</a> (T *buf, unsigned level)</td></tr>
114
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets GAP block capacity level. <a href="#ga501aa9bf029e7f9ea9518e7003fe5549"></a><br/></td></tr>
115
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
116
<tr><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga3bfaebeeb4b2d479c5a9ac9d57607165">bm::gap_calc_level</a> (int len, const T *glevel_len)</td></tr>
117
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates GAP block capacity level. <a href="#ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><br/></td></tr>
118
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
119
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gafd76869eb44fac688da5e26e0e74f41f">bm::gap_free_elements</a> (const T *buf, const T *glevel_len)</td></tr>
120
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length. <a href="#gafd76869eb44fac688da5e26e0e74f41f"></a><br/></td></tr>
121
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
122
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga80d09bb6ab244e68ab0c1fdccc17b95b">bm::bit_convert_to_gap</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bits, unsigned dest_len)</td></tr>
123
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts bit block to GAP. <a href="#ga80d09bb6ab244e68ab0c1fdccc17b95b"></a><br/></td></tr>
124
<tr><td class="memTemplParams" colspan="2">template<class T , class F > </td></tr>
125
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga11bc26da8533752bb23756632fd30a00">bm::for_each_gap_dbit</a> (const T *buf, F &func)</td></tr>
126
<tr><td class="mdescLeft"> </td><td class="mdescRight">Iterate gap block as delta-bits with a functor. <a href="#ga11bc26da8533752bb23756632fd30a00"></a><br/></td></tr>
127
<tr><td class="memTemplParams" colspan="2">template<typename D , typename T > </td></tr>
128
<tr><td class="memTemplItemLeft" align="right" valign="top">D </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga5cd7e0cfee401da1b8f702151c083b27">bm::gap_convert_to_arr</a> (D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len, bool invert=false)</td></tr>
129
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert gap block into array of ints corresponding to 1 bits. <a href="#ga5cd7e0cfee401da1b8f702151c083b27"></a><br/></td></tr>
130
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#ga1666464d22f7fd473db9aafcf2f77a63">bm::gap_operation_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)</td></tr>
131
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation. <a href="#ga1666464d22f7fd473db9aafcf2f77a63"></a><br/></td></tr>
132
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gafb24a1e2588c5670df6facc537594d9d">bm::gap_operation_any_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
133
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation test. <a href="#gafb24a1e2588c5670df6facc537594d9d"></a><br/></td></tr>
134
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gaa5e07ad0256bf784ad3397acbbd23bb2">bm::gap_operation_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)</td></tr>
135
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation. <a href="#gaa5e07ad0256bf784ad3397acbbd23bb2"></a><br/></td></tr>
136
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gab46833bf0d7813f868a1608f70db12de">bm::gap_operation_any_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
137
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation test. <a href="#gab46833bf0d7813f868a1608f70db12de"></a><br/></td></tr>
138
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gacda280af8910ae5fde37731a3a7a1226">bm::gap_operation_or</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)</td></tr>
139
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP OR operation. <a href="#gacda280af8910ae5fde37731a3a7a1226"></a><br/></td></tr>
140
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gabe4c83e5e162c38e297116dd1cd05ac4">bm::gap_operation_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)</td></tr>
141
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB (AND NOT) operation. <a href="#gabe4c83e5e162c38e297116dd1cd05ac4"></a><br/></td></tr>
142
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#gae0b1d4aca0ddfa58d83e4b089a4f35d9">bm::gap_operation_any_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
143
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB operation test. <a href="#gae0b1d4aca0ddfa58d83e4b089a4f35d9"></a><br/></td></tr>
144
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
145
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#gacc578010f3700940829c600c812d23b1">bm::gap_overhead</a> (const T *length, const T *length_end, const T *glevel_len)</td></tr>
146
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert bit block into an array of ints corresponding to 1 bits. <a href="#gacc578010f3700940829c600c812d23b1"></a><br/></td></tr>
147
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
148
<tr><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00114.html#ga2daff3a0ceda6fef87d3b0e892da5813">bm::improve_gap_levels</a> (const T *length, const T *length_end, T *glevel_len)</td></tr>
149
<tr><td class="mdescLeft"> </td><td class="mdescRight">Finds optimal gap blocks lengths. <a href="#ga2daff3a0ceda6fef87d3b0e892da5813"></a><br/></td></tr>
68
<hr><a name="_details"></a><h2>Detailed Description</h2>
69
Set algorithms <hr><h2>Function Documentation</h2>
70
<a class="anchor" name="g819bdab57a624a08456ea79161b9c5d2"></a><!-- doxytag: member="bm::combine_and" ref="g819bdab57a624a08456ea79161b9c5d2" args="(BV &bv, It first, It last)" -->
72
<div class="memproto">
73
<div class="memtemplate">
74
template<class BV, class It> </div>
75
<table class="memname">
77
<td class="memname">void bm::combine_and </td>
79
<td class="paramtype">BV & </td>
80
<td class="paramname"> <em>bv</em>, </td>
83
<td class="paramkey"></td>
85
<td class="paramtype">It </td>
86
<td class="paramname"> <em>first</em>, </td>
89
<td class="paramkey"></td>
91
<td class="paramtype">It </td>
92
<td class="paramname"> <em>last</em></td><td> </td>
97
<td></td><td></td><td width="100%"><code> [inline]</code></td>
104
AND Combine bitvector and the iterable sequence.
106
Algorithm combines <a class="el" href="a00040.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.<p>
107
<dl compact><dt><b>Parameters:</b></dt><dd>
108
<table border="0" cellspacing="2" cellpadding="0">
109
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
110
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
111
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence</td></tr>
114
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00114.html#g22922f71bd1eec8a5b663dc77b90cf6c" title="AND Combine bitvector and the iterable sequence.">combine_and_sorted</a> </dd></dl>
116
<p>Definition at line <a class="el" href="a00130.html#l01380">1380</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
118
<p>References <a class="el" href="a00130.html#l01103">bm::combine_or()</a>.</p>
122
<a class="anchor" name="g22922f71bd1eec8a5b663dc77b90cf6c"></a><!-- doxytag: member="bm::combine_and_sorted" ref="g22922f71bd1eec8a5b663dc77b90cf6c" args="(BV &bv, It first, It last)" -->
123
<div class="memitem">
124
<div class="memproto">
125
<div class="memtemplate">
126
template<class BV, class It> </div>
127
<table class="memname">
129
<td class="memname">void bm::combine_and_sorted </td>
131
<td class="paramtype">BV & </td>
132
<td class="paramname"> <em>bv</em>, </td>
135
<td class="paramkey"></td>
137
<td class="paramtype">It </td>
138
<td class="paramname"> <em>first</em>, </td>
141
<td class="paramkey"></td>
143
<td class="paramtype">It </td>
144
<td class="paramname"> <em>last</em></td><td> </td>
149
<td></td><td></td><td width="100%"><code> [inline]</code></td>
156
AND Combine bitvector and the iterable sequence.
158
Algorithm combines <a class="el" href="a00040.html" title="bitvector with runtime compression of bits.">bvector</a> with sorted sequence of integers (represents another set).<p>
159
<dl compact><dt><b>Parameters:</b></dt><dd>
160
<table border="0" cellspacing="2" cellpadding="0">
161
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
162
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
163
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
167
<p>Definition at line <a class="el" href="a00130.html#l01348">1348</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
169
<p>References <a class="el" href="a00133.html#l00041">BM_ASSERT</a>.</p>
173
<a class="anchor" name="g54ff78528c99ae3ca443eb99ba44785b"></a><!-- doxytag: member="bm::combine_or" ref="g54ff78528c99ae3ca443eb99ba44785b" args="(BV &bv, It first, It last)" -->
174
<div class="memitem">
175
<div class="memproto">
176
<div class="memtemplate">
177
template<class BV, class It> </div>
178
<table class="memname">
180
<td class="memname">void bm::combine_or </td>
182
<td class="paramtype">BV & </td>
183
<td class="paramname"> <em>bv</em>, </td>
186
<td class="paramkey"></td>
188
<td class="paramtype">It </td>
189
<td class="paramname"> <em>first</em>, </td>
192
<td class="paramkey"></td>
194
<td class="paramtype">It </td>
195
<td class="paramname"> <em>last</em></td><td> </td>
200
<td></td><td></td><td width="100%"><code> [inline]</code></td>
207
OR Combine bitvector and the iterable sequence.
209
Algorithm combines <a class="el" href="a00040.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.<p>
210
<dl compact><dt><b>Parameters:</b></dt><dd>
211
<table border="0" cellspacing="2" cellpadding="0">
212
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
213
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
214
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
218
<p>Definition at line <a class="el" href="a00130.html#l01103">1103</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
220
<p>References <a class="el" href="a00130.html#l01073">bm::block_range_scan()</a>, <a class="el" href="a00133.html#l00041">BM_ASSERT</a>, <a class="el" href="a00133.html#l00086">BMGAP_PTR</a>, <a class="el" href="a00134.html#l02175">bm::gap_limit()</a>, <a class="el" href="a00134.html#l01122">bm::gap_set_value()</a>, <a class="el" href="a00132.html#l00049">bm::id_max</a>, <a class="el" href="a00132.html#l00055">bm::set_block_mask</a>, <a class="el" href="a00132.html#l00054">bm::set_block_shift</a>, <a class="el" href="a00132.html#l00064">bm::set_word_mask</a>, and <a class="el" href="a00132.html#l00063">bm::set_word_shift</a>.</p>
222
<p>Referenced by <a class="el" href="a00130.html#l01380">bm::combine_and()</a>.</p>
226
<a class="anchor" name="gb88c5bf51484323e0139aa789d7f0b98"></a><!-- doxytag: member="bm::combine_sub" ref="gb88c5bf51484323e0139aa789d7f0b98" args="(BV &bv, It first, It last)" -->
227
<div class="memitem">
228
<div class="memproto">
229
<div class="memtemplate">
230
template<class BV, class It> </div>
231
<table class="memname">
233
<td class="memname">void bm::combine_sub </td>
235
<td class="paramtype">BV & </td>
236
<td class="paramname"> <em>bv</em>, </td>
239
<td class="paramkey"></td>
241
<td class="paramtype">It </td>
242
<td class="paramname"> <em>first</em>, </td>
245
<td class="paramkey"></td>
247
<td class="paramtype">It </td>
248
<td class="paramname"> <em>last</em></td><td> </td>
253
<td></td><td></td><td width="100%"><code> [inline]</code></td>
260
SUB Combine bitvector and the iterable sequence.
262
Algorithm combines <a class="el" href="a00040.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.<p>
263
<dl compact><dt><b>Parameters:</b></dt><dd>
264
<table border="0" cellspacing="2" cellpadding="0">
265
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
266
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
267
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
271
<p>Definition at line <a class="el" href="a00130.html#l01266">1266</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
273
<p>References <a class="el" href="a00130.html#l01073">bm::block_range_scan()</a>, <a class="el" href="a00133.html#l00041">BM_ASSERT</a>, <a class="el" href="a00133.html#l00086">BMGAP_PTR</a>, <a class="el" href="a00134.html#l02175">bm::gap_limit()</a>, <a class="el" href="a00134.html#l01122">bm::gap_set_value()</a>, <a class="el" href="a00134.html#l00485">bm::gap_test()</a>, <a class="el" href="a00132.html#l00049">bm::id_max</a>, <a class="el" href="a00132.html#l00055">bm::set_block_mask</a>, <a class="el" href="a00132.html#l00054">bm::set_block_shift</a>, <a class="el" href="a00132.html#l00064">bm::set_word_mask</a>, and <a class="el" href="a00132.html#l00063">bm::set_word_shift</a>.</p>
277
<a class="anchor" name="g3cb362aee03de6a321495100ae5c8375"></a><!-- doxytag: member="bm::combine_xor" ref="g3cb362aee03de6a321495100ae5c8375" args="(BV &bv, It first, It last)" -->
278
<div class="memitem">
279
<div class="memproto">
280
<div class="memtemplate">
281
template<class BV, class It> </div>
282
<table class="memname">
284
<td class="memname">void bm::combine_xor </td>
286
<td class="paramtype">BV & </td>
287
<td class="paramname"> <em>bv</em>, </td>
290
<td class="paramkey"></td>
292
<td class="paramtype">It </td>
293
<td class="paramname"> <em>first</em>, </td>
296
<td class="paramkey"></td>
298
<td class="paramtype">It </td>
299
<td class="paramname"> <em>last</em></td><td> </td>
304
<td></td><td></td><td width="100%"><code> [inline]</code></td>
311
XOR Combine bitvector and the iterable sequence.
313
Algorithm combines <a class="el" href="a00040.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.<p>
314
<dl compact><dt><b>Parameters:</b></dt><dd>
315
<table border="0" cellspacing="2" cellpadding="0">
316
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
317
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
318
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
322
<p>Definition at line <a class="el" href="a00130.html#l01182">1182</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
324
<p>References <a class="el" href="a00130.html#l01073">bm::block_range_scan()</a>, <a class="el" href="a00133.html#l00041">BM_ASSERT</a>, <a class="el" href="a00133.html#l00086">BMGAP_PTR</a>, <a class="el" href="a00134.html#l02175">bm::gap_limit()</a>, <a class="el" href="a00134.html#l01122">bm::gap_set_value()</a>, <a class="el" href="a00134.html#l00485">bm::gap_test()</a>, <a class="el" href="a00132.html#l00049">bm::id_max</a>, <a class="el" href="a00132.html#l00055">bm::set_block_mask</a>, <a class="el" href="a00132.html#l00054">bm::set_block_shift</a>, <a class="el" href="a00132.html#l00064">bm::set_word_mask</a>, and <a class="el" href="a00132.html#l00063">bm::set_word_shift</a>.</p>
328
<a class="anchor" name="gc7a59d3bc266310ec127cb3efadb0d33"></a><!-- doxytag: member="bm::count_intervals" ref="gc7a59d3bc266310ec127cb3efadb0d33" args="(const BV &bv)" -->
329
<div class="memitem">
330
<div class="memproto">
331
<div class="memtemplate">
332
template<class BV> </div>
333
<table class="memname">
335
<td class="memname"><a class="el" href="a00106.html#a3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_intervals </td>
337
<td class="paramtype">const BV & </td>
338
<td class="paramname"> <em>bv</em> </td>
339
<td> ) </td>
340
<td width="100%"><code> [inline]</code></td>
347
Compute number of bit intervals (GAPs) in the bitvector.
349
Algorithm traverses bit vector and count number of uninterrupted intervals of 1s and 0s. <pre>
351
00001111100000 - gives us 3 intervals
352
10001111100000 - 4 intervals
353
00000000000000 - 1 interval
354
11111111111111 - 1 interval
355
</pre> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of intervals </dd></dl>
357
<p>Definition at line <a class="el" href="a00130.html#l01403">1403</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
359
<p>References <a class="el" href="a00134.html#l00588">bm::for_each_block()</a>, and <a class="el" href="a00132.html#l00081">bm::set_array_size</a>.</p>
363
<a class="anchor" name="gcd88ed9539553dd93419b7029e8a4584"></a><!-- doxytag: member="bm::export_array" ref="gcd88ed9539553dd93419b7029e8a4584" args="(BV &bv, It first, It last)" -->
364
<div class="memitem">
365
<div class="memproto">
366
<div class="memtemplate">
367
template<class BV, class It> </div>
368
<table class="memname">
370
<td class="memname">void bm::export_array </td>
372
<td class="paramtype">BV & </td>
373
<td class="paramname"> <em>bv</em>, </td>
376
<td class="paramkey"></td>
378
<td class="paramtype">It </td>
379
<td class="paramname"> <em>first</em>, </td>
382
<td class="paramkey"></td>
384
<td class="paramtype">It </td>
385
<td class="paramname"> <em>last</em></td><td> </td>
390
<td></td><td></td><td width="100%"><code> [inline]</code></td>
397
Export bitset from an array of binary data representing the bit vector.
399
Input array can be array of ints, chars or other native C types. Method works with iterators, which makes it compatible with STL containers and C arrays<p>
400
<dl compact><dt><b>Parameters:</b></dt><dd>
401
<table border="0" cellspacing="2" cellpadding="0">
402
<tr><td valign="top"></td><td valign="top"><em>bv</em> </td><td>- destination bitvector </td></tr>
403
<tr><td valign="top"></td><td valign="top"><em>first</em> </td><td>- first element of the iterated sequence </td></tr>
404
<tr><td valign="top"></td><td valign="top"><em>last</em> </td><td>- last element of the iterated sequence </td></tr>
408
<p>Definition at line <a class="el" href="a00130.html#l01429">1429</a> of file <a class="el" href="a00130.html">bmalgo_impl.h</a>.</p>
410
<p>References <a class="el" href="a00133.html#l00041">BM_ASSERT</a>, <a class="el" href="a00132.html#l00117">bm::BM_BIT</a>, <a class="el" href="a00133.html#l00086">BMGAP_PTR</a>, <a class="el" href="a00132.html#l00053">bm::set_block_size</a>, and <a class="el" href="a00132.html#l00084">bm::set_total_blocks</a>.</p>
415
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Oct 12 12:16:56 2009 for BitMagic by
151
<hr/><a name="_details"></a><h2>Detailed Description</h2>
152
<p>GAP functions implement different opereations on GAP compressed blocks and serve as a minimal building blocks. </p>
153
<hr/><h2>Function Documentation</h2>
154
<a class="anchor" id="ga80d09bb6ab244e68ab0c1fdccc17b95b"></a><!-- doxytag: member="bm::bit_convert_to_gap" ref="ga80d09bb6ab244e68ab0c1fdccc17b95b" args="(T *BMRESTRICT dest, const unsigned *BMRESTRICT src, bm::id_t bits, unsigned dest_len)" -->
155
<div class="memitem">
156
<div class="memproto">
157
<div class="memtemplate">
158
template<typename T > </div>
159
<table class="memname">
161
<td class="memname">unsigned bm::bit_convert_to_gap </td>
163
<td class="paramtype">T *BMRESTRICT </td>
164
<td class="paramname"> <em>dest</em>, </td>
167
<td class="paramkey"></td>
169
<td class="paramtype">const unsigned *BMRESTRICT </td>
170
<td class="paramname"> <em>src</em>, </td>
173
<td class="paramkey"></td>
175
<td class="paramtype"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td>
176
<td class="paramname"> <em>bits</em>, </td>
179
<td class="paramkey"></td>
181
<td class="paramtype">unsigned </td>
182
<td class="paramname"> <em>dest_len</em></td><td> </td>
187
<td></td><td></td><td><code> [inline]</code></td>
193
<p>Converts bit block to GAP. </p>
194
<dl><dt><b>Parameters:</b></dt><dd>
195
<table border="0" cellspacing="2" cellpadding="0">
196
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- Destinatio GAP buffer. </td></tr>
197
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- Source bitblock buffer. </td></tr>
198
<tr><td valign="top"></td><td valign="top"><em>bits</em> </td><td>- Number of bits to convert. </td></tr>
199
<tr><td valign="top"></td><td valign="top"><em>dest_len</em> </td><td>- length of the dest. buffer. </td></tr>
203
<dl class="return"><dt><b>Returns:</b></dt><dd>New length of GAP block or 0 if conversion failed (insufficicent space). </dd></dl>
205
<p>Definition at line <a class="el" href="a00090_source.html#l02266">2266</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
207
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>.</p>
209
<p>Referenced by <a class="el" href="a00092_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
213
<a class="anchor" id="ga11bc26da8533752bb23756632fd30a00"></a><!-- doxytag: member="bm::for_each_gap_dbit" ref="ga11bc26da8533752bb23756632fd30a00" args="(const T *buf, F &func)" -->
214
<div class="memitem">
215
<div class="memproto">
216
<div class="memtemplate">
217
template<class T , class F > </div>
218
<table class="memname">
220
<td class="memname">void bm::for_each_gap_dbit </td>
222
<td class="paramtype">const T * </td>
223
<td class="paramname"> <em>buf</em>, </td>
226
<td class="paramkey"></td>
228
<td class="paramtype">F & </td>
229
<td class="paramname"> <em>func</em></td><td> </td>
234
<td></td><td></td><td><code> [inline]</code></td>
240
<p>Iterate gap block as delta-bits with a functor. </p>
242
<p>Definition at line <a class="el" href="a00090_source.html#l02356">2356</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
246
<a class="anchor" id="ga12615cd62f2e5367e1bc688d00a2188f"></a><!-- doxytag: member="bm::gap_add_to_bitset" ref="ga12615cd62f2e5367e1bc688d00a2188f" args="(unsigned *dest, const T *buf)" -->
247
<div class="memitem">
248
<div class="memproto">
249
<div class="memtemplate">
250
template<typename T > </div>
251
<table class="memname">
253
<td class="memname">void bm::gap_add_to_bitset </td>
255
<td class="paramtype">unsigned * </td>
256
<td class="paramname"> <em>dest</em>, </td>
259
<td class="paramkey"></td>
261
<td class="paramtype">const T * </td>
262
<td class="paramname"> <em>buf</em></td><td> </td>
267
<td></td><td></td><td><code> [inline]</code></td>
273
<p>Adds(OR) GAP block to bitblock. </p>
274
<dl><dt><b>Parameters:</b></dt><dd>
275
<table border="0" cellspacing="2" cellpadding="0">
276
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
277
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
282
<p>Definition at line <a class="el" href="a00090_source.html#l01495">1495</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
284
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00090_source.html#l01245">bm::or_bit_block()</a>.</p>
286
<p>Referenced by <a class="el" href="a00090_source.html#l01903">bm::gap_convert_to_bitset()</a>.</p>
290
<a class="anchor" id="gafe6f72a009618290eeab3cddee869543"></a><!-- doxytag: member="bm::gap_and_to_bitset" ref="gafe6f72a009618290eeab3cddee869543" args="(unsigned *dest, const T *buf)" -->
291
<div class="memitem">
292
<div class="memproto">
293
<div class="memtemplate">
294
template<typename T > </div>
295
<table class="memname">
297
<td class="memname">void bm::gap_and_to_bitset </td>
299
<td class="paramtype">unsigned * </td>
300
<td class="paramname"> <em>dest</em>, </td>
303
<td class="paramkey"></td>
305
<td class="paramtype">const T * </td>
306
<td class="paramname"> <em>buf</em></td><td> </td>
311
<td></td><td></td><td><code> [inline]</code></td>
317
<p>ANDs GAP block to bitblock. </p>
318
<dl><dt><b>Parameters:</b></dt><dd>
319
<table border="0" cellspacing="2" cellpadding="0">
320
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
321
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
326
<p>Definition at line <a class="el" href="a00090_source.html#l01527">1527</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
328
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00090_source.html#l01307">bm::sub_bit_block()</a>.</p>
332
<a class="anchor" id="ga570a6f573ffb9ac9e41a688d2bdc6004"></a><!-- doxytag: member="bm::gap_bit_count" ref="ga570a6f573ffb9ac9e41a688d2bdc6004" args="(const T *buf, unsigned dsize=0)" -->
333
<div class="memitem">
334
<div class="memproto">
335
<div class="memtemplate">
336
template<typename T > </div>
337
<table class="memname">
339
<td class="memname">unsigned bm::gap_bit_count </td>
341
<td class="paramtype">const T * </td>
342
<td class="paramname"> <em>buf</em>, </td>
345
<td class="paramkey"></td>
347
<td class="paramtype">unsigned </td>
348
<td class="paramname"> <em>dsize</em> = <code>0</code></td><td> </td>
353
<td></td><td></td><td><code> [inline]</code></td>
359
<p>Calculates number of bits ON in GAP buffer. </p>
360
<dl><dt><b>Parameters:</b></dt><dd>
361
<table border="0" cellspacing="2" cellpadding="0">
362
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
363
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- buffer size </td></tr>
367
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of non-zero bits. </dd></dl>
369
<p>Definition at line <a class="el" href="a00090_source.html#l00618">618</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
371
<p>Referenced by <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>, and <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>.</p>
375
<a class="anchor" id="ga5e3123c3c9d3587f470abdbe6c8c3ad3"></a><!-- doxytag: member="bm::gap_buff_any_op" ref="ga5e3123c3c9d3587f470abdbe6c8c3ad3" args="(const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)" -->
376
<div class="memitem">
377
<div class="memproto">
378
<div class="memtemplate">
379
template<typename T , class F > </div>
380
<table class="memname">
382
<td class="memname">unsigned bm::gap_buff_any_op </td>
384
<td class="paramtype">const T *BMRESTRICT </td>
385
<td class="paramname"> <em>vect1</em>, </td>
388
<td class="paramkey"></td>
390
<td class="paramtype">unsigned </td>
391
<td class="paramname"> <em>vect1_mask</em>, </td>
394
<td class="paramkey"></td>
396
<td class="paramtype">const T *BMRESTRICT </td>
397
<td class="paramname"> <em>vect2</em>, </td>
400
<td class="paramkey"></td>
402
<td class="paramtype">unsigned </td>
403
<td class="paramname"> <em>vect2_mask</em>, </td>
406
<td class="paramkey"></td>
408
<td class="paramtype">F </td>
409
<td class="paramname"> <em>f</em></td><td> </td>
414
<td></td><td></td><td><code> [inline]</code></td>
420
<p>Abstract distance test operation for GAP buffers. Receives functor F as a template argument. </p>
421
<dl><dt><b>Parameters:</b></dt><dd>
422
<table border="0" cellspacing="2" cellpadding="0">
423
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
424
<tr><td valign="top"></td><td valign="top"><em>vect1_mask</em> </td><td>- XOR mask for starting bitflag for vector1 can be 0 or 1 (1 inverts the vector) </td></tr>
425
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
426
<tr><td valign="top"></td><td valign="top"><em>vect2_mask</em> </td><td>- same as vect1_mask </td></tr>
427
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
431
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
432
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation result returns any 1 bit </dd></dl>
434
<p>Definition at line <a class="el" href="a00090_source.html#l00955">955</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
436
<p>References <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>.</p>
438
<p>Referenced by <a class="el" href="a00090_source.html#l02935">bm::gap_operation_any_and()</a>, <a class="el" href="a00090_source.html#l03062">bm::gap_operation_any_sub()</a>, and <a class="el" href="a00090_source.html#l02983">bm::gap_operation_any_xor()</a>.</p>
442
<a class="anchor" id="ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><!-- doxytag: member="bm::gap_calc_level" ref="ga3bfaebeeb4b2d479c5a9ac9d57607165" args="(int len, const T *glevel_len)" -->
443
<div class="memitem">
444
<div class="memproto">
445
<div class="memtemplate">
446
template<typename T > </div>
447
<table class="memname">
449
<td class="memname">int bm::gap_calc_level </td>
451
<td class="paramtype">int </td>
452
<td class="paramname"> <em>len</em>, </td>
455
<td class="paramkey"></td>
457
<td class="paramtype">const T * </td>
458
<td class="paramname"> <em>glevel_len</em></td><td> </td>
463
<td></td><td></td><td><code> [inline]</code></td>
469
<p>Calculates GAP block capacity level. </p>
470
<dl><dt><b>Parameters:</b></dt><dd>
471
<table border="0" cellspacing="2" cellpadding="0">
472
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- GAP buffer length. </td></tr>
473
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- GAP lengths table </td></tr>
477
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. -1 if block does not fit any level. </dd></dl>
479
<p>Definition at line <a class="el" href="a00090_source.html#l02194">2194</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
481
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00088_source.html#l00074">bm::gap_levels</a>.</p>
483
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00090_source.html#l04422">bm::gap_overhead()</a>.</p>
487
<a class="anchor" id="ga0419ed06e2f0b7891e7d721546f5fb45"></a><!-- doxytag: member="bm::gap_capacity" ref="ga0419ed06e2f0b7891e7d721546f5fb45" args="(const T *buf, const T *glevel_len)" -->
488
<div class="memitem">
489
<div class="memproto">
490
<div class="memtemplate">
491
template<typename T > </div>
492
<table class="memname">
494
<td class="memname">unsigned bm::gap_capacity </td>
496
<td class="paramtype">const T * </td>
497
<td class="paramname"> <em>buf</em>, </td>
500
<td class="paramkey"></td>
502
<td class="paramtype">const T * </td>
503
<td class="paramname"> <em>glevel_len</em></td><td> </td>
508
<td></td><td></td><td><code> [inline]</code></td>
514
<p>Returs GAP block capacity. </p>
515
<dl><dt><b>Parameters:</b></dt><dd>
516
<table border="0" cellspacing="2" cellpadding="0">
517
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
521
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity. </dd></dl>
523
<p>Definition at line <a class="el" href="a00090_source.html#l02136">2136</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
525
<p>Referenced by <a class="el" href="a00084_source.html#l02042">bm::bvector< Alloc, MS >::calc_stat()</a>, <a class="el" href="a00087_source.html#l00205">bm::mem_alloc< BA, PA >::free_gap_block()</a>, and <a class="el" href="a00090_source.html#l02215">bm::gap_free_elements()</a>.</p>
529
<a class="anchor" id="ga14d29338ffd1387758810b3f9e3a72c6"></a><!-- doxytag: member="bm::gap_control_sum" ref="ga14d29338ffd1387758810b3f9e3a72c6" args="(const T *buf)" -->
530
<div class="memitem">
531
<div class="memproto">
532
<div class="memtemplate">
533
template<typename T > </div>
534
<table class="memname">
536
<td class="memname">unsigned bm::gap_control_sum </td>
538
<td class="paramtype">const T * </td>
539
<td class="paramname"> <em>buf</em></td>
540
<td> ) </td>
541
<td><code> [inline]</code></td>
547
<p>Calculates sum of all words in GAP block. (For debugging purposes). </p>
548
<dl class="note"><dt><b>Note:</b></dt><dd>For debugging and testing ONLY. </dd></dl>
549
<dl><dt><b>Parameters:</b></dt><dd>
550
<table border="0" cellspacing="2" cellpadding="0">
551
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
555
<dl class="return"><dt><b>Returns:</b></dt><dd>Sum of all words. </dd></dl>
557
<p>Definition at line <a class="el" href="a00090_source.html#l01962">1962</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
559
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>.</p>
563
<a class="anchor" id="ga5cd7e0cfee401da1b8f702151c083b27"></a><!-- doxytag: member="bm::gap_convert_to_arr" ref="ga5cd7e0cfee401da1b8f702151c083b27" args="(D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len, bool invert=false)" -->
564
<div class="memitem">
565
<div class="memproto">
566
<div class="memtemplate">
567
template<typename D , typename T > </div>
568
<table class="memname">
570
<td class="memname">D bm::gap_convert_to_arr </td>
572
<td class="paramtype">D *BMRESTRICT </td>
573
<td class="paramname"> <em>dest</em>, </td>
576
<td class="paramkey"></td>
578
<td class="paramtype">const T *BMRESTRICT </td>
579
<td class="paramname"> <em>buf</em>, </td>
582
<td class="paramkey"></td>
584
<td class="paramtype">unsigned </td>
585
<td class="paramname"> <em>dest_len</em>, </td>
588
<td class="paramkey"></td>
590
<td class="paramtype">bool </td>
591
<td class="paramname"> <em>invert</em> = <code>false</code></td><td> </td>
596
<td></td><td></td><td><code> [inline]</code></td>
602
<p>Convert gap block into array of ints corresponding to 1 bits. </p>
604
<p>Definition at line <a class="el" href="a00090_source.html#l02411">2411</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
606
<p>Referenced by <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>.</p>
610
<a class="anchor" id="ga9bb80c42ee0ecf8f2af8250d7f5d327b"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga9bb80c42ee0ecf8f2af8250d7f5d327b" args="(unsigned *dest, const T *buf, unsigned dest_len)" -->
611
<div class="memitem">
612
<div class="memproto">
613
<div class="memtemplate">
614
template<typename T > </div>
615
<table class="memname">
617
<td class="memname">void bm::gap_convert_to_bitset </td>
619
<td class="paramtype">unsigned * </td>
620
<td class="paramname"> <em>dest</em>, </td>
623
<td class="paramkey"></td>
625
<td class="paramtype">const T * </td>
626
<td class="paramname"> <em>buf</em>, </td>
629
<td class="paramkey"></td>
631
<td class="paramtype">unsigned </td>
632
<td class="paramname"> <em>dest_len</em></td><td> </td>
637
<td></td><td></td><td><code> [inline]</code></td>
643
<p>GAP block to bitblock conversion. </p>
644
<dl><dt><b>Parameters:</b></dt><dd>
645
<table border="0" cellspacing="2" cellpadding="0">
646
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
647
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
648
<tr><td valign="top"></td><td valign="top"><em>dest_size</em> </td><td>- length of the destination buffer. </td></tr>
653
<p>Definition at line <a class="el" href="a00090_source.html#l01919">1919</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
655
<p>References <a class="el" href="a00090_source.html#l01495">bm::gap_add_to_bitset()</a>.</p>
659
<a class="anchor" id="ga4862f4dcdcb7c0575e2e2db9e5f2a849"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga4862f4dcdcb7c0575e2e2db9e5f2a849" args="(unsigned *dest, const T *buf)" -->
660
<div class="memitem">
661
<div class="memproto">
662
<div class="memtemplate">
663
template<typename T > </div>
664
<table class="memname">
666
<td class="memname">void bm::gap_convert_to_bitset </td>
668
<td class="paramtype">unsigned * </td>
669
<td class="paramname"> <em>dest</em>, </td>
672
<td class="paramkey"></td>
674
<td class="paramtype">const T * </td>
675
<td class="paramname"> <em>buf</em></td><td> </td>
680
<td></td><td></td><td><code> [inline]</code></td>
686
<p>GAP block to bitblock conversion. </p>
687
<dl><dt><b>Parameters:</b></dt><dd>
688
<table border="0" cellspacing="2" cellpadding="0">
689
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
690
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
695
<p>Definition at line <a class="el" href="a00090_source.html#l01903">1903</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
697
<p>References <a class="el" href="a00090_source.html#l01885">bm::bit_block_set()</a>, and <a class="el" href="a00090_source.html#l01495">bm::gap_add_to_bitset()</a>.</p>
699
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00084_source.html#l01912">bm::bvector< Alloc, MS >::compare()</a>, <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00090_source.html#l01940">bm::gap_convert_to_bitset_smart()</a>.</p>
703
<a class="anchor" id="ga3f01bb7c1ae7983aa8c4ba82e1e3f54c"></a><!-- doxytag: member="bm::gap_convert_to_bitset_smart" ref="ga3f01bb7c1ae7983aa8c4ba82e1e3f54c" args="(unsigned *dest, const T *buf, id_t set_max)" -->
704
<div class="memitem">
705
<div class="memproto">
706
<div class="memtemplate">
707
template<typename T > </div>
708
<table class="memname">
710
<td class="memname">unsigned* bm::gap_convert_to_bitset_smart </td>
712
<td class="paramtype">unsigned * </td>
713
<td class="paramname"> <em>dest</em>, </td>
716
<td class="paramkey"></td>
718
<td class="paramtype">const T * </td>
719
<td class="paramname"> <em>buf</em>, </td>
722
<td class="paramkey"></td>
724
<td class="paramtype">id_t </td>
725
<td class="paramname"> <em>set_max</em></td><td> </td>
730
<td></td><td></td><td><code> [inline]</code></td>
736
<p>Smart GAP block to bitblock conversion. </p>
737
<p>Checks if GAP block is ALL-ZERO or ALL-ON. In those cases returns pointer on special static bitblocks.</p>
738
<dl><dt><b>Parameters:</b></dt><dd>
739
<table border="0" cellspacing="2" cellpadding="0">
740
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
741
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
742
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
747
<p>Definition at line <a class="el" href="a00090_source.html#l01940">1940</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
749
<p>References <a class="el" href="a00089_source.html#l00057">FULL_BLOCK_ADDR</a>, and <a class="el" href="a00090_source.html#l01903">bm::gap_convert_to_bitset()</a>.</p>
753
<a class="anchor" id="gaa7df7193094353ea24b8519debf745be"></a><!-- doxytag: member="bm::gap_find_in_block" ref="gaa7df7193094353ea24b8519debf745be" args="(const T *buf, unsigned nbit, bm::id_t *prev)" -->
754
<div class="memitem">
755
<div class="memproto">
756
<div class="memtemplate">
757
template<typename T > </div>
758
<table class="memname">
760
<td class="memname">int bm::gap_find_in_block </td>
762
<td class="paramtype">const T * </td>
763
<td class="paramname"> <em>buf</em>, </td>
766
<td class="paramkey"></td>
768
<td class="paramtype">unsigned </td>
769
<td class="paramname"> <em>nbit</em>, </td>
772
<td class="paramkey"></td>
774
<td class="paramtype"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> * </td>
775
<td class="paramname"> <em>prev</em></td><td> </td>
780
<td></td><td></td><td><code> [inline]</code></td>
786
<p>Searches for the next 1 bit in the GAP block. </p>
787
<dl><dt><b>Parameters:</b></dt><dd>
788
<table border="0" cellspacing="2" cellpadding="0">
789
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer </td></tr>
790
<tr><td valign="top"></td><td valign="top"><em>nbit</em> </td><td>- bit index to start checking from. </td></tr>
791
<tr><td valign="top"></td><td valign="top"><em>prev</em> </td><td>- returns previously checked value </td></tr>
796
<p>Definition at line <a class="el" href="a00090_source.html#l01190">1190</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
798
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00090_source.html#l00426">bm::gap_bfind()</a>, and <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>.</p>
802
<a class="anchor" id="gafd76869eb44fac688da5e26e0e74f41f"></a><!-- doxytag: member="bm::gap_free_elements" ref="gafd76869eb44fac688da5e26e0e74f41f" args="(const T *buf, const T *glevel_len)" -->
803
<div class="memitem">
804
<div class="memproto">
805
<div class="memtemplate">
806
template<typename T > </div>
807
<table class="memname">
809
<td class="memname">unsigned bm::gap_free_elements </td>
811
<td class="paramtype">const T * </td>
812
<td class="paramname"> <em>buf</em>, </td>
815
<td class="paramkey"></td>
817
<td class="paramtype">const T * </td>
818
<td class="paramname"> <em>glevel_len</em></td><td> </td>
823
<td></td><td></td><td><code> [inline]</code></td>
829
<p>Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length. </p>
830
<dl><dt><b>Parameters:</b></dt><dd>
831
<table border="0" cellspacing="2" cellpadding="0">
832
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer glevel_len - GAP lengths table</td></tr>
836
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of free GAP elements </dd></dl>
838
<p>Definition at line <a class="el" href="a00090_source.html#l02215">2215</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
840
<p>References <a class="el" href="a00090_source.html#l02136">bm::gap_capacity()</a>, and <a class="el" href="a00090_source.html#l02122">bm::gap_length()</a>.</p>
844
<a class="anchor" id="ga5d49355eb9dd7947699e20f3a2a75ef5"></a><!-- doxytag: member="bm::gap_init_range_block" ref="ga5d49355eb9dd7947699e20f3a2a75ef5" args="(T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)" -->
845
<div class="memitem">
846
<div class="memproto">
847
<div class="memtemplate">
848
template<class T > </div>
849
<table class="memname">
851
<td class="memname">void bm::gap_init_range_block </td>
853
<td class="paramtype">T * </td>
854
<td class="paramname"> <em>buf</em>, </td>
857
<td class="paramkey"></td>
859
<td class="paramtype">unsigned </td>
860
<td class="paramname"> <em>from</em>, </td>
863
<td class="paramkey"></td>
865
<td class="paramtype">unsigned </td>
866
<td class="paramname"> <em>to</em>, </td>
869
<td class="paramkey"></td>
871
<td class="paramtype">unsigned </td>
872
<td class="paramname"> <em>value</em>, </td>
875
<td class="paramkey"></td>
877
<td class="paramtype">unsigned </td>
878
<td class="paramname"> <em>set_max</em></td><td> </td>
883
<td></td><td></td><td><code> [inline]</code></td>
889
<p>Init gap block so it has block in it (can be whole block). </p>
890
<dl><dt><b>Parameters:</b></dt><dd>
891
<table border="0" cellspacing="2" cellpadding="0">
892
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
893
<tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>- one block start </td></tr>
894
<tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>- one block end </td></tr>
895
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- (block value)1 or 0 </td></tr>
896
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
901
<p>Definition at line <a class="el" href="a00090_source.html#l02014">2014</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
903
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00090_source.html#l01993">bm::gap_set_all()</a>.</p>
907
<a class="anchor" id="ga3f22bfde5dfe06d6d77dc2598b8c0845"></a><!-- doxytag: member="bm::gap_invert" ref="ga3f22bfde5dfe06d6d77dc2598b8c0845" args="(T *buf)" -->
908
<div class="memitem">
909
<div class="memproto">
910
<div class="memtemplate">
911
template<typename T > </div>
912
<table class="memname">
914
<td class="memname">void bm::gap_invert </td>
916
<td class="paramtype">T * </td>
917
<td class="paramname"> <em>buf</em></td>
918
<td> ) </td>
919
<td><code> [inline]</code></td>
925
<p>Inverts all bits in the GAP buffer. </p>
926
<dl><dt><b>Parameters:</b></dt><dd>
927
<table border="0" cellspacing="2" cellpadding="0">
928
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
933
<p>Definition at line <a class="el" href="a00090_source.html#l02064">2064</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
935
<p>Referenced by <a class="el" href="a00090_source.html#l03008">bm::gap_operation_or()</a>, and <a class="el" href="a00092_source.html#l01129">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
939
<a class="anchor" id="ga1427d43e91872f981c6311fa76ab5633"></a><!-- doxytag: member="bm::gap_is_all_one" ref="ga1427d43e91872f981c6311fa76ab5633" args="(const T *buf, unsigned set_max)" -->
940
<div class="memitem">
941
<div class="memproto">
942
<div class="memtemplate">
943
template<typename T > </div>
944
<table class="memname">
946
<td class="memname">bool bm::gap_is_all_one </td>
948
<td class="paramtype">const T * </td>
949
<td class="paramname"> <em>buf</em>, </td>
952
<td class="paramkey"></td>
954
<td class="paramtype">unsigned </td>
955
<td class="paramname"> <em>set_max</em></td><td> </td>
960
<td></td><td></td><td><code> [inline]</code></td>
966
<p>Checks if GAP block is all-one. </p>
967
<dl><dt><b>Parameters:</b></dt><dd>
968
<table border="0" cellspacing="2" cellpadding="0">
969
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
970
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
974
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-one. </dd></dl>
976
<p>Definition at line <a class="el" href="a00090_source.html#l02110">2110</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
980
<a class="anchor" id="ga690ff7c8b16e1821a77663b7194267e7"></a><!-- doxytag: member="bm::gap_is_all_zero" ref="ga690ff7c8b16e1821a77663b7194267e7" args="(const T *buf, unsigned set_max)" -->
981
<div class="memitem">
982
<div class="memproto">
983
<div class="memtemplate">
984
template<typename T > </div>
985
<table class="memname">
987
<td class="memname">bool bm::gap_is_all_zero </td>
989
<td class="paramtype">const T * </td>
990
<td class="paramname"> <em>buf</em>, </td>
993
<td class="paramkey"></td>
995
<td class="paramtype">unsigned </td>
996
<td class="paramname"> <em>set_max</em></td><td> </td>
1001
<td></td><td></td><td><code> [inline]</code></td>
1005
<div class="memdoc">
1007
<p>Temporary inverts all bits in the GAP buffer. </p>
1008
<p>In this function const-ness of the buffer means nothing. Calling this function again restores the status of the buffer.</p>
1009
<dl><dt><b>Parameters:</b></dt><dd>
1010
<table border="0" cellspacing="2" cellpadding="0">
1011
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. (Buffer IS changed)</td></tr>
1015
<p>Checks if GAP block is all-zero. </p>
1016
<dl><dt><b>Parameters:</b></dt><dd>
1017
<table border="0" cellspacing="2" cellpadding="0">
1018
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1019
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1023
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-zero. </dd></dl>
1025
<p>Definition at line <a class="el" href="a00090_source.html#l02096">2096</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1027
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>, and <a class="el" href="a00084_source.html#l01912">bm::bvector< Alloc, MS >::compare()</a>.</p>
1031
<a class="anchor" id="gad6bfb9da9950b0df8983a9faf9db5042"></a><!-- doxytag: member="bm::gap_length" ref="gad6bfb9da9950b0df8983a9faf9db5042" args="(const T *buf)" -->
1032
<div class="memitem">
1033
<div class="memproto">
1034
<div class="memtemplate">
1035
template<typename T > </div>
1036
<table class="memname">
1038
<td class="memname">unsigned bm::gap_length </td>
1040
<td class="paramtype">const T * </td>
1041
<td class="paramname"> <em>buf</em></td>
1042
<td> ) </td>
1043
<td><code> [inline]</code></td>
1047
<div class="memdoc">
1049
<p>Returs GAP block length. </p>
1050
<dl><dt><b>Parameters:</b></dt><dd>
1051
<table border="0" cellspacing="2" cellpadding="0">
1052
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1056
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block length. </dd></dl>
1058
<p>Definition at line <a class="el" href="a00090_source.html#l02122">2122</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1060
<p>Referenced by <a class="el" href="a00084_source.html#l02042">bm::bvector< Alloc, MS >::calc_stat()</a>, <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>, <a class="el" href="a00092_source.html#l00653">bm::serializer< BV >::encode_gap_block()</a>, <a class="el" href="a00092_source.html#l00569">bm::serializer< BV >::gamma_gap_block()</a>, <a class="el" href="a00090_source.html#l02215">bm::gap_free_elements()</a>, and <a class="el" href="a00092_source.html#l01129">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
1064
<a class="anchor" id="ga1defe73aa4227a0e7204363ac6bb1ac1"></a><!-- doxytag: member="bm::gap_level" ref="ga1defe73aa4227a0e7204363ac6bb1ac1" args="(const T *buf)" -->
1065
<div class="memitem">
1066
<div class="memproto">
1067
<div class="memtemplate">
1068
template<typename T > </div>
1069
<table class="memname">
1071
<td class="memname">unsigned bm::gap_level </td>
1073
<td class="paramtype">const T * </td>
1074
<td class="paramname"> <em>buf</em></td>
1075
<td> ) </td>
1076
<td><code> [inline]</code></td>
1080
<div class="memdoc">
1082
<p>Returs GAP blocks capacity level. </p>
1083
<dl><dt><b>Parameters:</b></dt><dd>
1084
<table border="0" cellspacing="2" cellpadding="0">
1085
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1089
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. </dd></dl>
1091
<p>Definition at line <a class="el" href="a00090_source.html#l02164">2164</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1095
<a class="anchor" id="ga94a5371b5dc6a1560d95d7c2dde88815"></a><!-- doxytag: member="bm::gap_limit" ref="ga94a5371b5dc6a1560d95d7c2dde88815" args="(const T *buf, const T *glevel_len)" -->
1096
<div class="memitem">
1097
<div class="memproto">
1098
<div class="memtemplate">
1099
template<typename T > </div>
1100
<table class="memname">
1102
<td class="memname">unsigned bm::gap_limit </td>
1104
<td class="paramtype">const T * </td>
1105
<td class="paramname"> <em>buf</em>, </td>
1108
<td class="paramkey"></td>
1110
<td class="paramtype">const T * </td>
1111
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1116
<td></td><td></td><td><code> [inline]</code></td>
1120
<div class="memdoc">
1122
<p>Returs GAP block capacity limit. </p>
1123
<dl><dt><b>Parameters:</b></dt><dd>
1124
<table border="0" cellspacing="2" cellpadding="0">
1125
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1126
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- GAP lengths table (<a class="el" href="a00066.html" title="Default GAP lengths table.">gap_len_table</a>) </td></tr>
1130
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block limit. </dd></dl>
1132
<p>Definition at line <a class="el" href="a00090_source.html#l02151">2151</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1134
<p>Referenced by <a class="el" href="a00086_source.html#l01105">bm::combine_or()</a>, <a class="el" href="a00086_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00086_source.html#l01184">bm::combine_xor()</a>, and <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>.</p>
1138
<a class="anchor" id="ga1666464d22f7fd473db9aafcf2f77a63"></a><!-- doxytag: member="bm::gap_operation_and" ref="ga1666464d22f7fd473db9aafcf2f77a63" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1139
<div class="memitem">
1140
<div class="memproto">
1141
<table class="memname">
1143
<td class="memname">gap_word_t* bm::gap_operation_and </td>
1145
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1146
<td class="paramname"> <em>vect1</em>, </td>
1149
<td class="paramkey"></td>
1151
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1152
<td class="paramname"> <em>vect2</em>, </td>
1155
<td class="paramkey"></td>
1157
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1158
<td class="paramname"> <em>tmp_buf</em>, </td>
1161
<td class="paramkey"></td>
1163
<td class="paramtype">unsigned & </td>
1164
<td class="paramname"> <em>dsize</em></td><td> </td>
1169
<td></td><td></td><td><code> [inline]</code></td>
1173
<div class="memdoc">
1175
<p>GAP AND operation. </p>
1176
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1177
<dl><dt><b>Parameters:</b></dt><dd>
1178
<table border="0" cellspacing="2" cellpadding="0">
1179
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1180
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1181
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1182
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out size of the destination </td></tr>
1186
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf OR vect1) </dd></dl>
1188
<p>Definition at line <a class="el" href="a00090_source.html#l02912">2912</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1190
<p>References <a class="el" href="a00090_source.html#l02883">bm::and_op()</a>, and <a class="el" href="a00090_source.html#l00873">bm::gap_buff_op()</a>.</p>
1192
<p>Referenced by <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
1196
<a class="anchor" id="gafb24a1e2588c5670df6facc537594d9d"></a><!-- doxytag: member="bm::gap_operation_any_and" ref="gafb24a1e2588c5670df6facc537594d9d" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1197
<div class="memitem">
1198
<div class="memproto">
1199
<table class="memname">
1201
<td class="memname">unsigned bm::gap_operation_any_and </td>
1203
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1204
<td class="paramname"> <em>vect1</em>, </td>
1207
<td class="paramkey"></td>
1209
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1210
<td class="paramname"> <em>vect2</em></td><td> </td>
1215
<td></td><td></td><td><code> [inline]</code></td>
1219
<div class="memdoc">
1221
<p>GAP AND operation test. </p>
1222
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1223
<dl><dt><b>Parameters:</b></dt><dd>
1224
<table border="0" cellspacing="2" cellpadding="0">
1225
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1226
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1230
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1232
<p>Definition at line <a class="el" href="a00090_source.html#l02935">2935</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1234
<p>References <a class="el" href="a00090_source.html#l02883">bm::and_op()</a>, and <a class="el" href="a00090_source.html#l00955">bm::gap_buff_any_op()</a>.</p>
1236
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
1240
<a class="anchor" id="gae0b1d4aca0ddfa58d83e4b089a4f35d9"></a><!-- doxytag: member="bm::gap_operation_any_sub" ref="gae0b1d4aca0ddfa58d83e4b089a4f35d9" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1241
<div class="memitem">
1242
<div class="memproto">
1243
<table class="memname">
1245
<td class="memname">unsigned bm::gap_operation_any_sub </td>
1247
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1248
<td class="paramname"> <em>vect1</em>, </td>
1251
<td class="paramkey"></td>
1253
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1254
<td class="paramname"> <em>vect2</em></td><td> </td>
1259
<td></td><td></td><td><code> [inline]</code></td>
1263
<div class="memdoc">
1265
<p>GAP SUB operation test. </p>
1266
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1267
<dl><dt><b>Parameters:</b></dt><dd>
1268
<table border="0" cellspacing="2" cellpadding="0">
1269
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1270
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1274
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1276
<p>Definition at line <a class="el" href="a00090_source.html#l03062">3062</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1278
<p>References <a class="el" href="a00090_source.html#l02883">bm::and_op()</a>, and <a class="el" href="a00090_source.html#l00955">bm::gap_buff_any_op()</a>.</p>
1280
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
1284
<a class="anchor" id="gab46833bf0d7813f868a1608f70db12de"></a><!-- doxytag: member="bm::gap_operation_any_xor" ref="gab46833bf0d7813f868a1608f70db12de" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1285
<div class="memitem">
1286
<div class="memproto">
1287
<table class="memname">
1289
<td class="memname">unsigned bm::gap_operation_any_xor </td>
1291
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1292
<td class="paramname"> <em>vect1</em>, </td>
1295
<td class="paramkey"></td>
1297
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1298
<td class="paramname"> <em>vect2</em></td><td> </td>
1303
<td></td><td></td><td><code> [inline]</code></td>
1307
<div class="memdoc">
1309
<p>GAP XOR operation test. </p>
1310
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1311
<dl><dt><b>Parameters:</b></dt><dd>
1312
<table border="0" cellspacing="2" cellpadding="0">
1313
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1314
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1318
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1320
<p>Definition at line <a class="el" href="a00090_source.html#l02983">2983</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1322
<p>References <a class="el" href="a00090_source.html#l00955">bm::gap_buff_any_op()</a>, and <a class="el" href="a00090_source.html#l02890">bm::xor_op()</a>.</p>
1324
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
1328
<a class="anchor" id="gacda280af8910ae5fde37731a3a7a1226"></a><!-- doxytag: member="bm::gap_operation_or" ref="gacda280af8910ae5fde37731a3a7a1226" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1329
<div class="memitem">
1330
<div class="memproto">
1331
<table class="memname">
1333
<td class="memname">gap_word_t* bm::gap_operation_or </td>
1335
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1336
<td class="paramname"> <em>vect1</em>, </td>
1339
<td class="paramkey"></td>
1341
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1342
<td class="paramname"> <em>vect2</em>, </td>
1345
<td class="paramkey"></td>
1347
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1348
<td class="paramname"> <em>tmp_buf</em>, </td>
1351
<td class="paramkey"></td>
1353
<td class="paramtype">unsigned & </td>
1354
<td class="paramname"> <em>dsize</em></td><td> </td>
1359
<td></td><td></td><td><code> [inline]</code></td>
1363
<div class="memdoc">
1365
<p>GAP OR operation. </p>
1366
<p>Function performs OR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1367
<dl><dt><b>Parameters:</b></dt><dd>
1368
<table border="0" cellspacing="2" cellpadding="0">
1369
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1370
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1371
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1372
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size</td></tr>
1376
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1378
<p>Definition at line <a class="el" href="a00090_source.html#l03008">3008</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1380
<p>References <a class="el" href="a00090_source.html#l02883">bm::and_op()</a>, <a class="el" href="a00090_source.html#l00873">bm::gap_buff_op()</a>, and <a class="el" href="a00090_source.html#l02064">bm::gap_invert()</a>.</p>
1382
<p>Referenced by <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>, and <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
1386
<a class="anchor" id="gabe4c83e5e162c38e297116dd1cd05ac4"></a><!-- doxytag: member="bm::gap_operation_sub" ref="gabe4c83e5e162c38e297116dd1cd05ac4" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1387
<div class="memitem">
1388
<div class="memproto">
1389
<table class="memname">
1391
<td class="memname">gap_word_t* bm::gap_operation_sub </td>
1393
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1394
<td class="paramname"> <em>vect1</em>, </td>
1397
<td class="paramkey"></td>
1399
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1400
<td class="paramname"> <em>vect2</em>, </td>
1403
<td class="paramkey"></td>
1405
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1406
<td class="paramname"> <em>tmp_buf</em>, </td>
1409
<td class="paramkey"></td>
1411
<td class="paramtype">unsigned & </td>
1412
<td class="paramname"> <em>dsize</em></td><td> </td>
1417
<td></td><td></td><td><code> [inline]</code></td>
1421
<div class="memdoc">
1423
<p>GAP SUB (AND NOT) operation. </p>
1424
<p>Function performs SUB logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1425
<dl><dt><b>Parameters:</b></dt><dd>
1426
<table border="0" cellspacing="2" cellpadding="0">
1427
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1428
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1429
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1430
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size</td></tr>
1434
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1436
<p>Definition at line <a class="el" href="a00090_source.html#l03038">3038</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1438
<p>References <a class="el" href="a00090_source.html#l02883">bm::and_op()</a>, and <a class="el" href="a00090_source.html#l00873">bm::gap_buff_op()</a>.</p>
1440
<p>Referenced by <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
1444
<a class="anchor" id="gaa5e07ad0256bf784ad3397acbbd23bb2"></a><!-- doxytag: member="bm::gap_operation_xor" ref="gaa5e07ad0256bf784ad3397acbbd23bb2" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1445
<div class="memitem">
1446
<div class="memproto">
1447
<table class="memname">
1449
<td class="memname">gap_word_t* bm::gap_operation_xor </td>
1451
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1452
<td class="paramname"> <em>vect1</em>, </td>
1455
<td class="paramkey"></td>
1457
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1458
<td class="paramname"> <em>vect2</em>, </td>
1461
<td class="paramkey"></td>
1463
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1464
<td class="paramname"> <em>tmp_buf</em>, </td>
1467
<td class="paramkey"></td>
1469
<td class="paramtype">unsigned & </td>
1470
<td class="paramname"> <em>dsize</em></td><td> </td>
1475
<td></td><td></td><td><code> [inline]</code></td>
1479
<div class="memdoc">
1481
<p>GAP XOR operation. </p>
1482
<p>Function performs XOR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
1483
<dl><dt><b>Parameters:</b></dt><dd>
1484
<table border="0" cellspacing="2" cellpadding="0">
1485
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1486
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1487
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1488
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size </td></tr>
1492
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1494
<p>Definition at line <a class="el" href="a00090_source.html#l02959">2959</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1496
<p>References <a class="el" href="a00090_source.html#l00873">bm::gap_buff_op()</a>, and <a class="el" href="a00090_source.html#l02890">bm::xor_op()</a>.</p>
1498
<p>Referenced by <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
1502
<a class="anchor" id="gacc578010f3700940829c600c812d23b1"></a><!-- doxytag: member="bm::gap_overhead" ref="gacc578010f3700940829c600c812d23b1" args="(const T *length, const T *length_end, const T *glevel_len)" -->
1503
<div class="memitem">
1504
<div class="memproto">
1505
<div class="memtemplate">
1506
template<typename T > </div>
1507
<table class="memname">
1509
<td class="memname">unsigned bm::gap_overhead </td>
1511
<td class="paramtype">const T * </td>
1512
<td class="paramname"> <em>length</em>, </td>
1515
<td class="paramkey"></td>
1517
<td class="paramtype">const T * </td>
1518
<td class="paramname"> <em>length_end</em>, </td>
1521
<td class="paramkey"></td>
1523
<td class="paramtype">const T * </td>
1524
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1529
<td></td><td></td><td><code> [inline]</code></td>
1533
<div class="memdoc">
1535
<p>Convert bit block into an array of ints corresponding to 1 bits. </p>
1536
<p>OBSOLETE function</p>
1537
<p>Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table). </p>
1539
<p>Definition at line <a class="el" href="a00090_source.html#l04422">4422</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1541
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00090_source.html#l02194">bm::gap_calc_level()</a>, and <a class="el" href="a00088_source.html#l00074">bm::gap_levels</a>.</p>
1543
<p>Referenced by <a class="el" href="a00090_source.html#l04450">bm::improve_gap_levels()</a>.</p>
1547
<a class="anchor" id="gaef53b2877ff369badd7bb25b26bb9029"></a><!-- doxytag: member="bm::gap_set_all" ref="gaef53b2877ff369badd7bb25b26bb9029" args="(T *buf, unsigned set_max, unsigned value)" -->
1548
<div class="memitem">
1549
<div class="memproto">
1550
<div class="memtemplate">
1551
template<class T > </div>
1552
<table class="memname">
1554
<td class="memname">void bm::gap_set_all </td>
1556
<td class="paramtype">T * </td>
1557
<td class="paramname"> <em>buf</em>, </td>
1560
<td class="paramkey"></td>
1562
<td class="paramtype">unsigned </td>
1563
<td class="paramname"> <em>set_max</em>, </td>
1566
<td class="paramkey"></td>
1568
<td class="paramtype">unsigned </td>
1569
<td class="paramname"> <em>value</em></td><td> </td>
1574
<td></td><td></td><td><code> [inline]</code></td>
1578
<div class="memdoc">
1580
<p>Sets all bits to 0 or 1 (GAP). </p>
1581
<dl><dt><b>Parameters:</b></dt><dd>
1582
<table border="0" cellspacing="2" cellpadding="0">
1583
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1584
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1589
<p>Definition at line <a class="el" href="a00090_source.html#l01993">1993</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1591
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>.</p>
1593
<p>Referenced by <a class="el" href="a00090_source.html#l02014">bm::gap_init_range_block()</a>, and <a class="el" href="a00092_source.html#l01129">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
1597
<a class="anchor" id="ga69186bd13bda27e04b3e33683ff884c2"></a><!-- doxytag: member="bm::gap_set_value" ref="ga69186bd13bda27e04b3e33683ff884c2" args="(unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)" -->
1598
<div class="memitem">
1599
<div class="memproto">
1600
<div class="memtemplate">
1601
template<typename T > </div>
1602
<table class="memname">
1604
<td class="memname">unsigned bm::gap_set_value </td>
1606
<td class="paramtype">unsigned </td>
1607
<td class="paramname"> <em>val</em>, </td>
1610
<td class="paramkey"></td>
1612
<td class="paramtype">T *BMRESTRICT </td>
1613
<td class="paramname"> <em>buf</em>, </td>
1616
<td class="paramkey"></td>
1618
<td class="paramtype">unsigned </td>
1619
<td class="paramname"> <em>pos</em>, </td>
1622
<td class="paramkey"></td>
1624
<td class="paramtype">unsigned *BMRESTRICT </td>
1625
<td class="paramname"> <em>is_set</em></td><td> </td>
1630
<td></td><td></td><td><code> [inline]</code></td>
1634
<div class="memdoc">
1636
<p>Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument. </p>
1637
<dl><dt><b>Parameters:</b></dt><dd>
1638
<table border="0" cellspacing="2" cellpadding="0">
1639
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
1640
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
1641
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
1645
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function.</dd></dl>
1646
<p>Sets or clears bit in the GAP buffer. </p>
1647
<dl><dt><b>Parameters:</b></dt><dd>
1648
<table border="0" cellspacing="2" cellpadding="0">
1649
<tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>- new bit value </td></tr>
1650
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer. </td></tr>
1651
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- Index of bit to set. </td></tr>
1652
<tr><td valign="top"></td><td valign="top"><em>is_set</em> </td><td>- (OUT) flag if bit was actually set.</td></tr>
1656
<dl class="return"><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
1658
<p>Definition at line <a class="el" href="a00090_source.html#l01098">1098</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1660
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00090_source.html#l00426">bm::gap_bfind()</a>, and <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>.</p>
1662
<p>Referenced by <a class="el" href="a00086_source.html#l01105">bm::combine_or()</a>, <a class="el" href="a00086_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00086_source.html#l01184">bm::combine_xor()</a>, <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>, <a class="el" href="a00092_source.html#l01129">bm::deseriaizer_base< DEC >::read_gap_block()</a>, and <a class="el" href="a00099_source.html#l00101">bm::miniset< A, N >::set()</a>.</p>
1666
<a class="anchor" id="ga08e0ae8b2fd5869aa31cfad7d47177c4"></a><!-- doxytag: member="bm::gap_sub_to_bitset" ref="ga08e0ae8b2fd5869aa31cfad7d47177c4" args="(unsigned *dest, const T *buf)" -->
1667
<div class="memitem">
1668
<div class="memproto">
1669
<div class="memtemplate">
1670
template<typename T > </div>
1671
<table class="memname">
1673
<td class="memname">void bm::gap_sub_to_bitset </td>
1675
<td class="paramtype">unsigned * </td>
1676
<td class="paramname"> <em>dest</em>, </td>
1679
<td class="paramkey"></td>
1681
<td class="paramtype">const T * </td>
1682
<td class="paramname"> <em>buf</em></td><td> </td>
1687
<td></td><td></td><td><code> [inline]</code></td>
1691
<div class="memdoc">
1693
<p>SUB (AND NOT) GAP block to bitblock. </p>
1694
<dl><dt><b>Parameters:</b></dt><dd>
1695
<table border="0" cellspacing="2" cellpadding="0">
1696
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
1697
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1702
<p>Definition at line <a class="el" href="a00090_source.html#l01431">1431</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1704
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00090_source.html#l01307">bm::sub_bit_block()</a>.</p>
1708
<a class="anchor" id="ga866352ef5986a7d2b709795d127b666b"></a><!-- doxytag: member="bm::gap_test" ref="ga866352ef5986a7d2b709795d127b666b" args="(const T *buf, unsigned pos)" -->
1709
<div class="memitem">
1710
<div class="memproto">
1711
<div class="memtemplate">
1712
template<typename T > </div>
1713
<table class="memname">
1715
<td class="memname">unsigned bm::gap_test </td>
1717
<td class="paramtype">const T * </td>
1718
<td class="paramname"> <em>buf</em>, </td>
1721
<td class="paramkey"></td>
1723
<td class="paramtype">unsigned </td>
1724
<td class="paramname"> <em>pos</em></td><td> </td>
1729
<td></td><td></td><td><code> [inline]</code></td>
1733
<div class="memdoc">
1735
<p>Tests if bit = pos is true. </p>
1736
<dl><dt><b>Parameters:</b></dt><dd>
1737
<table border="0" cellspacing="2" cellpadding="0">
1738
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1739
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- index of the element. </td></tr>
1743
<dl class="return"><dt><b>Returns:</b></dt><dd>true if position is in "1" gap </dd></dl>
1745
<p>Definition at line <a class="el" href="a00090_source.html#l00454">454</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1747
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00088_source.html#l00071">bm::gap_max_bits</a>.</p>
1749
<p>Referenced by <a class="el" href="a00086_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00086_source.html#l01184">bm::combine_xor()</a>, <a class="el" href="a00084_source.html#l01799">bm::bvector< Alloc, MS >::get_bit()</a>, and <a class="el" href="a00099_source.html#l00090">bm::miniset< A, N >::test()</a>.</p>
1753
<a class="anchor" id="gab939656d4ea54fd3868aa236cdb20b82"></a><!-- doxytag: member="bm::gap_xor_to_bitset" ref="gab939656d4ea54fd3868aa236cdb20b82" args="(unsigned *dest, const T *buf)" -->
1754
<div class="memitem">
1755
<div class="memproto">
1756
<div class="memtemplate">
1757
template<typename T > </div>
1758
<table class="memname">
1760
<td class="memname">void bm::gap_xor_to_bitset </td>
1762
<td class="paramtype">unsigned * </td>
1763
<td class="paramname"> <em>dest</em>, </td>
1766
<td class="paramkey"></td>
1768
<td class="paramtype">const T * </td>
1769
<td class="paramname"> <em>buf</em></td><td> </td>
1774
<td></td><td></td><td><code> [inline]</code></td>
1778
<div class="memdoc">
1780
<p>XOR GAP block to bitblock. </p>
1781
<dl><dt><b>Parameters:</b></dt><dd>
1782
<table border="0" cellspacing="2" cellpadding="0">
1783
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
1784
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1789
<p>Definition at line <a class="el" href="a00090_source.html#l01463">1463</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1791
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00090_source.html#l01369">bm::xor_bit_block()</a>.</p>
1795
<a class="anchor" id="ga406952734f1b05962941b32e37b3eb96"></a><!-- doxytag: member="bm::gapcmp" ref="ga406952734f1b05962941b32e37b3eb96" args="(const T *buf1, const T *buf2)" -->
1796
<div class="memitem">
1797
<div class="memproto">
1798
<div class="memtemplate">
1799
template<typename T > </div>
1800
<table class="memname">
1802
<td class="memname">int bm::gapcmp </td>
1804
<td class="paramtype">const T * </td>
1805
<td class="paramname"> <em>buf1</em>, </td>
1808
<td class="paramkey"></td>
1810
<td class="paramtype">const T * </td>
1811
<td class="paramname"> <em>buf2</em></td><td> </td>
1816
<td></td><td></td><td><code> [inline]</code></td>
1820
<div class="memdoc">
1822
<p>Lexicographical comparison of GAP buffers. </p>
1823
<dl><dt><b>Parameters:</b></dt><dd>
1824
<table border="0" cellspacing="2" cellpadding="0">
1825
<tr><td valign="top"></td><td valign="top"><em>buf1</em> </td><td>- First GAP buffer pointer. </td></tr>
1826
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second GAP buffer pointer. </td></tr>
1830
<dl class="return"><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
1832
<p>Definition at line <a class="el" href="a00090_source.html#l00806">806</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1834
<p>Referenced by <a class="el" href="a00084_source.html#l01912">bm::bvector< Alloc, MS >::compare()</a>.</p>
1838
<a class="anchor" id="ga2daff3a0ceda6fef87d3b0e892da5813"></a><!-- doxytag: member="bm::improve_gap_levels" ref="ga2daff3a0ceda6fef87d3b0e892da5813" args="(const T *length, const T *length_end, T *glevel_len)" -->
1839
<div class="memitem">
1840
<div class="memproto">
1841
<div class="memtemplate">
1842
template<typename T > </div>
1843
<table class="memname">
1845
<td class="memname">bool bm::improve_gap_levels </td>
1847
<td class="paramtype">const T * </td>
1848
<td class="paramname"> <em>length</em>, </td>
1851
<td class="paramkey"></td>
1853
<td class="paramtype">const T * </td>
1854
<td class="paramname"> <em>length_end</em>, </td>
1857
<td class="paramkey"></td>
1859
<td class="paramtype">T * </td>
1860
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1865
<td></td><td></td><td><code> [inline]</code></td>
1869
<div class="memdoc">
1871
<p>Finds optimal gap blocks lengths. </p>
1872
<dl><dt><b>Parameters:</b></dt><dd>
1873
<table border="0" cellspacing="2" cellpadding="0">
1874
<tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>- first element of GAP lengths array </td></tr>
1875
<tr><td valign="top"></td><td valign="top"><em>length_end</em> </td><td>- end of the GAP lengths array </td></tr>
1876
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- destination GAP lengths array </td></tr>
1881
<p>Definition at line <a class="el" href="a00090_source.html#l04450">4450</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1883
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00088_source.html#l00074">bm::gap_levels</a>, <a class="el" href="a00088_source.html#l00070">bm::gap_max_buff_len</a>, and <a class="el" href="a00090_source.html#l04422">bm::gap_overhead()</a>.</p>
1885
<p>Referenced by <a class="el" href="a00084_source.html#l01875">bm::bvector< Alloc, MS >::optimize_gap_size()</a>.</p>
1889
<a class="anchor" id="ga501aa9bf029e7f9ea9518e7003fe5549"></a><!-- doxytag: member="bm::set_gap_level" ref="ga501aa9bf029e7f9ea9518e7003fe5549" args="(T *buf, unsigned level)" -->
1890
<div class="memitem">
1891
<div class="memproto">
1892
<div class="memtemplate">
1893
template<typename T > </div>
1894
<table class="memname">
1896
<td class="memname">void bm::set_gap_level </td>
1898
<td class="paramtype">T * </td>
1899
<td class="paramname"> <em>buf</em>, </td>
1902
<td class="paramkey"></td>
1904
<td class="paramtype">unsigned </td>
1905
<td class="paramname"> <em>level</em></td><td> </td>
1910
<td></td><td></td><td><code> [inline]</code></td>
1914
<div class="memdoc">
1916
<p>Sets GAP block capacity level. </p>
1917
<dl><dt><b>Parameters:</b></dt><dd>
1918
<table border="0" cellspacing="2" cellpadding="0">
1919
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1920
<tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>new GAP block capacity level. </td></tr>
1925
<p>Definition at line <a class="el" href="a00090_source.html#l02177">2177</a> of file <a class="el" href="a00090_source.html">bmfunc.h</a>.</p>
1927
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, and <a class="el" href="a00088_source.html#l00074">bm::gap_levels</a>.</p>
1929
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, and <a class="el" href="a00092_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>.</p>
1934
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Nov 22 10:49:38 2009 for BitMagic by
416
1935
<a href="http://www.doxygen.org/index.html">
417
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
1936
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>