23
23
<div class="contents">
24
<h1>The Main bvector<> Group<br/>
24
<h1>GAP functions<br/>
26
[<a class="el" href="a00118.html">BitMagic C++ Library</a>]</small>
26
[<a class="el" href="a00117.html">BitMagic C++ Library</a>]</small>
28
<p>This is the main group.
29
<a href="#_details">More...</a></p>
31
28
<p><div class="dynheader">
32
Collaboration diagram for The Main bvector<> Group:</div>
29
Collaboration diagram for GAP functions:</div>
33
30
<div class="dynsection">
34
31
<center><table><tr><td><img src="a00119.png" border="0" alt="" usemap="#a00119_map"/>
35
32
<map name="a00119_map" id="a00119">
36
<area shape="rect" href="a00118.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
33
<area shape="rect" href="a00117.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
39
36
<table border="0" cellpadding="0" cellspacing="0">
40
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
41
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html">bm::bvector< Alloc, MS ></a></td></tr>
42
<tr><td class="mdescLeft"> </td><td class="mdescRight">bitvector with runtime compression of bits. <a href="a00044.html#_details">More...</a><br/></td></tr>
43
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html">bm::bvector< Alloc, MS >::reference</a></td></tr>
44
<tr><td class="mdescLeft"> </td><td class="mdescRight">Class <a class="el" href="a00081.html" title="Class reference implements an object for bit assignment.">reference</a> implements an object for bit assignment. <a href="a00081.html#_details">More...</a><br/></td></tr>
45
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html">bm::bvector< Alloc, MS >::iterator_base</a></td></tr>
46
<tr><td class="mdescLeft"> </td><td class="mdescRight">Base class for all iterators. <a href="a00072.html#_details">More...</a><br/></td></tr>
47
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html">bm::bvector< Alloc, MS >::insert_iterator</a></td></tr>
48
<tr><td class="mdescLeft"> </td><td class="mdescRight">Output iterator iterator designed to set "ON" bits based on input sequence of integers (bit indeces). <a href="a00071.html#_details">More...</a><br/></td></tr>
49
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00063.html">bm::bvector< Alloc, MS >::enumerator</a></td></tr>
50
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constant input iterator designed to enumerate "ON" bits. <a href="a00063.html#_details">More...</a><br/></td></tr>
51
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html">bm::bvector< Alloc, MS >::counted_enumerator</a></td></tr>
52
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constant input iterator designed to enumerate "ON" bits <a class="el" href="a00049.html" title="Constant input iterator designed to enumerate "ON" bits counted_enumerator...">counted_enumerator</a> keeps bitcount, ie number of ON bits starting from the position 0 in the bit string up to the currently enumerated bit. <a href="a00049.html#_details">More...</a><br/></td></tr>
53
<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html">bm::bv_statistics</a></td></tr>
54
<tr><td class="mdescLeft"> </td><td class="mdescRight">Structure with statistical information about bitset's memory allocation details. <a href="a00043.html#_details">More...</a><br/></td></tr>
55
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
56
<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gad0b87b3b7292383a864d27feaf1c9eff">bm::strategy</a> { <a class="el" href="a00119.html#ggad0b87b3b7292383a864d27feaf1c9effa40920ae0ef7b4411d60463d8f576b5ba">bm::BM_BIT</a> = 0,
57
<a class="el" href="a00119.html#ggad0b87b3b7292383a864d27feaf1c9effa7fe09d1d7c62a813db922c396c0cbc9c">bm::BM_GAP</a> = 1
59
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Block allocation strategies. </p>
60
<a href="a00119.html#gad0b87b3b7292383a864d27feaf1c9eff">More...</a><br/></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="a00119.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="a00119.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="a00119.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="a00119.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 , class F > </td></tr>
56
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga9a5ff7782f3de0d1c699eb72d432f255">bm::gap_buff_count_op</a> (const T *vect1, const T *vect2, F f)</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="#ga9a5ff7782f3de0d1c699eb72d432f255"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga69186bd13bda27e04b3e33683ff884c2">bm::gap_set_value</a> (unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)</td></tr>
60
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets or clears bit in the GAP buffer. <a href="#ga69186bd13bda27e04b3e33683ff884c2"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gadae4001e2834125b9c08b154a8a874a7">bm::gap_add_value</a> (T *buf, T pos)</td></tr>
63
<tr><td class="mdescLeft"> </td><td class="mdescRight">Add new value to the end of GAP buffer. <a href="#gadae4001e2834125b9c08b154a8a874a7"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga550394048c163d41a135fb9068f2251b">bm::gap_set_array</a> (T *buf, const T *arr, unsigned len)</td></tr>
66
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert array to GAP buffer. <a href="#ga550394048c163d41a135fb9068f2251b"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga68e53a96e93a31e8a323d10c7a2f21f5">bm::bit_array_compute_gaps</a> (const T *arr, unsigned len)</td></tr>
69
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute number of GAPs in bit-array. <a href="#ga68e53a96e93a31e8a323d10c7a2f21f5"></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">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gaa7df7193094353ea24b8519debf745be">bm::gap_find_in_block</a> (const T *buf, unsigned nbit, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *prev)</td></tr>
72
<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>
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="a00119.html#gabcedad4aea1a503c30f10e6d09b523f2">bm::gap_sub_to_bitset</a> (unsigned *BMRESTRICT dest, const T *BMRESTRICT buf)</td></tr>
75
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB (AND NOT) GAP block to bitblock. <a href="#gabcedad4aea1a503c30f10e6d09b523f2"></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="a00119.html#ga63c33428c2f5eac9f69d663203cd2172">bm::gap_xor_to_bitset</a> (unsigned *BMRESTRICT dest, const T *BMRESTRICT buf)</td></tr>
78
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR GAP block to bitblock. <a href="#ga63c33428c2f5eac9f69d663203cd2172"></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga78510a39b6e8c6b8904ecbffb6ab215b">bm::gap_add_to_bitset_l</a> (unsigned *dest, const T *buf, unsigned buf_len)</td></tr>
81
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds(OR) GAP block to bitblock. <a href="#ga78510a39b6e8c6b8904ecbffb6ab215b"></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga12615cd62f2e5367e1bc688d00a2188f">bm::gap_add_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
84
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds(OR) GAP block to bitblock. <a href="#ga12615cd62f2e5367e1bc688d00a2188f"></a><br/></td></tr>
85
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
86
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gafe6f72a009618290eeab3cddee869543">bm::gap_and_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
87
<tr><td class="mdescLeft"> </td><td class="mdescRight">ANDs GAP block to bitblock. <a href="#gafe6f72a009618290eeab3cddee869543"></a><br/></td></tr>
88
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
89
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga4862f4dcdcb7c0575e2e2db9e5f2a849">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
90
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga4862f4dcdcb7c0575e2e2db9e5f2a849"></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="a00119.html#ga1dd58e3576239c49010b62a3add42417">bm::gap_convert_to_bitset_l</a> (unsigned *dest, const T *buf, unsigned buf_len)</td></tr>
93
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga1dd58e3576239c49010b62a3add42417"></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga9bb80c42ee0ecf8f2af8250d7f5d327b">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf, unsigned dest_len)</td></tr>
96
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga9bb80c42ee0ecf8f2af8250d7f5d327b"></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">unsigned * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c">bm::gap_convert_to_bitset_smart</a> (unsigned *dest, const T *buf, id_t set_max)</td></tr>
99
<tr><td class="mdescLeft"> </td><td class="mdescRight">Smart GAP block to bitblock conversion. <a href="#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c"></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="a00119.html#ga14d29338ffd1387758810b3f9e3a72c6">bm::gap_control_sum</a> (const T *buf)</td></tr>
102
<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>
103
<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
104
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gaef53b2877ff369badd7bb25b26bb9029">bm::gap_set_all</a> (T *buf, unsigned set_max, unsigned value)</td></tr>
105
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets all bits to 0 or 1 (GAP). <a href="#gaef53b2877ff369badd7bb25b26bb9029"></a><br/></td></tr>
106
<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
107
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga510ab7feb60c19f7d7811cc304fdf649">bm::gap_init_range_block</a> (T *buf, T from, T to, T value, unsigned set_max)</td></tr>
108
<tr><td class="mdescLeft"> </td><td class="mdescRight">Init gap block so it has block in it (can be whole block). <a href="#ga510ab7feb60c19f7d7811cc304fdf649"></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3f22bfde5dfe06d6d77dc2598b8c0845">bm::gap_invert</a> (T *buf)</td></tr>
111
<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverts all bits in the GAP buffer. <a href="#ga3f22bfde5dfe06d6d77dc2598b8c0845"></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">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga690ff7c8b16e1821a77663b7194267e7">bm::gap_is_all_zero</a> (const T *buf, unsigned set_max)</td></tr>
114
<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporary inverts all bits in the GAP buffer. <a href="#ga690ff7c8b16e1821a77663b7194267e7"></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">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga1427d43e91872f981c6311fa76ab5633">bm::gap_is_all_one</a> (const T *buf, unsigned set_max)</td></tr>
117
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if GAP block is all-one. <a href="#ga1427d43e91872f981c6311fa76ab5633"></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">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga02541ec6c2930c292eda4313b78e874c">bm::gap_length</a> (const T *buf)</td></tr>
120
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block length. <a href="#ga02541ec6c2930c292eda4313b78e874c"></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="a00119.html#ga0419ed06e2f0b7891e7d721546f5fb45">bm::gap_capacity</a> (const T *buf, const T *glevel_len)</td></tr>
123
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity. <a href="#ga0419ed06e2f0b7891e7d721546f5fb45"></a><br/></td></tr>
124
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
125
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga94a5371b5dc6a1560d95d7c2dde88815">bm::gap_limit</a> (const T *buf, const T *glevel_len)</td></tr>
126
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity limit. <a href="#ga94a5371b5dc6a1560d95d7c2dde88815"></a><br/></td></tr>
127
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
128
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga1defe73aa4227a0e7204363ac6bb1ac1">bm::gap_level</a> (const T *buf)</td></tr>
129
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP blocks capacity level. <a href="#ga1defe73aa4227a0e7204363ac6bb1ac1"></a><br/></td></tr>
130
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
131
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga501aa9bf029e7f9ea9518e7003fe5549">bm::set_gap_level</a> (T *buf, unsigned level)</td></tr>
132
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets GAP block capacity level. <a href="#ga501aa9bf029e7f9ea9518e7003fe5549"></a><br/></td></tr>
133
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
134
<tr><td class="memTemplItemLeft" align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3bfaebeeb4b2d479c5a9ac9d57607165">bm::gap_calc_level</a> (int len, const T *glevel_len)</td></tr>
135
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates GAP block capacity level. <a href="#ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><br/></td></tr>
136
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
137
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gafd76869eb44fac688da5e26e0e74f41f">bm::gap_free_elements</a> (const T *buf, const T *glevel_len)</td></tr>
138
<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>
139
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
140
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga80d09bb6ab244e68ab0c1fdccc17b95b">bm::bit_convert_to_gap</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bits, unsigned dest_len)</td></tr>
141
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts bit block to GAP. <a href="#ga80d09bb6ab244e68ab0c1fdccc17b95b"></a><br/></td></tr>
142
<tr><td class="memTemplParams" colspan="2">template<class T , class F > </td></tr>
143
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga11bc26da8533752bb23756632fd30a00">bm::for_each_gap_dbit</a> (const T *buf, F &func)</td></tr>
144
<tr><td class="mdescLeft"> </td><td class="mdescRight">Iterate gap block as delta-bits with a functor. <a href="#ga11bc26da8533752bb23756632fd30a00"></a><br/></td></tr>
145
<tr><td class="memTemplParams" colspan="2">template<typename D , typename T > </td></tr>
146
<tr><td class="memTemplItemLeft" align="right" valign="top">D </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga5cd7e0cfee401da1b8f702151c083b27">bm::gap_convert_to_arr</a> (D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len, bool invert=false)</td></tr>
147
<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>
148
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gac18d7da0492983802511999a4ad0764a">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>
149
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation. <a href="#gac18d7da0492983802511999a4ad0764a"></a><br/></td></tr>
150
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ga58e0312d3ab0551e883176b170c0a3e8">bm::gap_operation_any_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
151
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation test. <a href="#ga58e0312d3ab0551e883176b170c0a3e8"></a><br/></td></tr>
152
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gafd92d013b0c377604831f401ef6917b8">bm::gap_count_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
153
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP bitcount AND operation test. <a href="#gafd92d013b0c377604831f401ef6917b8"></a><br/></td></tr>
154
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ga72d2d3933b4410413eeb02e9ee0a910d">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>
155
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation. <a href="#ga72d2d3933b4410413eeb02e9ee0a910d"></a><br/></td></tr>
156
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gab8800dff60eb05404a83159035e8e72f">bm::gap_operation_any_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
157
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation test. <a href="#gab8800dff60eb05404a83159035e8e72f"></a><br/></td></tr>
158
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gae38d6a3296f0562be512f47b4edfb1ad">bm::gap_count_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
159
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP bitcount XOR operation test. <a href="#gae38d6a3296f0562be512f47b4edfb1ad"></a><br/></td></tr>
160
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.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>
161
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP OR operation. <a href="#gacda280af8910ae5fde37731a3a7a1226"></a><br/></td></tr>
162
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ga125fc8dc68245a11a171e7793c6588a2">bm::gap_count_or</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
163
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP bitcount OR operation test. <a href="#ga125fc8dc68245a11a171e7793c6588a2"></a><br/></td></tr>
164
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.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>
165
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB (AND NOT) operation. <a href="#gabe4c83e5e162c38e297116dd1cd05ac4"></a><br/></td></tr>
166
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ga1c9b33d00f74206ad655dc2cef52428b">bm::gap_operation_any_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
167
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB operation test. <a href="#ga1c9b33d00f74206ad655dc2cef52428b"></a><br/></td></tr>
168
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gacacf55c60da82a1c384f3ac3a51229d4">bm::gap_count_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
169
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP bitcount SUB (AND NOT) operation test. <a href="#gacacf55c60da82a1c384f3ac3a51229d4"></a><br/></td></tr>
170
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
171
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gacc578010f3700940829c600c812d23b1">bm::gap_overhead</a> (const T *length, const T *length_end, const T *glevel_len)</td></tr>
172
<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>
173
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
174
<tr><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga2daff3a0ceda6fef87d3b0e892da5813">bm::improve_gap_levels</a> (const T *length, const T *length_end, T *glevel_len)</td></tr>
175
<tr><td class="mdescLeft"> </td><td class="mdescRight">Finds optimal gap blocks lengths. <a href="#ga2daff3a0ceda6fef87d3b0e892da5813"></a><br/></td></tr>
62
177
<hr/><a name="_details"></a><h2>Detailed Description</h2>
63
<p>This is the main group. </p>
64
<p>It includes <a class="el" href="a00044.html" title="bitvector with runtime compression of bits.">bvector</a> template: front end of the <a class="el" href="a00116.html">bm</a> library. </p>
65
<hr/><h2>Enumeration Type Documentation</h2>
66
<a class="anchor" id="gad0b87b3b7292383a864d27feaf1c9eff"></a><!-- doxytag: member="bm::strategy" ref="gad0b87b3b7292383a864d27feaf1c9eff" args="" -->
68
<div class="memproto">
69
<table class="memname">
71
<td class="memname">enum <a class="el" href="a00119.html#gad0b87b3b7292383a864d27feaf1c9eff">bm::strategy</a></td>
77
<p>Block allocation strategies. </p>
78
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
79
<tr><td valign="top"><em><a class="anchor" id="ggad0b87b3b7292383a864d27feaf1c9effa40920ae0ef7b4411d60463d8f576b5ba"></a><!-- doxytag: member="BM_BIT" ref="ggad0b87b3b7292383a864d27feaf1c9effa40920ae0ef7b4411d60463d8f576b5ba" args="" -->BM_BIT</em> </td><td>
80
<p>No GAP compression strategy. All new blocks are bit blocks. </p>
82
<tr><td valign="top"><em><a class="anchor" id="ggad0b87b3b7292383a864d27feaf1c9effa7fe09d1d7c62a813db922c396c0cbc9c"></a><!-- doxytag: member="BM_GAP" ref="ggad0b87b3b7292383a864d27feaf1c9effa7fe09d1d7c62a813db922c396c0cbc9c" args="" -->BM_GAP</em> </td><td>
83
<p>GAP compression is ON. </p>
89
<p>Definition at line <a class="el" href="a00092_source.html#l00114">114</a> of file <a class="el" href="a00092_source.html">bmconst.h</a>.</p>
94
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 23 20:48:07 2010 for BitMagic by
178
<p>GAP functions implement different opereations on GAP compressed blocks and serve as a minimal building blocks. </p>
179
<hr/><h2>Function Documentation</h2>
180
<a class="anchor" id="ga68e53a96e93a31e8a323d10c7a2f21f5"></a><!-- doxytag: member="bm::bit_array_compute_gaps" ref="ga68e53a96e93a31e8a323d10c7a2f21f5" args="(const T *arr, unsigned len)" -->
181
<div class="memitem">
182
<div class="memproto">
183
<div class="memtemplate">
184
template<typename T > </div>
185
<table class="memname">
187
<td class="memname">unsigned bm::bit_array_compute_gaps </td>
189
<td class="paramtype">const T * </td>
190
<td class="paramname"> <em>arr</em>, </td>
193
<td class="paramkey"></td>
195
<td class="paramtype">unsigned </td>
196
<td class="paramname"> <em>len</em></td><td> </td>
201
<td></td><td></td><td><code> [inline]</code></td>
207
<p>Compute number of GAPs in bit-array. </p>
208
<dl><dt><b>Parameters:</b></dt><dd>
209
<table border="0" cellspacing="2" cellpadding="0">
210
<tr><td valign="top"></td><td valign="top"><em>arr</em> </td><td>- array of BITs </td></tr>
211
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- array length </td></tr>
216
<p>Definition at line <a class="el" href="a00093_source.html#l01406">1406</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
220
<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)" -->
221
<div class="memitem">
222
<div class="memproto">
223
<div class="memtemplate">
224
template<typename T > </div>
225
<table class="memname">
227
<td class="memname">unsigned bm::bit_convert_to_gap </td>
229
<td class="paramtype">T *BMRESTRICT </td>
230
<td class="paramname"> <em>dest</em>, </td>
233
<td class="paramkey"></td>
235
<td class="paramtype">const unsigned *BMRESTRICT </td>
236
<td class="paramname"> <em>src</em>, </td>
239
<td class="paramkey"></td>
241
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td>
242
<td class="paramname"> <em>bits</em>, </td>
245
<td class="paramkey"></td>
247
<td class="paramtype">unsigned </td>
248
<td class="paramname"> <em>dest_len</em></td><td> </td>
253
<td></td><td></td><td><code> [inline]</code></td>
259
<p>Converts bit block to GAP. </p>
260
<dl><dt><b>Parameters:</b></dt><dd>
261
<table border="0" cellspacing="2" cellpadding="0">
262
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- Destinatio GAP buffer. </td></tr>
263
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- Source bitblock buffer. </td></tr>
264
<tr><td valign="top"></td><td valign="top"><em>bits</em> </td><td>- Number of bits to convert. </td></tr>
265
<tr><td valign="top"></td><td valign="top"><em>dest_len</em> </td><td>- length of the dest. buffer. </td></tr>
269
<dl class="return"><dt><b>Returns:</b></dt><dd>New length of GAP block or 0 if conversion failed (insufficicent space). </dd></dl>
271
<p>Definition at line <a class="el" href="a00093_source.html#l02522">2522</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
273
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
275
<p>Referenced by <a class="el" href="a00096_source.html#l00814">bm::serializer< BV >::serialize()</a>.</p>
279
<a class="anchor" id="ga11bc26da8533752bb23756632fd30a00"></a><!-- doxytag: member="bm::for_each_gap_dbit" ref="ga11bc26da8533752bb23756632fd30a00" args="(const T *buf, F &func)" -->
280
<div class="memitem">
281
<div class="memproto">
282
<div class="memtemplate">
283
template<class T , class F > </div>
284
<table class="memname">
286
<td class="memname">void bm::for_each_gap_dbit </td>
288
<td class="paramtype">const T * </td>
289
<td class="paramname"> <em>buf</em>, </td>
292
<td class="paramkey"></td>
294
<td class="paramtype">F & </td>
295
<td class="paramname"> <em>func</em></td><td> </td>
300
<td></td><td></td><td><code> [inline]</code></td>
306
<p>Iterate gap block as delta-bits with a functor. </p>
308
<p>Definition at line <a class="el" href="a00093_source.html#l02612">2612</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
312
<a class="anchor" id="ga12615cd62f2e5367e1bc688d00a2188f"></a><!-- doxytag: member="bm::gap_add_to_bitset" ref="ga12615cd62f2e5367e1bc688d00a2188f" args="(unsigned *dest, const T *buf)" -->
313
<div class="memitem">
314
<div class="memproto">
315
<div class="memtemplate">
316
template<typename T > </div>
317
<table class="memname">
319
<td class="memname">void bm::gap_add_to_bitset </td>
321
<td class="paramtype">unsigned * </td>
322
<td class="paramname"> <em>dest</em>, </td>
325
<td class="paramkey"></td>
327
<td class="paramtype">const T * </td>
328
<td class="paramname"> <em>buf</em></td><td> </td>
333
<td></td><td></td><td><code> [inline]</code></td>
339
<p>Adds(OR) GAP block to bitblock. </p>
340
<dl><dt><b>Parameters:</b></dt><dd>
341
<table border="0" cellspacing="2" cellpadding="0">
342
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
343
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
348
<p>Definition at line <a class="el" href="a00093_source.html#l01763">1763</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
350
<p>References <a class="el" href="a00093_source.html#l01733">bm::gap_add_to_bitset_l()</a>.</p>
352
<p>Referenced by <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l02144">bm::gap_convert_to_bitset()</a>.</p>
356
<a class="anchor" id="ga78510a39b6e8c6b8904ecbffb6ab215b"></a><!-- doxytag: member="bm::gap_add_to_bitset_l" ref="ga78510a39b6e8c6b8904ecbffb6ab215b" args="(unsigned *dest, const T *buf, unsigned buf_len)" -->
357
<div class="memitem">
358
<div class="memproto">
359
<div class="memtemplate">
360
template<typename T > </div>
361
<table class="memname">
363
<td class="memname">void bm::gap_add_to_bitset_l </td>
365
<td class="paramtype">unsigned * </td>
366
<td class="paramname"> <em>dest</em>, </td>
369
<td class="paramkey"></td>
371
<td class="paramtype">const T * </td>
372
<td class="paramname"> <em>buf</em>, </td>
375
<td class="paramkey"></td>
377
<td class="paramtype">unsigned </td>
378
<td class="paramname"> <em>buf_len</em></td><td> </td>
383
<td></td><td></td><td><code> [inline]</code></td>
389
<p>Adds(OR) GAP block to bitblock. </p>
390
<dl><dt><b>Parameters:</b></dt><dd>
391
<table border="0" cellspacing="2" cellpadding="0">
392
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
393
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
394
<tr><td valign="top"></td><td valign="top"><em>buf_len</em> </td><td>- GAP buffer length </td></tr>
399
<p>Definition at line <a class="el" href="a00093_source.html#l01733">1733</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
401
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01491">bm::or_bit_block()</a>.</p>
403
<p>Referenced by <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, <a class="el" href="a00093_source.html#l01763">bm::gap_add_to_bitset()</a>, and <a class="el" href="a00093_source.html#l02158">bm::gap_convert_to_bitset_l()</a>.</p>
407
<a class="anchor" id="gadae4001e2834125b9c08b154a8a874a7"></a><!-- doxytag: member="bm::gap_add_value" ref="gadae4001e2834125b9c08b154a8a874a7" args="(T *buf, T pos)" -->
408
<div class="memitem">
409
<div class="memproto">
410
<div class="memtemplate">
411
template<typename T > </div>
412
<table class="memname">
414
<td class="memname">unsigned bm::gap_add_value </td>
416
<td class="paramtype">T * </td>
417
<td class="paramname"> <em>buf</em>, </td>
420
<td class="paramkey"></td>
422
<td class="paramtype">T </td>
423
<td class="paramname"> <em>pos</em></td><td> </td>
428
<td></td><td></td><td><code> [inline]</code></td>
434
<p>Add new value to the end of GAP buffer. </p>
435
<dl><dt><b>Parameters:</b></dt><dd>
436
<table border="0" cellspacing="2" cellpadding="0">
437
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer. </td></tr>
438
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- Index of bit to set.</td></tr>
442
<dl class="return"><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
444
<p>Definition at line <a class="el" href="a00093_source.html#l01261">1261</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
446
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
448
<p>Referenced by <a class="el" href="a00096_source.html#l01227">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
452
<a class="anchor" id="gafe6f72a009618290eeab3cddee869543"></a><!-- doxytag: member="bm::gap_and_to_bitset" ref="gafe6f72a009618290eeab3cddee869543" args="(unsigned *dest, const T *buf)" -->
453
<div class="memitem">
454
<div class="memproto">
455
<div class="memtemplate">
456
template<typename T > </div>
457
<table class="memname">
459
<td class="memname">void bm::gap_and_to_bitset </td>
461
<td class="paramtype">unsigned * </td>
462
<td class="paramname"> <em>dest</em>, </td>
465
<td class="paramkey"></td>
467
<td class="paramtype">const T * </td>
468
<td class="paramname"> <em>buf</em></td><td> </td>
473
<td></td><td></td><td><code> [inline]</code></td>
479
<p>ANDs GAP block to bitblock. </p>
480
<dl><dt><b>Parameters:</b></dt><dd>
481
<table border="0" cellspacing="2" cellpadding="0">
482
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
483
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
488
<p>Definition at line <a class="el" href="a00093_source.html#l01777">1777</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
490
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01553">bm::sub_bit_block()</a>.</p>
494
<a class="anchor" id="ga570a6f573ffb9ac9e41a688d2bdc6004"></a><!-- doxytag: member="bm::gap_bit_count" ref="ga570a6f573ffb9ac9e41a688d2bdc6004" args="(const T *buf, unsigned dsize=0)" -->
495
<div class="memitem">
496
<div class="memproto">
497
<div class="memtemplate">
498
template<typename T > </div>
499
<table class="memname">
501
<td class="memname">unsigned bm::gap_bit_count </td>
503
<td class="paramtype">const T * </td>
504
<td class="paramname"> <em>buf</em>, </td>
507
<td class="paramkey"></td>
509
<td class="paramtype">unsigned </td>
510
<td class="paramname"> <em>dsize</em> = <code>0</code></td><td> </td>
515
<td></td><td></td><td><code> [inline]</code></td>
521
<p>Calculates number of bits ON in GAP buffer. </p>
522
<dl><dt><b>Parameters:</b></dt><dd>
523
<table border="0" cellspacing="2" cellpadding="0">
524
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
525
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- buffer size </td></tr>
529
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of non-zero bits. </dd></dl>
531
<p>Definition at line <a class="el" href="a00093_source.html#l00678">678</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
533
<p>Referenced by <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>, and <a class="el" href="a00096_source.html#l00709">bm::serializer< BV >::encode_gap_block()</a>.</p>
537
<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)" -->
538
<div class="memitem">
539
<div class="memproto">
540
<div class="memtemplate">
541
template<typename T , class F > </div>
542
<table class="memname">
544
<td class="memname">unsigned bm::gap_buff_any_op </td>
546
<td class="paramtype">const T *BMRESTRICT </td>
547
<td class="paramname"> <em>vect1</em>, </td>
550
<td class="paramkey"></td>
552
<td class="paramtype">unsigned </td>
553
<td class="paramname"> <em>vect1_mask</em>, </td>
556
<td class="paramkey"></td>
558
<td class="paramtype">const T *BMRESTRICT </td>
559
<td class="paramname"> <em>vect2</em>, </td>
562
<td class="paramkey"></td>
564
<td class="paramtype">unsigned </td>
565
<td class="paramname"> <em>vect2_mask</em>, </td>
568
<td class="paramkey"></td>
570
<td class="paramtype">F </td>
571
<td class="paramname"> <em>f</em></td><td> </td>
576
<td></td><td></td><td><code> [inline]</code></td>
582
<p>Abstract distance test operation for GAP buffers. Receives functor F as a template argument. </p>
583
<dl><dt><b>Parameters:</b></dt><dd>
584
<table border="0" cellspacing="2" cellpadding="0">
585
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
586
<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>
587
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
588
<tr><td valign="top"></td><td valign="top"><em>vect2_mask</em> </td><td>- same as vect1_mask </td></tr>
589
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
593
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
594
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation result returns any 1 bit </dd></dl>
596
<p>Definition at line <a class="el" href="a00093_source.html#l01015">1015</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
598
<p>References <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
600
<p>Referenced by <a class="el" href="a00093_source.html#l03210">bm::gap_operation_any_and()</a>, <a class="el" href="a00093_source.html#l03388">bm::gap_operation_any_sub()</a>, and <a class="el" href="a00093_source.html#l03277">bm::gap_operation_any_xor()</a>.</p>
604
<a class="anchor" id="ga9a5ff7782f3de0d1c699eb72d432f255"></a><!-- doxytag: member="bm::gap_buff_count_op" ref="ga9a5ff7782f3de0d1c699eb72d432f255" args="(const T *vect1, const T *vect2, F f)" -->
605
<div class="memitem">
606
<div class="memproto">
607
<div class="memtemplate">
608
template<typename T , class F > </div>
609
<table class="memname">
611
<td class="memname">unsigned bm::gap_buff_count_op </td>
613
<td class="paramtype">const T * </td>
614
<td class="paramname"> <em>vect1</em>, </td>
617
<td class="paramkey"></td>
619
<td class="paramtype">const T * </td>
620
<td class="paramname"> <em>vect2</em>, </td>
623
<td class="paramkey"></td>
625
<td class="paramtype">F </td>
626
<td class="paramname"> <em>f</em></td><td> </td>
631
<td></td><td></td><td><code> [inline]</code></td>
637
<p>Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument. </p>
638
<dl><dt><b>Parameters:</b></dt><dd>
639
<table border="0" cellspacing="2" cellpadding="0">
640
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
641
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
642
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
646
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
648
<p>Definition at line <a class="el" href="a00093_source.html#l01084">1084</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
650
<p>References <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
652
<p>Referenced by <a class="el" href="a00093_source.html#l03227">bm::gap_count_and()</a>, <a class="el" href="a00093_source.html#l03338">bm::gap_count_or()</a>, <a class="el" href="a00093_source.html#l03405">bm::gap_count_sub()</a>, and <a class="el" href="a00093_source.html#l03293">bm::gap_count_xor()</a>.</p>
656
<a class="anchor" id="ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><!-- doxytag: member="bm::gap_calc_level" ref="ga3bfaebeeb4b2d479c5a9ac9d57607165" args="(int len, const T *glevel_len)" -->
657
<div class="memitem">
658
<div class="memproto">
659
<div class="memtemplate">
660
template<typename T > </div>
661
<table class="memname">
663
<td class="memname">int bm::gap_calc_level </td>
665
<td class="paramtype">int </td>
666
<td class="paramname"> <em>len</em>, </td>
669
<td class="paramkey"></td>
671
<td class="paramtype">const T * </td>
672
<td class="paramname"> <em>glevel_len</em></td><td> </td>
677
<td></td><td></td><td><code> [inline]</code></td>
683
<p>Calculates GAP block capacity level. </p>
684
<dl><dt><b>Parameters:</b></dt><dd>
685
<table border="0" cellspacing="2" cellpadding="0">
686
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- GAP buffer length. </td></tr>
687
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- GAP lengths table </td></tr>
691
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. -1 if block does not fit any level. </dd></dl>
693
<p>Definition at line <a class="el" href="a00093_source.html#l02450">2450</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
695
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00075">bm::gap_levels</a>.</p>
697
<p>Referenced by <a class="el" href="a00096_source.html#l03101">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l04847">bm::gap_overhead()</a>.</p>
701
<a class="anchor" id="ga0419ed06e2f0b7891e7d721546f5fb45"></a><!-- doxytag: member="bm::gap_capacity" ref="ga0419ed06e2f0b7891e7d721546f5fb45" args="(const T *buf, const T *glevel_len)" -->
702
<div class="memitem">
703
<div class="memproto">
704
<div class="memtemplate">
705
template<typename T > </div>
706
<table class="memname">
708
<td class="memname">unsigned bm::gap_capacity </td>
710
<td class="paramtype">const T * </td>
711
<td class="paramname"> <em>buf</em>, </td>
714
<td class="paramkey"></td>
716
<td class="paramtype">const T * </td>
717
<td class="paramname"> <em>glevel_len</em></td><td> </td>
722
<td></td><td></td><td><code> [inline]</code></td>
728
<p>Returs GAP block capacity. </p>
729
<dl><dt><b>Parameters:</b></dt><dd>
730
<table border="0" cellspacing="2" cellpadding="0">
731
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
735
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity. </dd></dl>
737
<p>Definition at line <a class="el" href="a00093_source.html#l02392">2392</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
739
<p>Referenced by <a class="el" href="a00087_source.html#l02044">bm::bvector< Alloc >::calc_stat()</a>, <a class="el" href="a00090_source.html#l00205">bm::mem_alloc< BA, PA >::free_gap_block()</a>, and <a class="el" href="a00093_source.html#l02471">bm::gap_free_elements()</a>.</p>
743
<a class="anchor" id="ga14d29338ffd1387758810b3f9e3a72c6"></a><!-- doxytag: member="bm::gap_control_sum" ref="ga14d29338ffd1387758810b3f9e3a72c6" args="(const T *buf)" -->
744
<div class="memitem">
745
<div class="memproto">
746
<div class="memtemplate">
747
template<typename T > </div>
748
<table class="memname">
750
<td class="memname">unsigned bm::gap_control_sum </td>
752
<td class="paramtype">const T * </td>
753
<td class="paramname"> <em>buf</em></td>
754
<td> ) </td>
755
<td><code> [inline]</code></td>
761
<p>Calculates sum of all words in GAP block. (For debugging purposes). </p>
762
<dl class="note"><dt><b>Note:</b></dt><dd>For debugging and testing ONLY. </dd></dl>
763
<dl><dt><b>Parameters:</b></dt><dd>
764
<table border="0" cellspacing="2" cellpadding="0">
765
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
769
<dl class="return"><dt><b>Returns:</b></dt><dd>Sum of all words. </dd></dl>
771
<p>Definition at line <a class="el" href="a00093_source.html#l02218">2218</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
773
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
777
<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)" -->
778
<div class="memitem">
779
<div class="memproto">
780
<div class="memtemplate">
781
template<typename D , typename T > </div>
782
<table class="memname">
784
<td class="memname">D bm::gap_convert_to_arr </td>
786
<td class="paramtype">D *BMRESTRICT </td>
787
<td class="paramname"> <em>dest</em>, </td>
790
<td class="paramkey"></td>
792
<td class="paramtype">const T *BMRESTRICT </td>
793
<td class="paramname"> <em>buf</em>, </td>
796
<td class="paramkey"></td>
798
<td class="paramtype">unsigned </td>
799
<td class="paramname"> <em>dest_len</em>, </td>
802
<td class="paramkey"></td>
804
<td class="paramtype">bool </td>
805
<td class="paramname"> <em>invert</em> = <code>false</code></td><td> </td>
810
<td></td><td></td><td><code> [inline]</code></td>
816
<p>Convert gap block into array of ints corresponding to 1 bits. </p>
818
<p>Definition at line <a class="el" href="a00093_source.html#l02667">2667</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
820
<p>Referenced by <a class="el" href="a00096_source.html#l00709">bm::serializer< BV >::encode_gap_block()</a>.</p>
824
<a class="anchor" id="ga9bb80c42ee0ecf8f2af8250d7f5d327b"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga9bb80c42ee0ecf8f2af8250d7f5d327b" args="(unsigned *dest, const T *buf, unsigned dest_len)" -->
825
<div class="memitem">
826
<div class="memproto">
827
<div class="memtemplate">
828
template<typename T > </div>
829
<table class="memname">
831
<td class="memname">void bm::gap_convert_to_bitset </td>
833
<td class="paramtype">unsigned * </td>
834
<td class="paramname"> <em>dest</em>, </td>
837
<td class="paramkey"></td>
839
<td class="paramtype">const T * </td>
840
<td class="paramname"> <em>buf</em>, </td>
843
<td class="paramkey"></td>
845
<td class="paramtype">unsigned </td>
846
<td class="paramname"> <em>dest_len</em></td><td> </td>
851
<td></td><td></td><td><code> [inline]</code></td>
857
<p>GAP block to bitblock conversion. </p>
858
<dl><dt><b>Parameters:</b></dt><dd>
859
<table border="0" cellspacing="2" cellpadding="0">
860
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
861
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
862
<tr><td valign="top"></td><td valign="top"><em>dest_size</em> </td><td>- length of the destination buffer. </td></tr>
867
<p>Definition at line <a class="el" href="a00093_source.html#l02175">2175</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
869
<p>References <a class="el" href="a00093_source.html#l01763">bm::gap_add_to_bitset()</a>.</p>
873
<a class="anchor" id="ga4862f4dcdcb7c0575e2e2db9e5f2a849"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga4862f4dcdcb7c0575e2e2db9e5f2a849" args="(unsigned *dest, const T *buf)" -->
874
<div class="memitem">
875
<div class="memproto">
876
<div class="memtemplate">
877
template<typename T > </div>
878
<table class="memname">
880
<td class="memname">void bm::gap_convert_to_bitset </td>
882
<td class="paramtype">unsigned * </td>
883
<td class="paramname"> <em>dest</em>, </td>
886
<td class="paramkey"></td>
888
<td class="paramtype">const T * </td>
889
<td class="paramname"> <em>buf</em></td><td> </td>
894
<td></td><td></td><td><code> [inline]</code></td>
900
<p>GAP block to bitblock conversion. </p>
901
<dl><dt><b>Parameters:</b></dt><dd>
902
<table border="0" cellspacing="2" cellpadding="0">
903
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
904
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
909
<p>Definition at line <a class="el" href="a00093_source.html#l02144">2144</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
911
<p>References <a class="el" href="a00093_source.html#l02126">bm::bit_block_set()</a>, and <a class="el" href="a00093_source.html#l01763">bm::gap_add_to_bitset()</a>.</p>
913
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00087_source.html#l01914">bm::bvector< Alloc >::compare()</a>, <a class="el" href="a00096_source.html#l03319">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l02196">bm::gap_convert_to_bitset_smart()</a>.</p>
917
<a class="anchor" id="ga1dd58e3576239c49010b62a3add42417"></a><!-- doxytag: member="bm::gap_convert_to_bitset_l" ref="ga1dd58e3576239c49010b62a3add42417" args="(unsigned *dest, const T *buf, unsigned buf_len)" -->
918
<div class="memitem">
919
<div class="memproto">
920
<div class="memtemplate">
921
template<typename T > </div>
922
<table class="memname">
924
<td class="memname">void bm::gap_convert_to_bitset_l </td>
926
<td class="paramtype">unsigned * </td>
927
<td class="paramname"> <em>dest</em>, </td>
930
<td class="paramkey"></td>
932
<td class="paramtype">const T * </td>
933
<td class="paramname"> <em>buf</em>, </td>
936
<td class="paramkey"></td>
938
<td class="paramtype">unsigned </td>
939
<td class="paramname"> <em>buf_len</em></td><td> </td>
944
<td></td><td></td><td><code> [inline]</code></td>
950
<p>GAP block to bitblock conversion. </p>
951
<dl><dt><b>Parameters:</b></dt><dd>
952
<table border="0" cellspacing="2" cellpadding="0">
953
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
954
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
959
<p>Definition at line <a class="el" href="a00093_source.html#l02158">2158</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
961
<p>References <a class="el" href="a00093_source.html#l02126">bm::bit_block_set()</a>, and <a class="el" href="a00093_source.html#l01733">bm::gap_add_to_bitset_l()</a>.</p>
965
<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)" -->
966
<div class="memitem">
967
<div class="memproto">
968
<div class="memtemplate">
969
template<typename T > </div>
970
<table class="memname">
972
<td class="memname">unsigned* bm::gap_convert_to_bitset_smart </td>
974
<td class="paramtype">unsigned * </td>
975
<td class="paramname"> <em>dest</em>, </td>
978
<td class="paramkey"></td>
980
<td class="paramtype">const T * </td>
981
<td class="paramname"> <em>buf</em>, </td>
984
<td class="paramkey"></td>
986
<td class="paramtype">id_t </td>
987
<td class="paramname"> <em>set_max</em></td><td> </td>
992
<td></td><td></td><td><code> [inline]</code></td>
998
<p>Smart GAP block to bitblock conversion. </p>
999
<p>Checks if GAP block is ALL-ZERO or ALL-ON. In those cases returns pointer on special static bitblocks.</p>
1000
<dl><dt><b>Parameters:</b></dt><dd>
1001
<table border="0" cellspacing="2" cellpadding="0">
1002
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
1003
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1004
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1009
<p>Definition at line <a class="el" href="a00093_source.html#l02196">2196</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1011
<p>References <a class="el" href="a00092_source.html#l00060">FULL_BLOCK_ADDR</a>, and <a class="el" href="a00093_source.html#l02144">bm::gap_convert_to_bitset()</a>.</p>
1015
<a class="anchor" id="gafd92d013b0c377604831f401ef6917b8"></a><!-- doxytag: member="bm::gap_count_and" ref="gafd92d013b0c377604831f401ef6917b8" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1016
<div class="memitem">
1017
<div class="memproto">
1018
<table class="memname">
1020
<td class="memname">BMFORCEINLINE unsigned bm::gap_count_and </td>
1022
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1023
<td class="paramname"> <em>vect1</em>, </td>
1026
<td class="paramkey"></td>
1028
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1029
<td class="paramname"> <em>vect2</em></td><td> </td>
1034
<td></td><td></td><td></td>
1038
<div class="memdoc">
1040
<p>GAP bitcount AND operation test. </p>
1041
<dl><dt><b>Parameters:</b></dt><dd>
1042
<table border="0" cellspacing="2" cellpadding="0">
1043
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1044
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1048
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of vect1 AND vect2 </dd></dl>
1050
<p>Definition at line <a class="el" href="a00093_source.html#l03227">3227</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1052
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l01084">bm::gap_buff_count_op()</a>.</p>
1054
<p>Referenced by <a class="el" href="a00089_source.html#l00329">bm::combine_count_and_operation_with_block()</a>, and <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>.</p>
1058
<a class="anchor" id="ga125fc8dc68245a11a171e7793c6588a2"></a><!-- doxytag: member="bm::gap_count_or" ref="ga125fc8dc68245a11a171e7793c6588a2" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1059
<div class="memitem">
1060
<div class="memproto">
1061
<table class="memname">
1063
<td class="memname">BMFORCEINLINE unsigned bm::gap_count_or </td>
1065
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1066
<td class="paramname"> <em>vect1</em>, </td>
1069
<td class="paramkey"></td>
1071
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1072
<td class="paramname"> <em>vect2</em></td><td> </td>
1077
<td></td><td></td><td></td>
1081
<div class="memdoc">
1083
<p>GAP bitcount OR operation test. </p>
1084
<dl><dt><b>Parameters:</b></dt><dd>
1085
<table border="0" cellspacing="2" cellpadding="0">
1086
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1087
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1091
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of vect1 OR vect2 </dd></dl>
1093
<p>Definition at line <a class="el" href="a00093_source.html#l03338">3338</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1095
<p>References <a class="el" href="a00093_source.html#l01084">bm::gap_buff_count_op()</a>, and <a class="el" href="a00093_source.html#l03157">bm::or_op()</a>.</p>
1097
<p>Referenced by <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>.</p>
1101
<a class="anchor" id="gacacf55c60da82a1c384f3ac3a51229d4"></a><!-- doxytag: member="bm::gap_count_sub" ref="gacacf55c60da82a1c384f3ac3a51229d4" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1102
<div class="memitem">
1103
<div class="memproto">
1104
<table class="memname">
1106
<td class="memname">BMFORCEINLINE unsigned bm::gap_count_sub </td>
1108
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1109
<td class="paramname"> <em>vect1</em>, </td>
1112
<td class="paramkey"></td>
1114
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1115
<td class="paramname"> <em>vect2</em></td><td> </td>
1120
<td></td><td></td><td></td>
1124
<div class="memdoc">
1126
<p>GAP bitcount SUB (AND NOT) operation test. </p>
1127
<dl><dt><b>Parameters:</b></dt><dd>
1128
<table border="0" cellspacing="2" cellpadding="0">
1129
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1130
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1134
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of vect1 SUB (AND NOT) vect2 </dd></dl>
1136
<p>Definition at line <a class="el" href="a00093_source.html#l03405">3405</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1138
<p>References <a class="el" href="a00093_source.html#l01084">bm::gap_buff_count_op()</a>, and <a class="el" href="a00093_source.html#l03163">bm::sub_op()</a>.</p>
1140
<p>Referenced by <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>.</p>
1144
<a class="anchor" id="gae38d6a3296f0562be512f47b4edfb1ad"></a><!-- doxytag: member="bm::gap_count_xor" ref="gae38d6a3296f0562be512f47b4edfb1ad" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1145
<div class="memitem">
1146
<div class="memproto">
1147
<table class="memname">
1149
<td class="memname">BMFORCEINLINE unsigned bm::gap_count_xor </td>
1151
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1152
<td class="paramname"> <em>vect1</em>, </td>
1155
<td class="paramkey"></td>
1157
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1158
<td class="paramname"> <em>vect2</em></td><td> </td>
1163
<td></td><td></td><td></td>
1167
<div class="memdoc">
1169
<p>GAP bitcount XOR operation test. </p>
1170
<dl><dt><b>Parameters:</b></dt><dd>
1171
<table border="0" cellspacing="2" cellpadding="0">
1172
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1173
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1177
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of vect1 XOR vect2 </dd></dl>
1179
<p>Definition at line <a class="el" href="a00093_source.html#l03293">3293</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1181
<p>References <a class="el" href="a00093_source.html#l01084">bm::gap_buff_count_op()</a>, and <a class="el" href="a00093_source.html#l03150">bm::xor_op()</a>.</p>
1183
<p>Referenced by <a class="el" href="a00089_source.html#l00116">bm::combine_count_operation_with_block()</a>.</p>
1187
<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)" -->
1188
<div class="memitem">
1189
<div class="memproto">
1190
<div class="memtemplate">
1191
template<typename T > </div>
1192
<table class="memname">
1194
<td class="memname">int bm::gap_find_in_block </td>
1196
<td class="paramtype">const T * </td>
1197
<td class="paramname"> <em>buf</em>, </td>
1200
<td class="paramkey"></td>
1202
<td class="paramtype">unsigned </td>
1203
<td class="paramname"> <em>nbit</em>, </td>
1206
<td class="paramkey"></td>
1208
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> * </td>
1209
<td class="paramname"> <em>prev</em></td><td> </td>
1214
<td></td><td></td><td><code> [inline]</code></td>
1218
<div class="memdoc">
1220
<p>Searches for the next 1 bit in the GAP block. </p>
1221
<dl><dt><b>Parameters:</b></dt><dd>
1222
<table border="0" cellspacing="2" cellpadding="0">
1223
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer </td></tr>
1224
<tr><td valign="top"></td><td valign="top"><em>nbit</em> </td><td>- bit index to start checking from. </td></tr>
1225
<tr><td valign="top"></td><td valign="top"><em>prev</em> </td><td>- returns previously checked value </td></tr>
1230
<p>Definition at line <a class="el" href="a00093_source.html#l01436">1436</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1232
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00461">bm::gap_bfind()</a>, and <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
1236
<a class="anchor" id="gafd76869eb44fac688da5e26e0e74f41f"></a><!-- doxytag: member="bm::gap_free_elements" ref="gafd76869eb44fac688da5e26e0e74f41f" args="(const T *buf, const T *glevel_len)" -->
1237
<div class="memitem">
1238
<div class="memproto">
1239
<div class="memtemplate">
1240
template<typename T > </div>
1241
<table class="memname">
1243
<td class="memname">unsigned bm::gap_free_elements </td>
1245
<td class="paramtype">const T * </td>
1246
<td class="paramname"> <em>buf</em>, </td>
1249
<td class="paramkey"></td>
1251
<td class="paramtype">const T * </td>
1252
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1257
<td></td><td></td><td><code> [inline]</code></td>
1261
<div class="memdoc">
1263
<p>Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length. </p>
1264
<dl><dt><b>Parameters:</b></dt><dd>
1265
<table border="0" cellspacing="2" cellpadding="0">
1266
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer glevel_len - GAP lengths table</td></tr>
1270
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of free GAP elements </dd></dl>
1272
<p>Definition at line <a class="el" href="a00093_source.html#l02471">2471</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1274
<p>References <a class="el" href="a00093_source.html#l02392">bm::gap_capacity()</a>, and <a class="el" href="a00093_source.html#l02378">bm::gap_length()</a>.</p>
1278
<a class="anchor" id="ga510ab7feb60c19f7d7811cc304fdf649"></a><!-- doxytag: member="bm::gap_init_range_block" ref="ga510ab7feb60c19f7d7811cc304fdf649" args="(T *buf, T from, T to, T value, unsigned set_max)" -->
1279
<div class="memitem">
1280
<div class="memproto">
1281
<div class="memtemplate">
1282
template<class T > </div>
1283
<table class="memname">
1285
<td class="memname">void bm::gap_init_range_block </td>
1287
<td class="paramtype">T * </td>
1288
<td class="paramname"> <em>buf</em>, </td>
1291
<td class="paramkey"></td>
1293
<td class="paramtype">T </td>
1294
<td class="paramname"> <em>from</em>, </td>
1297
<td class="paramkey"></td>
1299
<td class="paramtype">T </td>
1300
<td class="paramname"> <em>to</em>, </td>
1303
<td class="paramkey"></td>
1305
<td class="paramtype">T </td>
1306
<td class="paramname"> <em>value</em>, </td>
1309
<td class="paramkey"></td>
1311
<td class="paramtype">unsigned </td>
1312
<td class="paramname"> <em>set_max</em></td><td> </td>
1317
<td></td><td></td><td><code> [inline]</code></td>
1321
<div class="memdoc">
1323
<p>Init gap block so it has block in it (can be whole block). </p>
1324
<dl><dt><b>Parameters:</b></dt><dd>
1325
<table border="0" cellspacing="2" cellpadding="0">
1326
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1327
<tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>- one block start </td></tr>
1328
<tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>- one block end </td></tr>
1329
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- (block value)1 or 0 </td></tr>
1330
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1335
<p>Definition at line <a class="el" href="a00093_source.html#l02270">2270</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1337
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l02249">bm::gap_set_all()</a>.</p>
1341
<a class="anchor" id="ga3f22bfde5dfe06d6d77dc2598b8c0845"></a><!-- doxytag: member="bm::gap_invert" ref="ga3f22bfde5dfe06d6d77dc2598b8c0845" args="(T *buf)" -->
1342
<div class="memitem">
1343
<div class="memproto">
1344
<div class="memtemplate">
1345
template<typename T > </div>
1346
<table class="memname">
1348
<td class="memname">void bm::gap_invert </td>
1350
<td class="paramtype">T * </td>
1351
<td class="paramname"> <em>buf</em></td>
1352
<td> ) </td>
1353
<td><code> [inline]</code></td>
1357
<div class="memdoc">
1359
<p>Inverts all bits in the GAP buffer. </p>
1360
<dl><dt><b>Parameters:</b></dt><dd>
1361
<table border="0" cellspacing="2" cellpadding="0">
1362
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1367
<p>Definition at line <a class="el" href="a00093_source.html#l02320">2320</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1369
<p>Referenced by <a class="el" href="a00093_source.html#l03318">bm::gap_operation_or()</a>, and <a class="el" href="a00096_source.html#l01227">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
1373
<a class="anchor" id="ga1427d43e91872f981c6311fa76ab5633"></a><!-- doxytag: member="bm::gap_is_all_one" ref="ga1427d43e91872f981c6311fa76ab5633" args="(const T *buf, unsigned set_max)" -->
1374
<div class="memitem">
1375
<div class="memproto">
1376
<div class="memtemplate">
1377
template<typename T > </div>
1378
<table class="memname">
1380
<td class="memname">bool bm::gap_is_all_one </td>
1382
<td class="paramtype">const T * </td>
1383
<td class="paramname"> <em>buf</em>, </td>
1386
<td class="paramkey"></td>
1388
<td class="paramtype">unsigned </td>
1389
<td class="paramname"> <em>set_max</em></td><td> </td>
1394
<td></td><td></td><td><code> [inline]</code></td>
1398
<div class="memdoc">
1400
<p>Checks if GAP block is all-one. </p>
1401
<dl><dt><b>Parameters:</b></dt><dd>
1402
<table border="0" cellspacing="2" cellpadding="0">
1403
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1404
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1408
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-one. </dd></dl>
1410
<p>Definition at line <a class="el" href="a00093_source.html#l02366">2366</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1414
<a class="anchor" id="ga690ff7c8b16e1821a77663b7194267e7"></a><!-- doxytag: member="bm::gap_is_all_zero" ref="ga690ff7c8b16e1821a77663b7194267e7" args="(const T *buf, unsigned set_max)" -->
1415
<div class="memitem">
1416
<div class="memproto">
1417
<div class="memtemplate">
1418
template<typename T > </div>
1419
<table class="memname">
1421
<td class="memname">bool bm::gap_is_all_zero </td>
1423
<td class="paramtype">const T * </td>
1424
<td class="paramname"> <em>buf</em>, </td>
1427
<td class="paramkey"></td>
1429
<td class="paramtype">unsigned </td>
1430
<td class="paramname"> <em>set_max</em></td><td> </td>
1435
<td></td><td></td><td><code> [inline]</code></td>
1439
<div class="memdoc">
1441
<p>Temporary inverts all bits in the GAP buffer. </p>
1442
<p>In this function const-ness of the buffer means nothing. Calling this function again restores the status of the buffer.</p>
1443
<dl><dt><b>Parameters:</b></dt><dd>
1444
<table border="0" cellspacing="2" cellpadding="0">
1445
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. (Buffer IS changed)</td></tr>
1449
<p>Checks if GAP block is all-zero. </p>
1450
<dl><dt><b>Parameters:</b></dt><dd>
1451
<table border="0" cellspacing="2" cellpadding="0">
1452
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1453
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1457
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-zero. </dd></dl>
1459
<p>Definition at line <a class="el" href="a00093_source.html#l02352">2352</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1461
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>, and <a class="el" href="a00087_source.html#l01914">bm::bvector< Alloc >::compare()</a>.</p>
1465
<a class="anchor" id="ga02541ec6c2930c292eda4313b78e874c"></a><!-- doxytag: member="bm::gap_length" ref="ga02541ec6c2930c292eda4313b78e874c" args="(const T *buf)" -->
1466
<div class="memitem">
1467
<div class="memproto">
1468
<div class="memtemplate">
1469
template<typename T > </div>
1470
<table class="memname">
1472
<td class="memname">T bm::gap_length </td>
1474
<td class="paramtype">const T * </td>
1475
<td class="paramname"> <em>buf</em></td>
1476
<td> ) </td>
1477
<td><code> [inline]</code></td>
1481
<div class="memdoc">
1483
<p>Returs GAP block length. </p>
1484
<dl><dt><b>Parameters:</b></dt><dd>
1485
<table border="0" cellspacing="2" cellpadding="0">
1486
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1490
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block length. </dd></dl>
1492
<p>Definition at line <a class="el" href="a00093_source.html#l02378">2378</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1494
<p>Referenced by <a class="el" href="a00087_source.html#l02044">bm::bvector< Alloc >::calc_stat()</a>, <a class="el" href="a00096_source.html#l03101">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, <a class="el" href="a00096_source.html#l00709">bm::serializer< BV >::encode_gap_block()</a>, <a class="el" href="a00096_source.html#l00625">bm::serializer< BV >::gamma_gap_block()</a>, <a class="el" href="a00093_source.html#l02471">bm::gap_free_elements()</a>, and <a class="el" href="a00096_source.html#l01227">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
1498
<a class="anchor" id="ga1defe73aa4227a0e7204363ac6bb1ac1"></a><!-- doxytag: member="bm::gap_level" ref="ga1defe73aa4227a0e7204363ac6bb1ac1" args="(const T *buf)" -->
1499
<div class="memitem">
1500
<div class="memproto">
1501
<div class="memtemplate">
1502
template<typename T > </div>
1503
<table class="memname">
1505
<td class="memname">unsigned bm::gap_level </td>
1507
<td class="paramtype">const T * </td>
1508
<td class="paramname"> <em>buf</em></td>
1509
<td> ) </td>
1510
<td><code> [inline]</code></td>
1514
<div class="memdoc">
1516
<p>Returs GAP blocks capacity level. </p>
1517
<dl><dt><b>Parameters:</b></dt><dd>
1518
<table border="0" cellspacing="2" cellpadding="0">
1519
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1523
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. </dd></dl>
1525
<p>Definition at line <a class="el" href="a00093_source.html#l02420">2420</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1529
<a class="anchor" id="ga94a5371b5dc6a1560d95d7c2dde88815"></a><!-- doxytag: member="bm::gap_limit" ref="ga94a5371b5dc6a1560d95d7c2dde88815" args="(const T *buf, const T *glevel_len)" -->
1530
<div class="memitem">
1531
<div class="memproto">
1532
<div class="memtemplate">
1533
template<typename T > </div>
1534
<table class="memname">
1536
<td class="memname">unsigned bm::gap_limit </td>
1538
<td class="paramtype">const T * </td>
1539
<td class="paramname"> <em>buf</em>, </td>
1542
<td class="paramkey"></td>
1544
<td class="paramtype">const T * </td>
1545
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1550
<td></td><td></td><td><code> [inline]</code></td>
1554
<div class="memdoc">
1556
<p>Returs GAP block capacity limit. </p>
1557
<dl><dt><b>Parameters:</b></dt><dd>
1558
<table border="0" cellspacing="2" cellpadding="0">
1559
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1560
<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>
1564
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block limit. </dd></dl>
1566
<p>Definition at line <a class="el" href="a00093_source.html#l02407">2407</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1568
<p>Referenced by <a class="el" href="a00089_source.html#l01141">bm::combine_or()</a>, <a class="el" href="a00089_source.html#l01304">bm::combine_sub()</a>, and <a class="el" href="a00089_source.html#l01220">bm::combine_xor()</a>.</p>
1572
<a class="anchor" id="gac18d7da0492983802511999a4ad0764a"></a><!-- doxytag: member="bm::gap_operation_and" ref="gac18d7da0492983802511999a4ad0764a" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1573
<div class="memitem">
1574
<div class="memproto">
1575
<table class="memname">
1577
<td class="memname">BMFORCEINLINE gap_word_t* bm::gap_operation_and </td>
1579
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1580
<td class="paramname"> <em>vect1</em>, </td>
1583
<td class="paramkey"></td>
1585
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1586
<td class="paramname"> <em>vect2</em>, </td>
1589
<td class="paramkey"></td>
1591
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1592
<td class="paramname"> <em>tmp_buf</em>, </td>
1595
<td class="paramkey"></td>
1597
<td class="paramtype">unsigned & </td>
1598
<td class="paramname"> <em>dsize</em></td><td> </td>
1603
<td></td><td></td><td></td>
1607
<div class="memdoc">
1609
<p>GAP AND operation. </p>
1610
<p>Function performs AND logical operation 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>
1611
<dl><dt><b>Parameters:</b></dt><dd>
1612
<table border="0" cellspacing="2" cellpadding="0">
1613
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1614
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1615
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1616
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out size of the destination </td></tr>
1620
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf OR vect1) </dd></dl>
1622
<p>Definition at line <a class="el" href="a00093_source.html#l03186">3186</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1624
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00933">bm::gap_buff_op()</a>.</p>
1628
<a class="anchor" id="ga58e0312d3ab0551e883176b170c0a3e8"></a><!-- doxytag: member="bm::gap_operation_any_and" ref="ga58e0312d3ab0551e883176b170c0a3e8" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1629
<div class="memitem">
1630
<div class="memproto">
1631
<table class="memname">
1633
<td class="memname">BMFORCEINLINE unsigned bm::gap_operation_any_and </td>
1635
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1636
<td class="paramname"> <em>vect1</em>, </td>
1639
<td class="paramkey"></td>
1641
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1642
<td class="paramname"> <em>vect2</em></td><td> </td>
1647
<td></td><td></td><td></td>
1651
<div class="memdoc">
1653
<p>GAP AND operation test. </p>
1654
<p>Function performs AND logical operation 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>
1655
<dl><dt><b>Parameters:</b></dt><dd>
1656
<table border="0" cellspacing="2" cellpadding="0">
1657
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1658
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1662
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1664
<p>Definition at line <a class="el" href="a00093_source.html#l03210">3210</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1666
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l01015">bm::gap_buff_any_op()</a>.</p>
1668
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>.</p>
1672
<a class="anchor" id="ga1c9b33d00f74206ad655dc2cef52428b"></a><!-- doxytag: member="bm::gap_operation_any_sub" ref="ga1c9b33d00f74206ad655dc2cef52428b" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1673
<div class="memitem">
1674
<div class="memproto">
1675
<table class="memname">
1677
<td class="memname">BMFORCEINLINE unsigned bm::gap_operation_any_sub </td>
1679
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1680
<td class="paramname"> <em>vect1</em>, </td>
1683
<td class="paramkey"></td>
1685
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1686
<td class="paramname"> <em>vect2</em></td><td> </td>
1691
<td></td><td></td><td></td>
1695
<div class="memdoc">
1697
<p>GAP SUB operation test. </p>
1698
<p>Function performs AND logical operation 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>
1699
<dl><dt><b>Parameters:</b></dt><dd>
1700
<table border="0" cellspacing="2" cellpadding="0">
1701
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1702
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1706
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1708
<p>Definition at line <a class="el" href="a00093_source.html#l03388">3388</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1710
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l01015">bm::gap_buff_any_op()</a>.</p>
1712
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>.</p>
1716
<a class="anchor" id="gab8800dff60eb05404a83159035e8e72f"></a><!-- doxytag: member="bm::gap_operation_any_xor" ref="gab8800dff60eb05404a83159035e8e72f" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
1717
<div class="memitem">
1718
<div class="memproto">
1719
<table class="memname">
1721
<td class="memname">BMFORCEINLINE unsigned bm::gap_operation_any_xor </td>
1723
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1724
<td class="paramname"> <em>vect1</em>, </td>
1727
<td class="paramkey"></td>
1729
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1730
<td class="paramname"> <em>vect2</em></td><td> </td>
1735
<td></td><td></td><td></td>
1739
<div class="memdoc">
1741
<p>GAP XOR operation test. </p>
1742
<p>Function performs AND logical operation 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>
1743
<dl><dt><b>Parameters:</b></dt><dd>
1744
<table border="0" cellspacing="2" cellpadding="0">
1745
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1746
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1750
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1752
<p>Definition at line <a class="el" href="a00093_source.html#l03277">3277</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1754
<p>References <a class="el" href="a00093_source.html#l01015">bm::gap_buff_any_op()</a>, and <a class="el" href="a00093_source.html#l03150">bm::xor_op()</a>.</p>
1756
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>.</p>
1760
<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)" -->
1761
<div class="memitem">
1762
<div class="memproto">
1763
<table class="memname">
1765
<td class="memname">gap_word_t* bm::gap_operation_or </td>
1767
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1768
<td class="paramname"> <em>vect1</em>, </td>
1771
<td class="paramkey"></td>
1773
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1774
<td class="paramname"> <em>vect2</em>, </td>
1777
<td class="paramkey"></td>
1779
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1780
<td class="paramname"> <em>tmp_buf</em>, </td>
1783
<td class="paramkey"></td>
1785
<td class="paramtype">unsigned & </td>
1786
<td class="paramname"> <em>dsize</em></td><td> </td>
1791
<td></td><td></td><td><code> [inline]</code></td>
1795
<div class="memdoc">
1797
<p>GAP OR operation. </p>
1798
<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>
1799
<dl><dt><b>Parameters:</b></dt><dd>
1800
<table border="0" cellspacing="2" cellpadding="0">
1801
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1802
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1803
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1804
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size</td></tr>
1808
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1810
<p>Definition at line <a class="el" href="a00093_source.html#l03318">3318</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1812
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, <a class="el" href="a00093_source.html#l00933">bm::gap_buff_op()</a>, and <a class="el" href="a00093_source.html#l02320">bm::gap_invert()</a>.</p>
1814
<p>Referenced by <a class="el" href="a00089_source.html#l00366">bm::combine_any_operation_with_block()</a>.</p>
1818
<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)" -->
1819
<div class="memitem">
1820
<div class="memproto">
1821
<table class="memname">
1823
<td class="memname">gap_word_t* bm::gap_operation_sub </td>
1825
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1826
<td class="paramname"> <em>vect1</em>, </td>
1829
<td class="paramkey"></td>
1831
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1832
<td class="paramname"> <em>vect2</em>, </td>
1835
<td class="paramkey"></td>
1837
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1838
<td class="paramname"> <em>tmp_buf</em>, </td>
1841
<td class="paramkey"></td>
1843
<td class="paramtype">unsigned & </td>
1844
<td class="paramname"> <em>dsize</em></td><td> </td>
1849
<td></td><td></td><td><code> [inline]</code></td>
1853
<div class="memdoc">
1855
<p>GAP SUB (AND NOT) operation. </p>
1856
<p>Function performs SUB logical operation 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>
1857
<dl><dt><b>Parameters:</b></dt><dd>
1858
<table border="0" cellspacing="2" cellpadding="0">
1859
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1860
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1861
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1862
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size</td></tr>
1866
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1868
<p>Definition at line <a class="el" href="a00093_source.html#l03363">3363</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1870
<p>References <a class="el" href="a00093_source.html#l03143">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00933">bm::gap_buff_op()</a>.</p>
1874
<a class="anchor" id="ga72d2d3933b4410413eeb02e9ee0a910d"></a><!-- doxytag: member="bm::gap_operation_xor" ref="ga72d2d3933b4410413eeb02e9ee0a910d" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &dsize)" -->
1875
<div class="memitem">
1876
<div class="memproto">
1877
<table class="memname">
1879
<td class="memname">BMFORCEINLINE gap_word_t* bm::gap_operation_xor </td>
1881
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1882
<td class="paramname"> <em>vect1</em>, </td>
1885
<td class="paramkey"></td>
1887
<td class="paramtype">const gap_word_t *BMRESTRICT </td>
1888
<td class="paramname"> <em>vect2</em>, </td>
1891
<td class="paramkey"></td>
1893
<td class="paramtype">gap_word_t *BMRESTRICT </td>
1894
<td class="paramname"> <em>tmp_buf</em>, </td>
1897
<td class="paramkey"></td>
1899
<td class="paramtype">unsigned & </td>
1900
<td class="paramname"> <em>dsize</em></td><td> </td>
1905
<td></td><td></td><td></td>
1909
<div class="memdoc">
1911
<p>GAP XOR operation. </p>
1912
<p>Function performs XOR logical operation 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>
1913
<dl><dt><b>Parameters:</b></dt><dd>
1914
<table border="0" cellspacing="2" cellpadding="0">
1915
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1916
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1917
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1918
<tr><td valign="top"></td><td valign="top"><em>dsize</em> </td><td>- out destination size </td></tr>
1922
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1924
<p>Definition at line <a class="el" href="a00093_source.html#l03252">3252</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1926
<p>References <a class="el" href="a00093_source.html#l00933">bm::gap_buff_op()</a>, and <a class="el" href="a00093_source.html#l03150">bm::xor_op()</a>.</p>
1930
<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)" -->
1931
<div class="memitem">
1932
<div class="memproto">
1933
<div class="memtemplate">
1934
template<typename T > </div>
1935
<table class="memname">
1937
<td class="memname">unsigned bm::gap_overhead </td>
1939
<td class="paramtype">const T * </td>
1940
<td class="paramname"> <em>length</em>, </td>
1943
<td class="paramkey"></td>
1945
<td class="paramtype">const T * </td>
1946
<td class="paramname"> <em>length_end</em>, </td>
1949
<td class="paramkey"></td>
1951
<td class="paramtype">const T * </td>
1952
<td class="paramname"> <em>glevel_len</em></td><td> </td>
1957
<td></td><td></td><td><code> [inline]</code></td>
1961
<div class="memdoc">
1963
<p>Convert bit block into an array of ints corresponding to 1 bits. </p>
1964
<p>OBSOLETE function</p>
1965
<p>Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table). </p>
1967
<p>Definition at line <a class="el" href="a00093_source.html#l04847">4847</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
1969
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l02450">bm::gap_calc_level()</a>, and <a class="el" href="a00091_source.html#l00075">bm::gap_levels</a>.</p>
1971
<p>Referenced by <a class="el" href="a00093_source.html#l04874">bm::improve_gap_levels()</a>.</p>
1975
<a class="anchor" id="gaef53b2877ff369badd7bb25b26bb9029"></a><!-- doxytag: member="bm::gap_set_all" ref="gaef53b2877ff369badd7bb25b26bb9029" args="(T *buf, unsigned set_max, unsigned value)" -->
1976
<div class="memitem">
1977
<div class="memproto">
1978
<div class="memtemplate">
1979
template<class T > </div>
1980
<table class="memname">
1982
<td class="memname">void bm::gap_set_all </td>
1984
<td class="paramtype">T * </td>
1985
<td class="paramname"> <em>buf</em>, </td>
1988
<td class="paramkey"></td>
1990
<td class="paramtype">unsigned </td>
1991
<td class="paramname"> <em>set_max</em>, </td>
1994
<td class="paramkey"></td>
1996
<td class="paramtype">unsigned </td>
1997
<td class="paramname"> <em>value</em></td><td> </td>
2002
<td></td><td></td><td><code> [inline]</code></td>
2006
<div class="memdoc">
2008
<p>Sets all bits to 0 or 1 (GAP). </p>
2009
<dl><dt><b>Parameters:</b></dt><dd>
2010
<table border="0" cellspacing="2" cellpadding="0">
2011
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2012
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
2017
<p>Definition at line <a class="el" href="a00093_source.html#l02249">2249</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2019
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
2021
<p>Referenced by <a class="el" href="a00093_source.html#l02270">bm::gap_init_range_block()</a>, and <a class="el" href="a00096_source.html#l01227">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
2025
<a class="anchor" id="ga550394048c163d41a135fb9068f2251b"></a><!-- doxytag: member="bm::gap_set_array" ref="ga550394048c163d41a135fb9068f2251b" args="(T *buf, const T *arr, unsigned len)" -->
2026
<div class="memitem">
2027
<div class="memproto">
2028
<div class="memtemplate">
2029
template<typename T > </div>
2030
<table class="memname">
2032
<td class="memname">unsigned bm::gap_set_array </td>
2034
<td class="paramtype">T * </td>
2035
<td class="paramname"> <em>buf</em>, </td>
2038
<td class="paramkey"></td>
2040
<td class="paramtype">const T * </td>
2041
<td class="paramname"> <em>arr</em>, </td>
2044
<td class="paramkey"></td>
2046
<td class="paramtype">unsigned </td>
2047
<td class="paramname"> <em>len</em></td><td> </td>
2052
<td></td><td></td><td><code> [inline]</code></td>
2056
<div class="memdoc">
2058
<p>Convert array to GAP buffer. </p>
2059
<dl><dt><b>Parameters:</b></dt><dd>
2060
<table border="0" cellspacing="2" cellpadding="0">
2061
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer. </td></tr>
2062
<tr><td valign="top"></td><td valign="top"><em>arr</em> </td><td>- array of values to set </td></tr>
2063
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- length of the array</td></tr>
2067
<dl class="return"><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
2069
<p>Definition at line <a class="el" href="a00093_source.html#l01346">1346</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2071
<p>References <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
2073
<p>Referenced by <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00096_source.html#l01227">bm::deseriaizer_base< DEC >::read_gap_block()</a>.</p>
2077
<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)" -->
2078
<div class="memitem">
2079
<div class="memproto">
2080
<div class="memtemplate">
2081
template<typename T > </div>
2082
<table class="memname">
2084
<td class="memname">unsigned bm::gap_set_value </td>
2086
<td class="paramtype">unsigned </td>
2087
<td class="paramname"> <em>val</em>, </td>
2090
<td class="paramkey"></td>
2092
<td class="paramtype">T *BMRESTRICT </td>
2093
<td class="paramname"> <em>buf</em>, </td>
2096
<td class="paramkey"></td>
2098
<td class="paramtype">unsigned </td>
2099
<td class="paramname"> <em>pos</em>, </td>
2102
<td class="paramkey"></td>
2104
<td class="paramtype">unsigned *BMRESTRICT </td>
2105
<td class="paramname"> <em>is_set</em></td><td> </td>
2110
<td></td><td></td><td><code> [inline]</code></td>
2114
<div class="memdoc">
2116
<p>Sets or clears bit in the GAP buffer. </p>
2117
<dl><dt><b>Parameters:</b></dt><dd>
2118
<table border="0" cellspacing="2" cellpadding="0">
2119
<tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>- new bit value </td></tr>
2120
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer. </td></tr>
2121
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- Index of bit to set. </td></tr>
2122
<tr><td valign="top"></td><td valign="top"><em>is_set</em> </td><td>- (OUT) flag if bit was actually set.</td></tr>
2126
<dl class="return"><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
2128
<p>Definition at line <a class="el" href="a00093_source.html#l01168">1168</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2130
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00461">bm::gap_bfind()</a>, and <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
2132
<p>Referenced by <a class="el" href="a00089_source.html#l01141">bm::combine_or()</a>, <a class="el" href="a00089_source.html#l01304">bm::combine_sub()</a>, <a class="el" href="a00089_source.html#l01220">bm::combine_xor()</a>, and <a class="el" href="a00103_source.html#l00106">bm::miniset< A, N >::set()</a>.</p>
2136
<a class="anchor" id="gabcedad4aea1a503c30f10e6d09b523f2"></a><!-- doxytag: member="bm::gap_sub_to_bitset" ref="gabcedad4aea1a503c30f10e6d09b523f2" args="(unsigned *BMRESTRICT dest, const T *BMRESTRICT buf)" -->
2137
<div class="memitem">
2138
<div class="memproto">
2139
<div class="memtemplate">
2140
template<typename T > </div>
2141
<table class="memname">
2143
<td class="memname">void bm::gap_sub_to_bitset </td>
2145
<td class="paramtype">unsigned *BMRESTRICT </td>
2146
<td class="paramname"> <em>dest</em>, </td>
2149
<td class="paramkey"></td>
2151
<td class="paramtype">const T *BMRESTRICT </td>
2152
<td class="paramname"> <em>buf</em></td><td> </td>
2157
<td></td><td></td><td><code> [inline]</code></td>
2161
<div class="memdoc">
2163
<p>SUB (AND NOT) GAP block to bitblock. </p>
2164
<dl><dt><b>Parameters:</b></dt><dd>
2165
<table border="0" cellspacing="2" cellpadding="0">
2166
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
2167
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2172
<p>Definition at line <a class="el" href="a00093_source.html#l01677">1677</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2174
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01553">bm::sub_bit_block()</a>.</p>
2178
<a class="anchor" id="ga866352ef5986a7d2b709795d127b666b"></a><!-- doxytag: member="bm::gap_test" ref="ga866352ef5986a7d2b709795d127b666b" args="(const T *buf, unsigned pos)" -->
2179
<div class="memitem">
2180
<div class="memproto">
2181
<div class="memtemplate">
2182
template<typename T > </div>
2183
<table class="memname">
2185
<td class="memname">unsigned bm::gap_test </td>
2187
<td class="paramtype">const T * </td>
2188
<td class="paramname"> <em>buf</em>, </td>
2191
<td class="paramkey"></td>
2193
<td class="paramtype">unsigned </td>
2194
<td class="paramname"> <em>pos</em></td><td> </td>
2199
<td></td><td></td><td><code> [inline]</code></td>
2203
<div class="memdoc">
2205
<p>Tests if bit = pos is true. </p>
2206
<dl><dt><b>Parameters:</b></dt><dd>
2207
<table border="0" cellspacing="2" cellpadding="0">
2208
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2209
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- index of the element. </td></tr>
2213
<dl class="return"><dt><b>Returns:</b></dt><dd>true if position is in "1" gap </dd></dl>
2215
<p>Definition at line <a class="el" href="a00093_source.html#l00489">489</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2217
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00072">bm::gap_max_bits</a>.</p>
2219
<p>Referenced by <a class="el" href="a00089_source.html#l01304">bm::combine_sub()</a>, <a class="el" href="a00089_source.html#l01220">bm::combine_xor()</a>, <a class="el" href="a00087_source.html#l01804">bm::bvector< Alloc >::get_bit()</a>, and <a class="el" href="a00103_source.html#l00095">bm::miniset< A, N >::test()</a>.</p>
2223
<a class="anchor" id="ga63c33428c2f5eac9f69d663203cd2172"></a><!-- doxytag: member="bm::gap_xor_to_bitset" ref="ga63c33428c2f5eac9f69d663203cd2172" args="(unsigned *BMRESTRICT dest, const T *BMRESTRICT buf)" -->
2224
<div class="memitem">
2225
<div class="memproto">
2226
<div class="memtemplate">
2227
template<typename T > </div>
2228
<table class="memname">
2230
<td class="memname">void bm::gap_xor_to_bitset </td>
2232
<td class="paramtype">unsigned *BMRESTRICT </td>
2233
<td class="paramname"> <em>dest</em>, </td>
2236
<td class="paramkey"></td>
2238
<td class="paramtype">const T *BMRESTRICT </td>
2239
<td class="paramname"> <em>buf</em></td><td> </td>
2244
<td></td><td></td><td><code> [inline]</code></td>
2248
<div class="memdoc">
2250
<p>XOR GAP block to bitblock. </p>
2251
<dl><dt><b>Parameters:</b></dt><dd>
2252
<table border="0" cellspacing="2" cellpadding="0">
2253
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
2254
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2259
<p>Definition at line <a class="el" href="a00093_source.html#l01705">1705</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2261
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01615">bm::xor_bit_block()</a>.</p>
2265
<a class="anchor" id="ga406952734f1b05962941b32e37b3eb96"></a><!-- doxytag: member="bm::gapcmp" ref="ga406952734f1b05962941b32e37b3eb96" args="(const T *buf1, const T *buf2)" -->
2266
<div class="memitem">
2267
<div class="memproto">
2268
<div class="memtemplate">
2269
template<typename T > </div>
2270
<table class="memname">
2272
<td class="memname">int bm::gapcmp </td>
2274
<td class="paramtype">const T * </td>
2275
<td class="paramname"> <em>buf1</em>, </td>
2278
<td class="paramkey"></td>
2280
<td class="paramtype">const T * </td>
2281
<td class="paramname"> <em>buf2</em></td><td> </td>
2286
<td></td><td></td><td><code> [inline]</code></td>
2290
<div class="memdoc">
2292
<p>Lexicographical comparison of GAP buffers. </p>
2293
<dl><dt><b>Parameters:</b></dt><dd>
2294
<table border="0" cellspacing="2" cellpadding="0">
2295
<tr><td valign="top"></td><td valign="top"><em>buf1</em> </td><td>- First GAP buffer pointer. </td></tr>
2296
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second GAP buffer pointer. </td></tr>
2300
<dl class="return"><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
2302
<p>Definition at line <a class="el" href="a00093_source.html#l00866">866</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2304
<p>Referenced by <a class="el" href="a00087_source.html#l01914">bm::bvector< Alloc >::compare()</a>.</p>
2308
<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)" -->
2309
<div class="memitem">
2310
<div class="memproto">
2311
<div class="memtemplate">
2312
template<typename T > </div>
2313
<table class="memname">
2315
<td class="memname">bool bm::improve_gap_levels </td>
2317
<td class="paramtype">const T * </td>
2318
<td class="paramname"> <em>length</em>, </td>
2321
<td class="paramkey"></td>
2323
<td class="paramtype">const T * </td>
2324
<td class="paramname"> <em>length_end</em>, </td>
2327
<td class="paramkey"></td>
2329
<td class="paramtype">T * </td>
2330
<td class="paramname"> <em>glevel_len</em></td><td> </td>
2335
<td></td><td></td><td><code> [inline]</code></td>
2339
<div class="memdoc">
2341
<p>Finds optimal gap blocks lengths. </p>
2342
<dl><dt><b>Parameters:</b></dt><dd>
2343
<table border="0" cellspacing="2" cellpadding="0">
2344
<tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>- first element of GAP lengths array </td></tr>
2345
<tr><td valign="top"></td><td valign="top"><em>length_end</em> </td><td>- end of the GAP lengths array </td></tr>
2346
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- destination GAP lengths array </td></tr>
2351
<p>Definition at line <a class="el" href="a00093_source.html#l04874">4874</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2353
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00091_source.html#l00075">bm::gap_levels</a>, <a class="el" href="a00091_source.html#l00070">bm::gap_max_buff_len</a>, and <a class="el" href="a00093_source.html#l04847">bm::gap_overhead()</a>.</p>
2355
<p>Referenced by <a class="el" href="a00087_source.html#l01880">bm::bvector< Alloc >::optimize_gap_size()</a>.</p>
2359
<a class="anchor" id="ga501aa9bf029e7f9ea9518e7003fe5549"></a><!-- doxytag: member="bm::set_gap_level" ref="ga501aa9bf029e7f9ea9518e7003fe5549" args="(T *buf, unsigned level)" -->
2360
<div class="memitem">
2361
<div class="memproto">
2362
<div class="memtemplate">
2363
template<typename T > </div>
2364
<table class="memname">
2366
<td class="memname">void bm::set_gap_level </td>
2368
<td class="paramtype">T * </td>
2369
<td class="paramname"> <em>buf</em>, </td>
2372
<td class="paramkey"></td>
2374
<td class="paramtype">unsigned </td>
2375
<td class="paramname"> <em>level</em></td><td> </td>
2380
<td></td><td></td><td><code> [inline]</code></td>
2384
<div class="memdoc">
2386
<p>Sets GAP block capacity level. </p>
2387
<dl><dt><b>Parameters:</b></dt><dd>
2388
<table border="0" cellspacing="2" cellpadding="0">
2389
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2390
<tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>new GAP block capacity level. </td></tr>
2395
<p>Definition at line <a class="el" href="a00093_source.html#l02434">2434</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
2397
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00075">bm::gap_levels</a>.</p>
2399
<p>Referenced by <a class="el" href="a00096_source.html#l03319">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, and <a class="el" href="a00096_source.html#l01316">bm::deserializer< BV, DEC >::deserialize_gap()</a>.</p>
2404
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Apr 25 09:37:39 2010 for BitMagic by
95
2405
<a href="http://www.doxygen.org/index.html">
96
2406
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>