1
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3
<title>BitMagic: bmfunc.h File Reference</title>
3
<title>BitMagic: bm::bit_XOR< W > Struct Template Reference</title>
4
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
<!-- Generated by Doxygen 1.4.1 -->
7
7
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="examples.html">Examples</a></div>
9
<a class="el" href="dir_000000.html">src</a></div>
10
<h1>bmfunc.h File Reference</h1><code>#include <memory.h></code><br>
13
Include dependency graph for bmfunc.h:<p><center><img src="a00136.png" border="0" usemap="#bmfunc.h_map" alt=""></center>
16
This graph shows which files directly or indirectly include this file:<p><center><img src="a00137.png" border="0" usemap="#bmfunc.hdep_map" alt=""></center>
17
<map name="bmfunc.hdep_map">
18
<area href="a00074.html" shape="rect" coords="132,192,172,214" alt="">
19
<area href="a00075.html" shape="rect" coords="232,6,296,27" alt="">
20
<area href="a00091.html" shape="rect" coords="356,30,444,51" alt="">
21
<area href="a00083.html" shape="rect" coords="221,102,307,123" alt="">
22
<area href="a00084.html" shape="rect" coords="221,147,307,168" alt="">
23
<area href="a00085.html" shape="rect" coords="220,192,308,214" alt="">
24
<area href="a00086.html" shape="rect" coords="221,238,307,259" alt="">
25
<area href="a00087.html" shape="rect" coords="220,283,308,304" alt="">
26
<area href="a00088.html" shape="rect" coords="221,328,307,350" alt="">
27
<area href="a00089.html" shape="rect" coords="221,374,307,395" alt="">
28
<area href="a00090.html" shape="rect" coords="220,419,308,440" alt="">
32
<a href="a00106.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
9
<a class="el" href="a00129.html">bm</a>::<a class="el" href="a00078.html">bit_XOR</a></div>
10
<h1>bm::bit_XOR< W > Struct Template Reference</h1>Bit XOR functor.
11
<a href="#_details">More...</a>
13
<code>#include <<a class="el" href="a00141.html">bmfunc.h</a>></code>
15
<table border="0" cellpadding="0" cellspacing="0">
34
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
35
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html">bm</a></td></tr>
37
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
38
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga40">BM_INCWORD_BITCOUNT</a>(cnt, w)</td></tr>
40
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
41
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a159">operation</a> { <a class="el" href="a00092.html#a159a1">BM_AND</a> = 0,
42
<a class="el" href="a00092.html#a159a2">BM_OR</a>,
43
<a class="el" href="a00092.html#a159a3">BM_SUB</a>,
44
<a class="el" href="a00092.html#a159a4">BM_XOR</a>
47
<tr><td class="mdescLeft"> </td><td class="mdescRight">Bit operations enumeration. <a href="a00092.html#a159">More...</a><br></td></tr>
48
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a160">ByteOrder</a> { <a class="el" href="a00092.html#a160a5">BigEndian</a> = 0,
49
<a class="el" href="a00092.html#a160a6">LittleEndian</a> = 1
52
<tr><td class="mdescLeft"> </td><td class="mdescRight">Byte orders recognized by the library. <a href="a00092.html#a160">More...</a><br></td></tr>
53
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
54
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga0">word_bitcount64</a> (<a class="el" href="a00092.html#a8">bm::id64_t</a> w)</td></tr>
56
<tr><td class="memTemplParams" nowrap colspan="2">template<typename W> </td></tr>
57
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a48">xor_swap</a> (W &x, W &y)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR swap two scalar variables. <a href="#a48"></a><br></td></tr>
60
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
61
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga1">wordcmp0</a> (T w1, T w2)</td></tr>
63
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes. <a href="a00097.html#ga1"></a><br></td></tr>
64
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
65
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga2">wordcmp</a> (T a, T b)</td></tr>
67
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes. <a href="a00097.html#ga2"></a><br></td></tr>
68
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
69
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a51">gap_bfind</a> (const T *buf, unsigned pos, unsigned *is_set)</td></tr>
71
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
72
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga0">gap_test</a> (const T *buf, unsigned pos)</td></tr>
74
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if bit = pos is true. <a href="a00096.html#ga0"></a><br></td></tr>
75
<tr><td class="memTemplParams" nowrap colspan="2">template<class T, class F> </td></tr>
76
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a53">for_each_nzblock</a> (T ***root, unsigned size1, unsigned size2, F &f)</td></tr>
78
<tr><td class="memTemplParams" nowrap colspan="2">template<class T, class F> </td></tr>
79
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a54">for_each_nzblock_if</a> (T ***root, unsigned size1, unsigned size2, F &f)</td></tr>
81
<tr><td class="memTemplParams" nowrap colspan="2">template<class T, class F> </td></tr>
82
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a55">for_each_block</a> (T ***root, unsigned size1, unsigned size2, F &f)</td></tr>
84
<tr><td class="memTemplParams" nowrap colspan="2">template<class T, class F> </td></tr>
85
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">F </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a56">bmfor_each</a> (T first, T last, F f)</td></tr>
87
<tr><td class="memTemplParams" nowrap colspan="2">template<class T> </td></tr>
88
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a57">sum_arr</a> (T *first, T *last)</td></tr>
90
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
91
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga1">gap_bit_count</a> (const T *buf)</td></tr>
93
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates number of bits ON in GAP buffer. <a href="a00096.html#ga1"></a><br></td></tr>
94
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
95
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00092.html#a59">gap_bit_count_range</a> (const T *buf, T left, T right)</td></tr>
97
<tr><td class="mdescLeft"> </td><td class="mdescRight">Counts 1 bits in GAP buffer in the closed [left, right] diapason. <a href="#a59"></a><br></td></tr>
98
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
99
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga2">gapcmp</a> (const T *buf1, const T *buf2)</td></tr>
101
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of GAP buffers. <a href="a00096.html#ga2"></a><br></td></tr>
102
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T, class F> </td></tr>
103
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga3">gap_buff_op</a> (T *BMRESTRICT dest, const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)</td></tr>
105
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract operation for GAP buffers. Receives functor F as a template argument. <a href="a00096.html#ga3"></a><br></td></tr>
106
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
107
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga4">gap_set_value</a> (unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)</td></tr>
109
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument Sets or clears bit in the GAP buffer. <a href="a00096.html#ga4"></a><br></td></tr>
110
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
111
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga5">gap_find_in_block</a> (const T *buf, unsigned nbit, <a class="el" href="a00092.html#a9">bm::id_t</a> *prev)</td></tr>
113
<tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for the next 1 bit in the GAP block. <a href="a00096.html#ga5"></a><br></td></tr>
114
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga3">or_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
116
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets bits to 1 in the bitblock. <a href="a00097.html#ga3"></a><br></td></tr>
117
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga4">sub_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
119
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB (AND NOT) bit interval to 1 in the bitblock. <a href="a00097.html#ga4"></a><br></td></tr>
120
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga5">xor_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
122
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR bit interval to 1 in the bitblock. <a href="a00097.html#ga5"></a><br></td></tr>
123
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
124
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga6">gap_sub_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
126
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB (AND NOT) GAP block to bitblock. <a href="a00096.html#ga6"></a><br></td></tr>
127
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
128
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga7">gap_xor_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
130
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR GAP block to bitblock. <a href="a00096.html#ga7"></a><br></td></tr>
131
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
132
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga8">gap_add_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
134
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds(OR) GAP block to bitblock. <a href="a00096.html#ga8"></a><br></td></tr>
135
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
136
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga9">gap_and_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
138
<tr><td class="mdescLeft"> </td><td class="mdescRight">ANDs GAP block to bitblock. <a href="a00096.html#ga9"></a><br></td></tr>
139
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
140
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga6">gap_bitset_and_count</a> (const unsigned *block, const T *buf)</td></tr>
142
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute bitcount of bit block AND masked by GAP block. <a href="a00097.html#ga6"></a><br></td></tr>
143
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
144
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga7">gap_bitset_sub_count</a> (const unsigned *block, const T *buf)</td></tr>
146
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute bitcount of bit block SUB masked by GAP block. <a href="a00097.html#ga7"></a><br></td></tr>
147
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
148
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga8">gap_bitset_xor_count</a> (const unsigned *block, const T *buf)</td></tr>
150
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute bitcount of bit block XOR masked by GAP block. <a href="a00097.html#ga8"></a><br></td></tr>
151
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
152
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga9">gap_bitset_or_count</a> (const unsigned *block, const T *buf)</td></tr>
154
<tr><td class="mdescLeft"> </td><td class="mdescRight">Compute bitcount of bit block OR masked by GAP block. <a href="a00097.html#ga9"></a><br></td></tr>
155
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga10">bit_block_set</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, <a class="el" href="a00092.html#a10">bm::word_t</a> value)</td></tr>
157
<tr><td class="mdescLeft"> </td><td class="mdescRight">Bitblock memset operation. <a href="a00097.html#ga10"></a><br></td></tr>
158
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
159
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga10">gap_convert_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
161
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="a00096.html#ga10"></a><br></td></tr>
162
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
163
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga11">gap_convert_to_bitset</a> (unsigned *dest, const T *buf, unsigned dest_len)</td></tr>
165
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="a00096.html#ga11"></a><br></td></tr>
166
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
167
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga12">gap_convert_to_bitset_smart</a> (unsigned *dest, const T *buf, <a class="el" href="a00092.html#a9">id_t</a> set_max)</td></tr>
169
<tr><td class="mdescLeft"> </td><td class="mdescRight">Smart GAP block to bitblock conversion. <a href="a00096.html#ga12"></a><br></td></tr>
170
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
171
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga13">gap_control_sum</a> (const T *buf)</td></tr>
173
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates sum of all words in GAP block. (For debugging purposes). <a href="a00096.html#ga13"></a><br></td></tr>
174
<tr><td class="memTemplParams" nowrap colspan="2">template<class T> </td></tr>
175
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga14">gap_set_all</a> (T *buf, unsigned set_max, unsigned value)</td></tr>
177
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets all bits to 0 or 1 (GAP). <a href="a00096.html#ga14"></a><br></td></tr>
178
<tr><td class="memTemplParams" nowrap colspan="2">template<class T> </td></tr>
179
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga15">gap_init_range_block</a> (T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)</td></tr>
181
<tr><td class="mdescLeft"> </td><td class="mdescRight">Init gap block so it has block in it (can be whole block). <a href="a00096.html#ga15"></a><br></td></tr>
182
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
183
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga16">gap_invert</a> (T *buf)</td></tr>
185
<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverts all bits in the GAP buffer. <a href="a00096.html#ga16"></a><br></td></tr>
186
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
187
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga17">gap_is_all_zero</a> (const T *buf, unsigned set_max)</td></tr>
189
<tr><td class="mdescLeft"> </td><td class="mdescRight">Temporary inverts all bits in the GAP buffer. Checks if GAP block is all-zero. <a href="a00096.html#ga17"></a><br></td></tr>
190
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
191
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga18">gap_is_all_one</a> (const T *buf, unsigned set_max)</td></tr>
193
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if GAP block is all-one. <a href="a00096.html#ga18"></a><br></td></tr>
194
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
195
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga19">gap_length</a> (const T *buf)</td></tr>
197
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block length. <a href="a00096.html#ga19"></a><br></td></tr>
198
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
199
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga20">gap_capacity</a> (const T *buf, const T *glevel_len)</td></tr>
201
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity. <a href="a00096.html#ga20"></a><br></td></tr>
202
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
203
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga21">gap_limit</a> (const T *buf, const T *glevel_len)</td></tr>
205
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity limit. <a href="a00096.html#ga21"></a><br></td></tr>
206
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
207
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga22">gap_level</a> (const T *buf)</td></tr>
209
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP blocks capacity level. <a href="a00096.html#ga22"></a><br></td></tr>
210
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
211
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga23">set_gap_level</a> (T *buf, unsigned level)</td></tr>
213
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets GAP block capacity level. <a href="a00096.html#ga23"></a><br></td></tr>
214
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
215
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga24">gap_calc_level</a> (int len, const T *glevel_len)</td></tr>
217
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates GAP block capacity level. <a href="a00096.html#ga24"></a><br></td></tr>
218
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
219
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga25">gap_free_elements</a> (const T *buf, const T *glevel_len)</td></tr>
221
<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="a00096.html#ga25"></a><br></td></tr>
222
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
223
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga11">bitcmp</a> (const T *buf1, const T *buf2, unsigned len)</td></tr>
225
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of BIT buffers. <a href="a00097.html#ga11"></a><br></td></tr>
226
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
227
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga26">bit_convert_to_gap</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00092.html#a9">bm::id_t</a> bits, unsigned dest_len)</td></tr>
229
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts bit block to GAP. <a href="a00096.html#ga26"></a><br></td></tr>
230
<tr><td class="memTemplParams" nowrap colspan="2">template<typename D, typename T> </td></tr>
231
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">D </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga27">gap_convert_to_arr</a> (D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len)</td></tr>
233
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert gap block into array of ints corresponding to 1 bits. <a href="a00096.html#ga27"></a><br></td></tr>
234
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
235
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga12">bit_convert_to_arr</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00092.html#a9">bm::id_t</a> bits, unsigned dest_len)</td></tr>
237
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert bit block into an array of ints corresponding to 1 bits. <a href="a00097.html#ga12"></a><br></td></tr>
238
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga13">bit_block_calc_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *block, const <a class="el" href="a00092.html#a10">bm::word_t</a> *block_end)</td></tr>
240
<tr><td class="mdescLeft"> </td><td class="mdescRight">Bitcount for bit string. <a href="a00097.html#ga13"></a><br></td></tr>
241
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga14">bit_count_change</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> w)</td></tr>
243
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga15">bit_block_calc_count_change</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *block, const <a class="el" href="a00092.html#a10">bm::word_t</a> *block_end)</td></tr>
245
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga16">bit_block_calc_count_range</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *block, <a class="el" href="a00092.html#a10">bm::word_t</a> left, <a class="el" href="a00092.html#a10">bm::word_t</a> right)</td></tr>
247
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
248
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga17">bit_invert</a> (T *start, T *end)</td></tr>
250
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga18">is_bits_one</a> (const <a class="el" href="a00092.html#a31">bm::wordop_t</a> *start, const <a class="el" href="a00092.html#a31">bm::wordop_t</a> *end)</td></tr>
252
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns "true" if all bits in the block are 1. <a href="a00097.html#ga18"></a><br></td></tr>
253
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga19">bit_is_all_zero</a> (const <a class="el" href="a00092.html#a31">bm::wordop_t</a> *start, const <a class="el" href="a00092.html#a31">bm::wordop_t</a> *end)</td></tr>
255
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns "true" if all bits in the block are 0. <a href="a00097.html#ga19"></a><br></td></tr>
256
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a103">and_op</a> (unsigned v1, unsigned v2)</td></tr>
258
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP and functor. <a href="#a103"></a><br></td></tr>
259
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a104">xor_op</a> (unsigned v1, unsigned v2)</td></tr>
261
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP xor functor. <a href="#a104"></a><br></td></tr>
262
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a19">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html#ga28">gap_operation_and</a> (const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
264
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation. <a href="a00096.html#ga28"></a><br></td></tr>
265
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a19">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html#ga29">gap_operation_xor</a> (const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
267
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation. <a href="a00096.html#ga29"></a><br></td></tr>
268
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a19">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html#ga30">gap_operation_or</a> (const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
270
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP OR operation. <a href="a00096.html#ga30"></a><br></td></tr>
271
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a19">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html#ga31">gap_operation_sub</a> (const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00092.html#a19">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
273
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB (AND NOT) operation. <a href="a00096.html#ga31"></a><br></td></tr>
274
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga20">bit_block_copy</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
276
<tr><td class="mdescLeft"> </td><td class="mdescRight">Bitblock copy operation. <a href="a00097.html#ga20"></a><br></td></tr>
277
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga21">bit_block_and</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
279
<tr><td class="mdescLeft"> </td><td class="mdescRight">Plain bitblock AND operation. Function does not analyse availability of source and destination blocks. <a href="a00097.html#ga21"></a><br></td></tr>
280
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga22">bit_block_and_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *src2)</td></tr>
282
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function ANDs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. <a href="a00097.html#ga22"></a><br></td></tr>
283
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga23">bit_block_xor_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
285
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function XORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. <a href="a00097.html#ga23"></a><br></td></tr>
286
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga24">bit_block_sub_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
288
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function SUBs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. <a href="a00097.html#ga24"></a><br></td></tr>
289
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga25">bit_block_or_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *src2)</td></tr>
291
<tr><td class="mdescLeft"> </td><td class="mdescRight">Function ORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. <a href="a00097.html#ga25"></a><br></td></tr>
292
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a10">bm::word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga26">bit_operation_and</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
294
<tr><td class="mdescLeft"> </td><td class="mdescRight">bitblock AND operation. <a href="a00097.html#ga26"></a><br></td></tr>
295
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga27">bit_operation_and_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
297
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs bitblock AND operation and calculates bitcount of the result. <a href="a00097.html#ga27"></a><br></td></tr>
298
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga28">bit_operation_sub_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
300
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs bitblock SUB operation and calculates bitcount of the result. <a href="a00097.html#ga28"></a><br></td></tr>
301
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga29">bit_operation_or_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
303
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs bitblock OR operation and calculates bitcount of the result. <a href="a00097.html#ga29"></a><br></td></tr>
304
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga30">bit_block_or</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
306
<tr><td class="mdescLeft"> </td><td class="mdescRight">Plain bitblock OR operation. Function does not analyse availability of source and destination blocks. <a href="a00097.html#ga30"></a><br></td></tr>
307
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a10">bm::word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga31">bit_operation_or</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
309
<tr><td class="mdescLeft"> </td><td class="mdescRight">Block OR operation. Makes analysis if block is 0 or FULL. <a href="a00097.html#ga31"></a><br></td></tr>
310
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga32">bit_block_sub</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
312
<tr><td class="mdescLeft"> </td><td class="mdescRight">Plain bitblock SUB (AND NOT) operation. Function does not analyse availability of source and destination blocks. <a href="a00097.html#ga32"></a><br></td></tr>
313
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a10">bm::word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga33">bit_operation_sub</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
315
<tr><td class="mdescLeft"> </td><td class="mdescRight">bitblock SUB operation. <a href="a00097.html#ga33"></a><br></td></tr>
316
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga34">bit_block_xor</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
318
<tr><td class="mdescLeft"> </td><td class="mdescRight">Plain bitblock XOR operation. Function does not analyse availability of source and destination blocks. <a href="a00097.html#ga34"></a><br></td></tr>
319
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a10">bm::word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga35">bit_operation_xor</a> (<a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src)</td></tr>
321
<tr><td class="mdescLeft"> </td><td class="mdescRight">bitblock XOR operation. <a href="a00097.html#ga35"></a><br></td></tr>
322
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00092.html#a9">bm::id_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga36">bit_operation_xor_count</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00092.html#a10">bm::word_t</a> *BMRESTRICT src2)</td></tr>
324
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs bitblock XOR operation and calculates bitcount of the result. <a href="a00097.html#ga36"></a><br></td></tr>
325
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga37">bit_find_head_tail</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *data, unsigned *head_idx, unsigned *tail_idx)</td></tr>
327
<tr><td class="mdescLeft"> </td><td class="mdescRight">Inspects bit block for zero words at the head and at the end. <a href="a00097.html#ga37"></a><br></td></tr>
328
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#ga38">bit_find_in_block</a> (const <a class="el" href="a00092.html#a10">bm::word_t</a> *data, unsigned nbit, <a class="el" href="a00092.html#a9">bm::id_t</a> *prev)</td></tr>
330
<tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for the next 1 bit in the BIT block. <a href="a00097.html#ga38"></a><br></td></tr>
331
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T, typename B> </td></tr>
332
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00097.html#ga39">bit_list</a> (T w, B *bits)</td></tr>
334
<tr><td class="mdescLeft"> </td><td class="mdescRight">Unpacks word into list of ON bit indexes. <a href="a00097.html#ga39"></a><br></td></tr>
335
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
336
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga32">gap_overhead</a> (const T *length, const T *length_end, const T *glevel_len)</td></tr>
338
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table). <a href="a00096.html#ga32"></a><br></td></tr>
339
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
340
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00096.html#ga33">improve_gap_levels</a> (const T *length, const T *length_end, T *glevel_len)</td></tr>
342
<tr><td class="mdescLeft"> </td><td class="mdescRight">Finds optimal gap blocks lengths. <a href="a00096.html#ga33"></a><br></td></tr>
344
<hr><h2>Enumeration Type Documentation</h2>
345
<a class="anchor" name="file_a160" doxytag="bmfunc.h::ByteOrder"></a><p>
346
<table class="mdTable" cellpadding="2" cellspacing="0">
349
<table cellpadding="0" cellspacing="0" border="0">
351
<td class="md" nowrap valign="top">enum <a class="el" href="a00092.html#a160">bm::ByteOrder</a> </td>
357
<table cellspacing="5" cellpadding="0" border="0">
365
Byte orders recognized by the library.
367
<dl compact><dt><b>Enumeration values: </b></dt><dd>
368
<table border="0" cellspacing="2" cellpadding="0">
369
<tr><td valign="top"><em><a class="anchor" name="a160a5" doxytag="BigEndian"></a>BigEndian</em> </td><td>
371
<tr><td valign="top"><em><a class="anchor" name="a160a6" doxytag="LittleEndian"></a>LittleEndian</em> </td><td>
377
Definition at line <a class="el" href="a00106.html#l00307">307</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
380
<a class="anchor" name="file_a159" doxytag="bmfunc.h::operation"></a><p>
381
<table class="mdTable" cellpadding="2" cellspacing="0">
384
<table cellpadding="0" cellspacing="0" border="0">
386
<td class="md" nowrap valign="top">enum <a class="el" href="a00092.html#a159">bm::operation</a> </td>
392
<table cellspacing="5" cellpadding="0" border="0">
400
Bit operations enumeration.
402
<dl compact><dt><b>Enumeration values: </b></dt><dd>
403
<table border="0" cellspacing="2" cellpadding="0">
404
<tr><td valign="top"><em><a class="anchor" name="a159a1" doxytag="BM_AND"></a>BM_AND</em> </td><td>
406
<tr><td valign="top"><em><a class="anchor" name="a159a2" doxytag="BM_OR"></a>BM_OR</em> </td><td>
408
<tr><td valign="top"><em><a class="anchor" name="a159a3" doxytag="BM_SUB"></a>BM_SUB</em> </td><td>
410
<tr><td valign="top"><em><a class="anchor" name="a159a4" doxytag="BM_XOR"></a>BM_XOR</em> </td><td>
416
Definition at line <a class="el" href="a00106.html#l00197">197</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
419
<hr><h2>Function Documentation</h2>
420
<a class="anchor" name="file_a103" doxytag="bmfunc.h::and_op"></a><p>
421
<table class="mdTable" cellpadding="2" cellspacing="0">
424
<table cellpadding="0" cellspacing="0" border="0">
426
<td class="md" nowrap valign="top">unsigned and_op </td>
427
<td class="md" valign="top">( </td>
428
<td class="md" nowrap valign="top">unsigned </td>
429
<td class="mdname" nowrap> <em>v1</em>, </td>
432
<td class="md" nowrap align="right"></td>
434
<td class="md" nowrap>unsigned </td>
435
<td class="mdname" nowrap> <em>v2</em></td>
439
<td class="md">) </td>
440
<td class="md" colspan="2"><code> [inline]</code></td>
446
<table cellspacing="5" cellpadding="0" border="0">
458
Definition at line <a class="el" href="a00106.html#l02329">2329</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
461
<a class="anchor" name="file_a56" doxytag="bmfunc.h::bmfor_each"></a><p>
462
<table class="mdTable" cellpadding="2" cellspacing="0">
465
<table cellpadding="0" cellspacing="0" border="0">
467
<td class="mdPrefix" colspan="4">
468
template<class T, class F> </td>
471
<td class="md" nowrap valign="top">F bmfor_each </td>
472
<td class="md" valign="top">( </td>
473
<td class="md" nowrap valign="top">T </td>
474
<td class="mdname" nowrap> <em>first</em>, </td>
477
<td class="md" nowrap align="right"></td>
479
<td class="md" nowrap>T </td>
480
<td class="mdname" nowrap> <em>last</em>, </td>
483
<td class="md" nowrap align="right"></td>
485
<td class="md" nowrap>F </td>
486
<td class="mdname" nowrap> <em>f</em></td>
490
<td class="md">) </td>
491
<td class="md" colspan="2"></td>
497
<table cellspacing="5" cellpadding="0" border="0">
505
Special BM optimized analog of STL for_each
507
Definition at line <a class="el" href="a00106.html#l00517">517</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
510
<a class="anchor" name="file_a55" doxytag="bmfunc.h::for_each_block"></a><p>
511
<table class="mdTable" cellpadding="2" cellspacing="0">
514
<table cellpadding="0" cellspacing="0" border="0">
516
<td class="mdPrefix" colspan="4">
517
template<class T, class F> </td>
520
<td class="md" nowrap valign="top">void for_each_block </td>
521
<td class="md" valign="top">( </td>
522
<td class="md" nowrap valign="top">T *** </td>
523
<td class="mdname" nowrap> <em>root</em>, </td>
526
<td class="md" nowrap align="right"></td>
528
<td class="md" nowrap>unsigned </td>
529
<td class="mdname" nowrap> <em>size1</em>, </td>
532
<td class="md" nowrap align="right"></td>
534
<td class="md" nowrap>unsigned </td>
535
<td class="mdname" nowrap> <em>size2</em>, </td>
538
<td class="md" nowrap align="right"></td>
540
<td class="md" nowrap>F & </td>
541
<td class="mdname" nowrap> <em>f</em></td>
545
<td class="md">) </td>
546
<td class="md" colspan="2"></td>
552
<table cellspacing="5" cellpadding="0" border="0">
560
For each block executes supplied function.
562
Definition at line <a class="el" href="a00106.html#l00488">488</a> of file <a class="el" href="a00106.html">bmfunc.h</a>.
564
Referenced by <a class="el" href="a00103.html#l00810">bm::count_intervals()</a>, and <a class="el" href="a00102.html#l01732">bm::bvector< Alloc, MS >::invert()</a>. </td>
567
<a class="anchor" name="file_a53" doxytag="bmfunc.h::for_each_nzblock"></a><p>
568
<table class="mdTable" cellpadding="2" cellspacing="0">
571
<table cellpadding="0" cellspacing="0" border="0">
573
<td class="mdPrefix" colspan="4">
574
template<class T, class F> </td>
577
<td class="md" nowrap valign="top">void for_each_nzblock </td>
578
<td class="md" valign="top">( </td>
579
<td class="md" nowrap valign="top">T *** </td>
580
<td class="mdname" nowrap> <em>root</em>, </td>
583
<td class="md" nowrap align="right"></td>
585
<td class="md" nowrap>unsigned </td>
586
<td class="mdname" nowrap> <em>size1</em>, </td>
589
<td class="md" nowrap align="right"></td>
591
<td class="md" nowrap>unsigned </td>
592
<td class="mdname" nowrap> <em>size2</em>, </td>
595
<td class="md" nowrap align="right"></td>
597
<td class="md" nowrap>F & </td>
598
<td class="mdname" nowrap> <em>f</em></td>
602
<td class="md">) </td>
603
<td class="md" colspan="2"></td>
609
<table cellspacing="5" cellpadding="0" border="0">
617
For each non-zero block executes supplied function.
619
Definition at line <a class="el" href="a00106.html#l00437">437</a> of file <a class="el" href="a00106.html">bmfunc.h</a>.
621
Referenced by <a class="el" href="a00102.html#l01603">bm::bvector< Alloc, MS >::count()</a>, <a class="el" href="a00102.html#l01081">bm::bvector< Alloc, MS >::count_blocks()</a>, <a class="el" href="a00102.html#l01790">bm::bvector< Alloc, MS >::optimize()</a>, and <a class="el" href="a00102.html#l01829">bm::bvector< Alloc, MS >::set_gap_levels()</a>. </td>
624
<a class="anchor" name="file_a54" doxytag="bmfunc.h::for_each_nzblock_if"></a><p>
625
<table class="mdTable" cellpadding="2" cellspacing="0">
628
<table cellpadding="0" cellspacing="0" border="0">
630
<td class="mdPrefix" colspan="4">
631
template<class T, class F> </td>
634
<td class="md" nowrap valign="top">bool for_each_nzblock_if </td>
635
<td class="md" valign="top">( </td>
636
<td class="md" nowrap valign="top">T *** </td>
637
<td class="mdname" nowrap> <em>root</em>, </td>
640
<td class="md" nowrap align="right"></td>
642
<td class="md" nowrap>unsigned </td>
643
<td class="mdname" nowrap> <em>size1</em>, </td>
646
<td class="md" nowrap align="right"></td>
648
<td class="md" nowrap>unsigned </td>
649
<td class="mdname" nowrap> <em>size2</em>, </td>
652
<td class="md" nowrap align="right"></td>
654
<td class="md" nowrap>F & </td>
655
<td class="mdname" nowrap> <em>f</em></td>
659
<td class="md">) </td>
660
<td class="md" colspan="2"></td>
666
<table cellspacing="5" cellpadding="0" border="0">
674
For each non-zero block executes supplied function-predicate. Function returns if function-predicate returns true
676
Definition at line <a class="el" href="a00106.html#l00462">462</a> of file <a class="el" href="a00106.html">bmfunc.h</a>.
678
Referenced by <a class="el" href="a00102.html#l01149">bm::bvector< Alloc, MS >::any()</a>. </td>
681
<a class="anchor" name="file_a51" doxytag="bmfunc.h::gap_bfind"></a><p>
682
<table class="mdTable" cellpadding="2" cellspacing="0">
685
<table cellpadding="0" cellspacing="0" border="0">
687
<td class="mdPrefix" colspan="4">
688
template<typename T> </td>
691
<td class="md" nowrap valign="top">unsigned gap_bfind </td>
692
<td class="md" valign="top">( </td>
693
<td class="md" nowrap valign="top">const T * </td>
694
<td class="mdname" nowrap> <em>buf</em>, </td>
697
<td class="md" nowrap align="right"></td>
699
<td class="md" nowrap>unsigned </td>
700
<td class="mdname" nowrap> <em>pos</em>, </td>
703
<td class="md" nowrap align="right"></td>
705
<td class="md" nowrap>unsigned * </td>
706
<td class="mdname" nowrap> <em>is_set</em></td>
710
<td class="md">) </td>
711
<td class="md" colspan="2"></td>
717
<table cellspacing="5" cellpadding="0" border="0">
727
Definition at line <a class="el" href="a00106.html#l00371">371</a> of file <a class="el" href="a00106.html">bmfunc.h</a>.
729
References <a class="el" href="a00105.html#l00014">BM_ASSERT</a>.
731
Referenced by <a class="el" href="a00106.html#l00579">bm::gap_bit_count_range()</a>, <a class="el" href="a00106.html#l00935">bm::gap_find_in_block()</a>, and <a class="el" href="a00106.html#l00843">bm::gap_set_value()</a>. </td>
734
<a class="anchor" name="file_a59" doxytag="bmfunc.h::gap_bit_count_range"></a><p>
735
<table class="mdTable" cellpadding="2" cellspacing="0">
738
<table cellpadding="0" cellspacing="0" border="0">
740
<td class="mdPrefix" colspan="4">
741
template<typename T> </td>
744
<td class="md" nowrap valign="top">unsigned gap_bit_count_range </td>
745
<td class="md" valign="top">( </td>
746
<td class="md" nowrap valign="top">const T * </td>
747
<td class="mdname" nowrap> <em>buf</em>, </td>
750
<td class="md" nowrap align="right"></td>
752
<td class="md" nowrap>T </td>
753
<td class="mdname" nowrap> <em>left</em>, </td>
756
<td class="md" nowrap align="right"></td>
758
<td class="md" nowrap>T </td>
759
<td class="mdname" nowrap> <em>right</em></td>
763
<td class="md">) </td>
764
<td class="md" colspan="2"></td>
770
<table cellspacing="5" cellpadding="0" border="0">
778
Counts 1 bits in GAP buffer in the closed [left, right] diapason.
780
<dl compact><dt><b>Parameters:</b></dt><dd>
781
<table border="0" cellspacing="2" cellpadding="0">
782
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
783
<tr><td valign="top"></td><td valign="top"><em>left</em> </td><td>- leftmost bit index to start from </td></tr>
784
<tr><td valign="top"></td><td valign="top"><em>right-</em> </td><td>rightmost bit index </td></tr>
787
<dl compact><dt><b>Returns:</b></dt><dd>Number of non-zero bits. </dd></dl>
790
Definition at line <a class="el" href="a00106.html#l00579">579</a> of file <a class="el" href="a00106.html">bmfunc.h</a>.
792
References <a class="el" href="a00105.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00106.html#l00371">bm::gap_bfind()</a>.
794
Referenced by <a class="el" href="a00102.html#l01638">bm::bvector< Alloc, MS >::count_range()</a>. </td>
797
<a class="anchor" name="file_a57" doxytag="bmfunc.h::sum_arr"></a><p>
798
<table class="mdTable" cellpadding="2" cellspacing="0">
801
<table cellpadding="0" cellspacing="0" border="0">
803
<td class="mdPrefix" colspan="4">
804
template<class T> </td>
807
<td class="md" nowrap valign="top">T sum_arr </td>
808
<td class="md" valign="top">( </td>
809
<td class="md" nowrap valign="top">T * </td>
810
<td class="mdname" nowrap> <em>first</em>, </td>
813
<td class="md" nowrap align="right"></td>
815
<td class="md" nowrap>T * </td>
816
<td class="mdname" nowrap> <em>last</em></td>
820
<td class="md">) </td>
821
<td class="md" colspan="2"></td>
827
<table cellspacing="5" cellpadding="0" border="0">
835
Computes SUM of all elements of the sequence
837
Definition at line <a class="el" href="a00106.html#l00529">529</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
840
<a class="anchor" name="file_a104" doxytag="bmfunc.h::xor_op"></a><p>
841
<table class="mdTable" cellpadding="2" cellspacing="0">
844
<table cellpadding="0" cellspacing="0" border="0">
846
<td class="md" nowrap valign="top">unsigned xor_op </td>
847
<td class="md" valign="top">( </td>
848
<td class="md" nowrap valign="top">unsigned </td>
849
<td class="mdname" nowrap> <em>v1</em>, </td>
852
<td class="md" nowrap align="right"></td>
854
<td class="md" nowrap>unsigned </td>
855
<td class="mdname" nowrap> <em>v2</em></td>
859
<td class="md">) </td>
860
<td class="md" colspan="2"><code> [inline]</code></td>
866
<table cellspacing="5" cellpadding="0" border="0">
878
Definition at line <a class="el" href="a00106.html#l02336">2336</a> of file <a class="el" href="a00106.html">bmfunc.h</a>. </td>
881
<a class="anchor" name="file_a48" doxytag="bmfunc.h::xor_swap"></a><p>
17
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
18
<tr><td class="memItemLeft" nowrap align="right" valign="top">W </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#a0">operator()</a> (W w1, W w2)</td></tr>
21
<hr><a name="_details"></a><h2>Detailed Description</h2>
22
<h3>template<typename W><br>
23
struct bm::bit_XOR< W ></h3>
29
Definition at line <a class="el" href="a00141.html#l04191">4191</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.<hr><h2>Member Function Documentation</h2>
30
<a class="anchor" name="a0" doxytag="bm::bit_XOR::operator()"></a><p>
882
31
<table class="mdTable" cellpadding="2" cellspacing="0">
884
33
<td class="mdRow">