1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3
<title>BitMagic: GAP functions</title>
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
6
<!-- Generated by Doxygen 1.4.1 -->
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>
10
[<a class="el" href="a00131.html">BitMagic C++ Library</a>]</small>
13
Collaboration diagram for GAP functions:<center><table><tr><td><img src="a00133.png" border="0" alt="" usemap="#a00191_map">
14
<map name="a00191_map">
15
<area href="a00131.html" shape="rect" coords="19,5,152,26" alt="">
16
</map></td></tr></table></center>
17
<table border="0" cellpadding="0" cellspacing="0">
19
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
20
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html">bm::gap_len_table< T ></a></td></tr>
22
<tr><td class="mdescLeft"> </td><td class="mdescRight">Default GAP lengths table. <a href="a00104.html#_details">More...</a><br></td></tr>
23
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html">bm::gap_len_table_min< T ></a></td></tr>
25
<tr><td class="mdescLeft"> </td><td class="mdescRight">Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets. <a href="a00105.html#_details">More...</a><br></td></tr>
26
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
27
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
28
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga0">bm::gap_test</a> (const T *buf, unsigned pos)</td></tr>
30
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if bit = pos is true. <a href="#ga0"></a><br></td></tr>
31
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
32
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga1">bm::gap_bit_count</a> (const T *buf)</td></tr>
34
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates number of bits ON in GAP buffer. <a href="#ga1"></a><br></td></tr>
35
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
36
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga2">bm::gapcmp</a> (const T *buf1, const T *buf2)</td></tr>
38
<tr><td class="mdescLeft"> </td><td class="mdescRight">Lexicographical comparison of GAP buffers. <a href="#ga2"></a><br></td></tr>
39
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T, class F> </td></tr>
40
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga3">bm::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>
42
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract operation for GAP buffers. Receives functor F as a template argument. <a href="#ga3"></a><br></td></tr>
43
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T, class F> </td></tr>
44
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga4">bm::gap_buff_any_op</a> (const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)</td></tr>
46
<tr><td class="mdescLeft"> </td><td class="mdescRight">Abstract distance test operation for GAP buffers. Receives functor F as a template argument. <a href="#ga4"></a><br></td></tr>
47
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
48
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga5">bm::gap_set_value</a> (unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)</td></tr>
50
<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="#ga5"></a><br></td></tr>
51
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
52
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga6">bm::gap_find_in_block</a> (const T *buf, unsigned nbit, <a class="el" href="a00129.html#a26">bm::id_t</a> *prev)</td></tr>
54
<tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for the next 1 bit in the GAP block. <a href="#ga6"></a><br></td></tr>
55
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
56
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga7">bm::gap_sub_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
58
<tr><td class="mdescLeft"> </td><td class="mdescRight">SUB (AND NOT) GAP block to bitblock. <a href="#ga7"></a><br></td></tr>
59
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
60
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga8">bm::gap_xor_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
62
<tr><td class="mdescLeft"> </td><td class="mdescRight">XOR GAP block to bitblock. <a href="#ga8"></a><br></td></tr>
63
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
64
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga9">bm::gap_add_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
66
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds(OR) GAP block to bitblock. <a href="#ga9"></a><br></td></tr>
67
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
68
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga10">bm::gap_and_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
70
<tr><td class="mdescLeft"> </td><td class="mdescRight">ANDs GAP block to bitblock. <a href="#ga10"></a><br></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga11">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
74
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga11"></a><br></td></tr>
75
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
76
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga12">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf, unsigned dest_len)</td></tr>
78
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP block to bitblock conversion. <a href="#ga12"></a><br></td></tr>
79
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
80
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned * </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga13">bm::gap_convert_to_bitset_smart</a> (unsigned *dest, const T *buf, <a class="el" href="a00129.html#a26">id_t</a> set_max)</td></tr>
82
<tr><td class="mdescLeft"> </td><td class="mdescRight">Smart GAP block to bitblock conversion. <a href="#ga13"></a><br></td></tr>
83
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
84
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga14">bm::gap_control_sum</a> (const T *buf)</td></tr>
86
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates sum of all words in GAP block. (For debugging purposes). <a href="#ga14"></a><br></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">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga15">bm::gap_set_all</a> (T *buf, unsigned set_max, unsigned value)</td></tr>
90
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets all bits to 0 or 1 (GAP). <a href="#ga15"></a><br></td></tr>
91
<tr><td class="memTemplParams" nowrap colspan="2">template<class T> </td></tr>
92
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga16">bm::gap_init_range_block</a> (T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)</td></tr>
94
<tr><td class="mdescLeft"> </td><td class="mdescRight">Init gap block so it has block in it (can be whole block). <a href="#ga16"></a><br></td></tr>
95
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
96
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga17">bm::gap_invert</a> (T *buf)</td></tr>
98
<tr><td class="mdescLeft"> </td><td class="mdescRight">Inverts all bits in the GAP buffer. <a href="#ga17"></a><br></td></tr>
99
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
100
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga18">bm::gap_is_all_zero</a> (const T *buf, unsigned set_max)</td></tr>
102
<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="#ga18"></a><br></td></tr>
103
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
104
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga19">bm::gap_is_all_one</a> (const T *buf, unsigned set_max)</td></tr>
106
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks if GAP block is all-one. <a href="#ga19"></a><br></td></tr>
107
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
108
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga20">bm::gap_length</a> (const T *buf)</td></tr>
110
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block length. <a href="#ga20"></a><br></td></tr>
111
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
112
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga21">bm::gap_capacity</a> (const T *buf, const T *glevel_len)</td></tr>
114
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity. <a href="#ga21"></a><br></td></tr>
115
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
116
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga22">bm::gap_limit</a> (const T *buf, const T *glevel_len)</td></tr>
118
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP block capacity limit. <a href="#ga22"></a><br></td></tr>
119
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
120
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga23">bm::gap_level</a> (const T *buf)</td></tr>
122
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returs GAP blocks capacity level. <a href="#ga23"></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="a00133.html#ga24">bm::set_gap_level</a> (T *buf, unsigned level)</td></tr>
126
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets GAP block capacity level. <a href="#ga24"></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">int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga25">bm::gap_calc_level</a> (int len, const T *glevel_len)</td></tr>
130
<tr><td class="mdescLeft"> </td><td class="mdescRight">Calculates GAP block capacity level. <a href="#ga25"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga26">bm::gap_free_elements</a> (const T *buf, const T *glevel_len)</td></tr>
134
<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="#ga26"></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">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga27">bm::bit_convert_to_gap</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00129.html#a26">bm::id_t</a> bits, unsigned dest_len)</td></tr>
138
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts bit block to GAP. <a href="#ga27"></a><br></td></tr>
139
<tr><td class="memTemplParams" nowrap colspan="2">template<typename D, typename T> </td></tr>
140
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">D </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga28">bm::gap_convert_to_arr</a> (D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len)</td></tr>
142
<tr><td class="mdescLeft"> </td><td class="mdescRight">Convert gap block into array of ints corresponding to 1 bits. <a href="#ga28"></a><br></td></tr>
143
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga29">bm::gap_operation_and</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
145
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation. <a href="#ga29"></a><br></td></tr>
146
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga30">bm::gap_operation_any_and</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2)</td></tr>
148
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP AND operation test. <a href="#ga30"></a><br></td></tr>
149
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga31">bm::gap_operation_xor</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
151
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation. <a href="#ga31"></a><br></td></tr>
152
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga32">bm::gap_operation_any_xor</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2)</td></tr>
154
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP XOR operation test. <a href="#ga32"></a><br></td></tr>
155
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga33">bm::gap_operation_or</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
157
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP OR operation. <a href="#ga33"></a><br></td></tr>
158
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga34">bm::gap_operation_sub</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2, <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT tmp_buf)</td></tr>
160
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB (AND NOT) operation. <a href="#ga34"></a><br></td></tr>
161
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#ga35">bm::gap_operation_any_sub</a> (const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect1, const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT vect2)</td></tr>
163
<tr><td class="mdescLeft"> </td><td class="mdescRight">GAP SUB operation test. <a href="#ga35"></a><br></td></tr>
164
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
165
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">unsigned </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga36">bm::gap_overhead</a> (const T *length, const T *length_end, const T *glevel_len)</td></tr>
167
<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="#ga36"></a><br></td></tr>
168
<tr><td class="memTemplParams" nowrap colspan="2">template<typename T> </td></tr>
169
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00133.html#ga37">bm::improve_gap_levels</a> (const T *length, const T *length_end, T *glevel_len)</td></tr>
171
<tr><td class="mdescLeft"> </td><td class="mdescRight">Finds optimal gap blocks lengths. <a href="#ga37"></a><br></td></tr>
173
<hr><a name="_details"></a><h2>Detailed Description</h2>
174
GAP functions implement different opereations on GAP compressed blocks and serve as a minimal building blocks. <hr><h2>Function Documentation</h2>
175
<a class="anchor" name="ga27" doxytag="bm::bit_convert_to_gap"></a><p>
176
<table class="mdTable" cellpadding="2" cellspacing="0">
179
<table cellpadding="0" cellspacing="0" border="0">
181
<td class="mdPrefix" colspan="4">
182
template<typename T> </td>
185
<td class="md" nowrap valign="top">unsigned bit_convert_to_gap </td>
186
<td class="md" valign="top">( </td>
187
<td class="md" nowrap valign="top">T *BMRESTRICT </td>
188
<td class="mdname" nowrap> <em>dest</em>, </td>
191
<td class="md" nowrap align="right"></td>
193
<td class="md" nowrap>const unsigned *BMRESTRICT </td>
194
<td class="mdname" nowrap> <em>src</em>, </td>
197
<td class="md" nowrap align="right"></td>
199
<td class="md" nowrap><a class="el" href="a00129.html#a26">bm::id_t</a> </td>
200
<td class="mdname" nowrap> <em>bits</em>, </td>
203
<td class="md" nowrap align="right"></td>
205
<td class="md" nowrap>unsigned </td>
206
<td class="mdname" nowrap> <em>dest_len</em></td>
210
<td class="md">) </td>
211
<td class="md" colspan="2"></td>
217
<table cellspacing="5" cellpadding="0" border="0">
225
Converts bit block to GAP.
227
<dl compact><dt><b>Parameters:</b></dt><dd>
228
<table border="0" cellspacing="2" cellpadding="0">
229
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- Destinatio GAP buffer. </td></tr>
230
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- Source bitblock buffer. </td></tr>
231
<tr><td valign="top"></td><td valign="top"><em>bits</em> </td><td>- Number of bits to convert. </td></tr>
232
<tr><td valign="top"></td><td valign="top"><em>dest_len</em> </td><td>- length of the dest. buffer. </td></tr>
235
<dl compact><dt><b>Returns:</b></dt><dd>New ength of GAP block or 0 if conversion failed (insufficicent space). </dd></dl>
238
Definition at line <a class="el" href="a00141.html#l02172">2172</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
240
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00140.html#l00070">BMRESTRICT</a>. </td>
243
<a class="anchor" name="ga9" doxytag="bm::gap_add_to_bitset"></a><p>
244
<table class="mdTable" cellpadding="2" cellspacing="0">
247
<table cellpadding="0" cellspacing="0" border="0">
249
<td class="mdPrefix" colspan="4">
250
template<typename T> </td>
253
<td class="md" nowrap valign="top">void gap_add_to_bitset </td>
254
<td class="md" valign="top">( </td>
255
<td class="md" nowrap valign="top">unsigned * </td>
256
<td class="mdname" nowrap> <em>dest</em>, </td>
259
<td class="md" nowrap align="right"></td>
261
<td class="md" nowrap>const T * </td>
262
<td class="mdname" nowrap> <em>buf</em></td>
266
<td class="md">) </td>
267
<td class="md" colspan="2"></td>
273
<table cellspacing="5" cellpadding="0" border="0">
281
Adds(OR) GAP block to bitblock.
283
<dl compact><dt><b>Parameters:</b></dt><dd>
284
<table border="0" cellspacing="2" cellpadding="0">
285
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
286
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
291
Definition at line <a class="el" href="a00141.html#l01399">1399</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
293
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l01149">bm::or_bit_block()</a>.
295
Referenced by <a class="el" href="a00141.html#l01808">bm::gap_convert_to_bitset()</a>. </td>
298
<a class="anchor" name="ga10" doxytag="bm::gap_and_to_bitset"></a><p>
299
<table class="mdTable" cellpadding="2" cellspacing="0">
302
<table cellpadding="0" cellspacing="0" border="0">
304
<td class="mdPrefix" colspan="4">
305
template<typename T> </td>
308
<td class="md" nowrap valign="top">void gap_and_to_bitset </td>
309
<td class="md" valign="top">( </td>
310
<td class="md" nowrap valign="top">unsigned * </td>
311
<td class="mdname" nowrap> <em>dest</em>, </td>
314
<td class="md" nowrap align="right"></td>
316
<td class="md" nowrap>const T * </td>
317
<td class="mdname" nowrap> <em>buf</em></td>
321
<td class="md">) </td>
322
<td class="md" colspan="2"></td>
328
<table cellspacing="5" cellpadding="0" border="0">
336
ANDs GAP block to bitblock.
338
<dl compact><dt><b>Parameters:</b></dt><dd>
339
<table border="0" cellspacing="2" cellpadding="0">
340
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
341
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
346
Definition at line <a class="el" href="a00141.html#l01431">1431</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
348
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l01211">bm::sub_bit_block()</a>. </td>
351
<a class="anchor" name="ga1" doxytag="bm::gap_bit_count"></a><p>
352
<table class="mdTable" cellpadding="2" cellspacing="0">
355
<table cellpadding="0" cellspacing="0" border="0">
357
<td class="mdPrefix" colspan="4">
358
template<typename T> </td>
361
<td class="md" nowrap valign="top">unsigned gap_bit_count </td>
362
<td class="md" valign="top">( </td>
363
<td class="md" nowrap valign="top">const T * </td>
364
<td class="mdname1" valign="top" nowrap> <em>buf</em> </td>
365
<td class="md" valign="top"> ) </td>
366
<td class="md" nowrap></td>
372
<table cellspacing="5" cellpadding="0" border="0">
380
Calculates number of bits ON in GAP buffer.
382
<dl compact><dt><b>Parameters:</b></dt><dd>
383
<table border="0" cellspacing="2" cellpadding="0">
384
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
387
<dl compact><dt><b>Returns:</b></dt><dd>Number of non-zero bits. </dd></dl>
390
Definition at line <a class="el" href="a00141.html#l00659">659</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
392
Referenced by <a class="el" href="a00137.html#l02351">bm::bvector< Alloc, MS >::stat()</a>. </td>
395
<a class="anchor" name="ga4" doxytag="bm::gap_buff_any_op"></a><p>
396
<table class="mdTable" cellpadding="2" cellspacing="0">
399
<table cellpadding="0" cellspacing="0" border="0">
401
<td class="mdPrefix" colspan="4">
402
template<typename T, class F> </td>
405
<td class="md" nowrap valign="top">unsigned gap_buff_any_op </td>
406
<td class="md" valign="top">( </td>
407
<td class="md" nowrap valign="top">const T *BMRESTRICT </td>
408
<td class="mdname" nowrap> <em>vect1</em>, </td>
411
<td class="md" nowrap align="right"></td>
413
<td class="md" nowrap>unsigned </td>
414
<td class="mdname" nowrap> <em>vect1_mask</em>, </td>
417
<td class="md" nowrap align="right"></td>
419
<td class="md" nowrap>const T *BMRESTRICT </td>
420
<td class="mdname" nowrap> <em>vect2</em>, </td>
423
<td class="md" nowrap align="right"></td>
425
<td class="md" nowrap>unsigned </td>
426
<td class="mdname" nowrap> <em>vect2_mask</em>, </td>
429
<td class="md" nowrap align="right"></td>
431
<td class="md" nowrap>F </td>
432
<td class="mdname" nowrap> <em>f</em></td>
436
<td class="md">) </td>
437
<td class="md" colspan="2"></td>
443
<table cellspacing="5" cellpadding="0" border="0">
451
Abstract distance test operation for GAP buffers. Receives functor F as a template argument.
453
<dl compact><dt><b>Parameters:</b></dt><dd>
454
<table border="0" cellspacing="2" cellpadding="0">
455
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
456
<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>
457
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
458
<tr><td valign="top"></td><td valign="top"><em>vect2_mask</em> </td><td>- same as vect1_mask </td></tr>
459
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
462
<dl compact><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
463
<dl compact><dt><b>Returns:</b></dt><dd>non zero value if operation result returns any 1 bit </dd></dl>
466
Definition at line <a class="el" href="a00141.html#l00884">884</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
468
Referenced by <a class="el" href="a00141.html#l02800">bm::gap_operation_any_and()</a>, <a class="el" href="a00141.html#l02919">bm::gap_operation_any_sub()</a>, and <a class="el" href="a00141.html#l02846">bm::gap_operation_any_xor()</a>. </td>
471
<a class="anchor" name="ga3" doxytag="bm::gap_buff_op"></a><p>
472
<table class="mdTable" cellpadding="2" cellspacing="0">
475
<table cellpadding="0" cellspacing="0" border="0">
477
<td class="mdPrefix" colspan="4">
478
template<typename T, class F> </td>
481
<td class="md" nowrap valign="top">void gap_buff_op </td>
482
<td class="md" valign="top">( </td>
483
<td class="md" nowrap valign="top">T *BMRESTRICT </td>
484
<td class="mdname" nowrap> <em>dest</em>, </td>
487
<td class="md" nowrap align="right"></td>
489
<td class="md" nowrap>const T *BMRESTRICT </td>
490
<td class="mdname" nowrap> <em>vect1</em>, </td>
493
<td class="md" nowrap align="right"></td>
495
<td class="md" nowrap>unsigned </td>
496
<td class="mdname" nowrap> <em>vect1_mask</em>, </td>
499
<td class="md" nowrap align="right"></td>
501
<td class="md" nowrap>const T *BMRESTRICT </td>
502
<td class="mdname" nowrap> <em>vect2</em>, </td>
505
<td class="md" nowrap align="right"></td>
507
<td class="md" nowrap>unsigned </td>
508
<td class="mdname" nowrap> <em>vect2_mask</em>, </td>
511
<td class="md" nowrap align="right"></td>
513
<td class="md" nowrap>F </td>
514
<td class="mdname" nowrap> <em>f</em></td>
518
<td class="md">) </td>
519
<td class="md" colspan="2"></td>
525
<table cellspacing="5" cellpadding="0" border="0">
533
Abstract operation for GAP buffers. Receives functor F as a template argument.
535
<dl compact><dt><b>Parameters:</b></dt><dd>
536
<table border="0" cellspacing="2" cellpadding="0">
537
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- destination memory buffer. </td></tr>
538
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 GAP encoded buffer. </td></tr>
539
<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>
540
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 GAP encoded buffer. </td></tr>
541
<tr><td valign="top"></td><td valign="top"><em>vect2_mask</em> </td><td>- same as vect1_mask </td></tr>
542
<tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>- operation functor. </td></tr>
545
<dl compact><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
548
Definition at line <a class="el" href="a00141.html#l00803">803</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
550
Referenced by <a class="el" href="a00141.html#l02777">bm::gap_operation_and()</a>, <a class="el" href="a00141.html#l02869">bm::gap_operation_or()</a>, <a class="el" href="a00141.html#l02896">bm::gap_operation_sub()</a>, and <a class="el" href="a00141.html#l02823">bm::gap_operation_xor()</a>. </td>
553
<a class="anchor" name="ga25" doxytag="bm::gap_calc_level"></a><p>
554
<table class="mdTable" cellpadding="2" cellspacing="0">
557
<table cellpadding="0" cellspacing="0" border="0">
559
<td class="mdPrefix" colspan="4">
560
template<typename T> </td>
563
<td class="md" nowrap valign="top">int gap_calc_level </td>
564
<td class="md" valign="top">( </td>
565
<td class="md" nowrap valign="top">int </td>
566
<td class="mdname" nowrap> <em>len</em>, </td>
569
<td class="md" nowrap align="right"></td>
571
<td class="md" nowrap>const T * </td>
572
<td class="mdname" nowrap> <em>glevel_len</em></td>
576
<td class="md">) </td>
577
<td class="md" colspan="2"><code> [inline]</code></td>
583
<table cellspacing="5" cellpadding="0" border="0">
591
Calculates GAP block capacity level.
593
<dl compact><dt><b>Parameters:</b></dt><dd>
594
<table border="0" cellspacing="2" cellpadding="0">
595
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- GAP buffer length. </td></tr>
596
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- GAP lengths table </td></tr>
599
<dl compact><dt><b>Returns:</b></dt><dd>GAP block capacity level. -1 if block does not fit any level. </dd></dl>
602
Definition at line <a class="el" href="a00141.html#l02099">2099</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
604
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>.
606
Referenced by <a class="el" href="a00141.html#l03949">bm::gap_overhead()</a>. </td>
609
<a class="anchor" name="ga21" doxytag="bm::gap_capacity"></a><p>
610
<table class="mdTable" cellpadding="2" cellspacing="0">
613
<table cellpadding="0" cellspacing="0" border="0">
615
<td class="mdPrefix" colspan="4">
616
template<typename T> </td>
619
<td class="md" nowrap valign="top">unsigned gap_capacity </td>
620
<td class="md" valign="top">( </td>
621
<td class="md" nowrap valign="top">const T * </td>
622
<td class="mdname" nowrap> <em>buf</em>, </td>
625
<td class="md" nowrap align="right"></td>
627
<td class="md" nowrap>const T * </td>
628
<td class="mdname" nowrap> <em>glevel_len</em></td>
632
<td class="md">) </td>
633
<td class="md" colspan="2"></td>
639
<table cellspacing="5" cellpadding="0" border="0">
647
Returs GAP block capacity.
649
<dl compact><dt><b>Parameters:</b></dt><dd>
650
<table border="0" cellspacing="2" cellpadding="0">
651
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
654
<dl compact><dt><b>Returns:</b></dt><dd>GAP block capacity. </dd></dl>
657
Definition at line <a class="el" href="a00141.html#l02041">2041</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
659
Referenced by <a class="el" href="a00141.html#l02120">bm::gap_free_elements()</a>. </td>
662
<a class="anchor" name="ga14" doxytag="bm::gap_control_sum"></a><p>
663
<table class="mdTable" cellpadding="2" cellspacing="0">
666
<table cellpadding="0" cellspacing="0" border="0">
668
<td class="mdPrefix" colspan="4">
669
template<typename T> </td>
672
<td class="md" nowrap valign="top">unsigned gap_control_sum </td>
673
<td class="md" valign="top">( </td>
674
<td class="md" nowrap valign="top">const T * </td>
675
<td class="mdname1" valign="top" nowrap> <em>buf</em> </td>
676
<td class="md" valign="top"> ) </td>
677
<td class="md" nowrap></td>
683
<table cellspacing="5" cellpadding="0" border="0">
691
Calculates sum of all words in GAP block. (For debugging purposes).
693
<dl compact><dt><b>Note:</b></dt><dd>For debugging and testing ONLY. </dd></dl>
694
<dl compact><dt><b>Parameters:</b></dt><dd>
695
<table border="0" cellspacing="2" cellpadding="0">
696
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
699
<dl compact><dt><b>Returns:</b></dt><dd>Sum of all words. </dd></dl>
702
Definition at line <a class="el" href="a00141.html#l01867">1867</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
704
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>.
706
Referenced by <a class="el" href="a00137.html#l02351">bm::bvector< Alloc, MS >::stat()</a>. </td>
709
<a class="anchor" name="ga28" doxytag="bm::gap_convert_to_arr"></a><p>
710
<table class="mdTable" cellpadding="2" cellspacing="0">
713
<table cellpadding="0" cellspacing="0" border="0">
715
<td class="mdPrefix" colspan="4">
716
template<typename D, typename T> </td>
719
<td class="md" nowrap valign="top">D gap_convert_to_arr </td>
720
<td class="md" valign="top">( </td>
721
<td class="md" nowrap valign="top">D *BMRESTRICT </td>
722
<td class="mdname" nowrap> <em>dest</em>, </td>
725
<td class="md" nowrap align="right"></td>
727
<td class="md" nowrap>const T *BMRESTRICT </td>
728
<td class="mdname" nowrap> <em>buf</em>, </td>
731
<td class="md" nowrap align="right"></td>
733
<td class="md" nowrap>unsigned </td>
734
<td class="mdname" nowrap> <em>dest_len</em></td>
738
<td class="md">) </td>
739
<td class="md" colspan="2"></td>
745
<table cellspacing="5" cellpadding="0" border="0">
753
Convert gap block into array of ints corresponding to 1 bits.
757
Definition at line <a class="el" href="a00141.html#l02261">2261</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
759
References <a class="el" href="a00140.html#l00070">BMRESTRICT</a>. </td>
762
<a class="anchor" name="ga12" doxytag="bm::gap_convert_to_bitset"></a><p>
763
<table class="mdTable" cellpadding="2" cellspacing="0">
766
<table cellpadding="0" cellspacing="0" border="0">
768
<td class="mdPrefix" colspan="4">
769
template<typename T> </td>
772
<td class="md" nowrap valign="top">void gap_convert_to_bitset </td>
773
<td class="md" valign="top">( </td>
774
<td class="md" nowrap valign="top">unsigned * </td>
775
<td class="mdname" nowrap> <em>dest</em>, </td>
778
<td class="md" nowrap align="right"></td>
780
<td class="md" nowrap>const T * </td>
781
<td class="mdname" nowrap> <em>buf</em>, </td>
784
<td class="md" nowrap align="right"></td>
786
<td class="md" nowrap>unsigned </td>
787
<td class="mdname" nowrap> <em>dest_len</em></td>
791
<td class="md">) </td>
792
<td class="md" colspan="2"></td>
798
<table cellspacing="5" cellpadding="0" border="0">
806
GAP block to bitblock conversion.
808
<dl compact><dt><b>Parameters:</b></dt><dd>
809
<table border="0" cellspacing="2" cellpadding="0">
810
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
811
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
812
<tr><td valign="top"></td><td valign="top"><em>dest_size</em> </td><td>- length of the destination buffer. </td></tr>
817
Definition at line <a class="el" href="a00141.html#l01824">1824</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
819
References <a class="el" href="a00141.html#l01399">bm::gap_add_to_bitset()</a>. </td>
822
<a class="anchor" name="ga11" doxytag="bm::gap_convert_to_bitset"></a><p>
823
<table class="mdTable" cellpadding="2" cellspacing="0">
826
<table cellpadding="0" cellspacing="0" border="0">
828
<td class="mdPrefix" colspan="4">
829
template<typename T> </td>
832
<td class="md" nowrap valign="top">void gap_convert_to_bitset </td>
833
<td class="md" valign="top">( </td>
834
<td class="md" nowrap valign="top">unsigned * </td>
835
<td class="mdname" nowrap> <em>dest</em>, </td>
838
<td class="md" nowrap align="right"></td>
840
<td class="md" nowrap>const T * </td>
841
<td class="mdname" nowrap> <em>buf</em></td>
845
<td class="md">) </td>
846
<td class="md" colspan="2"></td>
852
<table cellspacing="5" cellpadding="0" border="0">
860
GAP block to bitblock conversion.
862
<dl compact><dt><b>Parameters:</b></dt><dd>
863
<table border="0" cellspacing="2" cellpadding="0">
864
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
865
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
870
Definition at line <a class="el" href="a00141.html#l01808">1808</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
872
References <a class="el" href="a00141.html#l01790">bm::bit_block_set()</a>, and <a class="el" href="a00141.html#l01399">bm::gap_add_to_bitset()</a>.
874
Referenced by <a class="el" href="a00137.html#l01909">bm::bvector< Alloc, MS >::compare()</a>, and <a class="el" href="a00141.html#l01845">bm::gap_convert_to_bitset_smart()</a>. </td>
877
<a class="anchor" name="ga13" doxytag="bm::gap_convert_to_bitset_smart"></a><p>
878
<table class="mdTable" cellpadding="2" cellspacing="0">
881
<table cellpadding="0" cellspacing="0" border="0">
883
<td class="mdPrefix" colspan="4">
884
template<typename T> </td>
887
<td class="md" nowrap valign="top">unsigned* gap_convert_to_bitset_smart </td>
888
<td class="md" valign="top">( </td>
889
<td class="md" nowrap valign="top">unsigned * </td>
890
<td class="mdname" nowrap> <em>dest</em>, </td>
893
<td class="md" nowrap align="right"></td>
895
<td class="md" nowrap>const T * </td>
896
<td class="mdname" nowrap> <em>buf</em>, </td>
899
<td class="md" nowrap align="right"></td>
901
<td class="md" nowrap><a class="el" href="a00129.html#a26">id_t</a> </td>
902
<td class="mdname" nowrap> <em>set_max</em></td>
906
<td class="md">) </td>
907
<td class="md" colspan="2"></td>
913
<table cellspacing="5" cellpadding="0" border="0">
921
Smart GAP block to bitblock conversion.
923
Checks if GAP block is ALL-ZERO or ALL-ON. In those cases returns pointer on special static bitblocks.<p>
924
<dl compact><dt><b>Parameters:</b></dt><dd>
925
<table border="0" cellspacing="2" cellpadding="0">
926
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
927
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
928
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
933
Definition at line <a class="el" href="a00141.html#l01845">1845</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
935
References <a class="el" href="a00140.html#l00022">FULL_BLOCK_ADDR</a>, and <a class="el" href="a00141.html#l01808">bm::gap_convert_to_bitset()</a>. </td>
938
<a class="anchor" name="ga6" doxytag="bm::gap_find_in_block"></a><p>
939
<table class="mdTable" cellpadding="2" cellspacing="0">
942
<table cellpadding="0" cellspacing="0" border="0">
944
<td class="mdPrefix" colspan="4">
945
template<typename T> </td>
948
<td class="md" nowrap valign="top">int gap_find_in_block </td>
949
<td class="md" valign="top">( </td>
950
<td class="md" nowrap valign="top">const T * </td>
951
<td class="mdname" nowrap> <em>buf</em>, </td>
954
<td class="md" nowrap align="right"></td>
956
<td class="md" nowrap>unsigned </td>
957
<td class="mdname" nowrap> <em>nbit</em>, </td>
960
<td class="md" nowrap align="right"></td>
962
<td class="md" nowrap><a class="el" href="a00129.html#a26">bm::id_t</a> * </td>
963
<td class="mdname" nowrap> <em>prev</em></td>
967
<td class="md">) </td>
968
<td class="md" colspan="2"></td>
974
<table cellspacing="5" cellpadding="0" border="0">
982
Searches for the next 1 bit in the GAP block.
984
<dl compact><dt><b>Parameters:</b></dt><dd>
985
<table border="0" cellspacing="2" cellpadding="0">
986
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer </td></tr>
987
<tr><td valign="top"></td><td valign="top"><em>nbit</em> </td><td>- bit index to start checking from. </td></tr>
988
<tr><td valign="top"></td><td valign="top"><em>prev</em> </td><td>- returns previously checked value </td></tr>
993
Definition at line <a class="el" href="a00141.html#l01119">1119</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
995
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l00469">bm::gap_bfind()</a>. </td>
998
<a class="anchor" name="ga26" doxytag="bm::gap_free_elements"></a><p>
999
<table class="mdTable" cellpadding="2" cellspacing="0">
1002
<table cellpadding="0" cellspacing="0" border="0">
1004
<td class="mdPrefix" colspan="4">
1005
template<typename T> </td>
1008
<td class="md" nowrap valign="top">unsigned gap_free_elements </td>
1009
<td class="md" valign="top">( </td>
1010
<td class="md" nowrap valign="top">const T * </td>
1011
<td class="mdname" nowrap> <em>buf</em>, </td>
1014
<td class="md" nowrap align="right"></td>
1015
<td class="md"></td>
1016
<td class="md" nowrap>const T * </td>
1017
<td class="mdname" nowrap> <em>glevel_len</em></td>
1020
<td class="md"></td>
1021
<td class="md">) </td>
1022
<td class="md" colspan="2"><code> [inline]</code></td>
1028
<table cellspacing="5" cellpadding="0" border="0">
1036
Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length.
1038
<dl compact><dt><b>Parameters:</b></dt><dd>
1039
<table border="0" cellspacing="2" cellpadding="0">
1040
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer glevel_len - GAP lengths table</td></tr>
1043
<dl compact><dt><b>Returns:</b></dt><dd>Number of free GAP elements </dd></dl>
1046
Definition at line <a class="el" href="a00141.html#l02120">2120</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1048
References <a class="el" href="a00141.html#l02041">bm::gap_capacity()</a>, and <a class="el" href="a00141.html#l02027">bm::gap_length()</a>. </td>
1051
<a class="anchor" name="ga16" doxytag="bm::gap_init_range_block"></a><p>
1052
<table class="mdTable" cellpadding="2" cellspacing="0">
1055
<table cellpadding="0" cellspacing="0" border="0">
1057
<td class="mdPrefix" colspan="4">
1058
template<class T> </td>
1061
<td class="md" nowrap valign="top">void gap_init_range_block </td>
1062
<td class="md" valign="top">( </td>
1063
<td class="md" nowrap valign="top">T * </td>
1064
<td class="mdname" nowrap> <em>buf</em>, </td>
1067
<td class="md" nowrap align="right"></td>
1068
<td class="md"></td>
1069
<td class="md" nowrap>unsigned </td>
1070
<td class="mdname" nowrap> <em>from</em>, </td>
1073
<td class="md" nowrap align="right"></td>
1074
<td class="md"></td>
1075
<td class="md" nowrap>unsigned </td>
1076
<td class="mdname" nowrap> <em>to</em>, </td>
1079
<td class="md" nowrap align="right"></td>
1080
<td class="md"></td>
1081
<td class="md" nowrap>unsigned </td>
1082
<td class="mdname" nowrap> <em>value</em>, </td>
1085
<td class="md" nowrap align="right"></td>
1086
<td class="md"></td>
1087
<td class="md" nowrap>unsigned </td>
1088
<td class="mdname" nowrap> <em>set_max</em></td>
1091
<td class="md"></td>
1092
<td class="md">) </td>
1093
<td class="md" colspan="2"></td>
1099
<table cellspacing="5" cellpadding="0" border="0">
1107
Init gap block so it has block in it (can be whole block).
1109
<dl compact><dt><b>Parameters:</b></dt><dd>
1110
<table border="0" cellspacing="2" cellpadding="0">
1111
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1112
<tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>- one block start </td></tr>
1113
<tr><td valign="top"></td><td valign="top"><em>to</em> </td><td>- one block end </td></tr>
1114
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- (block value)1 or 0 </td></tr>
1115
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1120
Definition at line <a class="el" href="a00141.html#l01919">1919</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1122
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l01898">bm::gap_set_all()</a>. </td>
1125
<a class="anchor" name="ga17" doxytag="bm::gap_invert"></a><p>
1126
<table class="mdTable" cellpadding="2" cellspacing="0">
1129
<table cellpadding="0" cellspacing="0" border="0">
1131
<td class="mdPrefix" colspan="4">
1132
template<typename T> </td>
1135
<td class="md" nowrap valign="top">void gap_invert </td>
1136
<td class="md" valign="top">( </td>
1137
<td class="md" nowrap valign="top">T * </td>
1138
<td class="mdname1" valign="top" nowrap> <em>buf</em> </td>
1139
<td class="md" valign="top"> ) </td>
1140
<td class="md" nowrap></td>
1146
<table cellspacing="5" cellpadding="0" border="0">
1154
Inverts all bits in the GAP buffer.
1156
<dl compact><dt><b>Parameters:</b></dt><dd>
1157
<table border="0" cellspacing="2" cellpadding="0">
1158
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1163
Definition at line <a class="el" href="a00141.html#l01969">1969</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1165
Referenced by <a class="el" href="a00141.html#l02869">bm::gap_operation_or()</a>. </td>
1168
<a class="anchor" name="ga19" doxytag="bm::gap_is_all_one"></a><p>
1169
<table class="mdTable" cellpadding="2" cellspacing="0">
1172
<table cellpadding="0" cellspacing="0" border="0">
1174
<td class="mdPrefix" colspan="4">
1175
template<typename T> </td>
1178
<td class="md" nowrap valign="top">bool gap_is_all_one </td>
1179
<td class="md" valign="top">( </td>
1180
<td class="md" nowrap valign="top">const T * </td>
1181
<td class="mdname" nowrap> <em>buf</em>, </td>
1184
<td class="md" nowrap align="right"></td>
1185
<td class="md"></td>
1186
<td class="md" nowrap>unsigned </td>
1187
<td class="mdname" nowrap> <em>set_max</em></td>
1190
<td class="md"></td>
1191
<td class="md">) </td>
1192
<td class="md" colspan="2"></td>
1198
<table cellspacing="5" cellpadding="0" border="0">
1206
Checks if GAP block is all-one.
1208
<dl compact><dt><b>Parameters:</b></dt><dd>
1209
<table border="0" cellspacing="2" cellpadding="0">
1210
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1211
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1214
<dl compact><dt><b>Returns:</b></dt><dd>true if all-one. </dd></dl>
1217
Definition at line <a class="el" href="a00141.html#l02015">2015</a> of file <a class="el" href="a00141.html">bmfunc.h</a>. </td>
1220
<a class="anchor" name="ga18" doxytag="bm::gap_is_all_zero"></a><p>
1221
<table class="mdTable" cellpadding="2" cellspacing="0">
1224
<table cellpadding="0" cellspacing="0" border="0">
1226
<td class="mdPrefix" colspan="4">
1227
template<typename T> </td>
1230
<td class="md" nowrap valign="top">bool gap_is_all_zero </td>
1231
<td class="md" valign="top">( </td>
1232
<td class="md" nowrap valign="top">const T * </td>
1233
<td class="mdname" nowrap> <em>buf</em>, </td>
1236
<td class="md" nowrap align="right"></td>
1237
<td class="md"></td>
1238
<td class="md" nowrap>unsigned </td>
1239
<td class="mdname" nowrap> <em>set_max</em></td>
1242
<td class="md"></td>
1243
<td class="md">) </td>
1244
<td class="md" colspan="2"></td>
1250
<table cellspacing="5" cellpadding="0" border="0">
1258
Temporary inverts all bits in the GAP buffer. Checks if GAP block is all-zero.
1260
<dl compact><dt><b>Parameters:</b></dt><dd>
1261
<table border="0" cellspacing="2" cellpadding="0">
1262
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1263
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1266
<dl compact><dt><b>Returns:</b></dt><dd>true if all-zero. </dd></dl>
1269
Definition at line <a class="el" href="a00141.html#l02001">2001</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1271
Referenced by <a class="el" href="a00137.html#l01909">bm::bvector< Alloc, MS >::compare()</a>. </td>
1274
<a class="anchor" name="ga20" doxytag="bm::gap_length"></a><p>
1275
<table class="mdTable" cellpadding="2" cellspacing="0">
1278
<table cellpadding="0" cellspacing="0" border="0">
1280
<td class="mdPrefix" colspan="4">
1281
template<typename T> </td>
1284
<td class="md" nowrap valign="top">unsigned gap_length </td>
1285
<td class="md" valign="top">( </td>
1286
<td class="md" nowrap valign="top">const T * </td>
1287
<td class="mdname1" valign="top" nowrap> <em>buf</em> </td>
1288
<td class="md" valign="top"> ) </td>
1289
<td class="md" nowrap></td>
1295
<table cellspacing="5" cellpadding="0" border="0">
1303
Returs GAP block length.
1305
<dl compact><dt><b>Parameters:</b></dt><dd>
1306
<table border="0" cellspacing="2" cellpadding="0">
1307
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1310
<dl compact><dt><b>Returns:</b></dt><dd>GAP block length. </dd></dl>
1313
Definition at line <a class="el" href="a00141.html#l02027">2027</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1315
Referenced by <a class="el" href="a00141.html#l02120">bm::gap_free_elements()</a>, and <a class="el" href="a00137.html#l02351">bm::bvector< Alloc, MS >::stat()</a>. </td>
1318
<a class="anchor" name="ga23" doxytag="bm::gap_level"></a><p>
1319
<table class="mdTable" cellpadding="2" cellspacing="0">
1322
<table cellpadding="0" cellspacing="0" border="0">
1324
<td class="mdPrefix" colspan="4">
1325
template<typename T> </td>
1328
<td class="md" nowrap valign="top">unsigned gap_level </td>
1329
<td class="md" valign="top">( </td>
1330
<td class="md" nowrap valign="top">const T * </td>
1331
<td class="mdname1" valign="top" nowrap> <em>buf</em> </td>
1332
<td class="md" valign="top"> ) </td>
1333
<td class="md" nowrap></td>
1339
<table cellspacing="5" cellpadding="0" border="0">
1347
Returs GAP blocks capacity level.
1349
<dl compact><dt><b>Parameters:</b></dt><dd>
1350
<table border="0" cellspacing="2" cellpadding="0">
1351
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1354
<dl compact><dt><b>Returns:</b></dt><dd>GAP block capacity level. </dd></dl>
1357
Definition at line <a class="el" href="a00141.html#l02069">2069</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1359
Referenced by <a class="el" href="a00137.html#l02351">bm::bvector< Alloc, MS >::stat()</a>. </td>
1362
<a class="anchor" name="ga22" doxytag="bm::gap_limit"></a><p>
1363
<table class="mdTable" cellpadding="2" cellspacing="0">
1366
<table cellpadding="0" cellspacing="0" border="0">
1368
<td class="mdPrefix" colspan="4">
1369
template<typename T> </td>
1372
<td class="md" nowrap valign="top">unsigned gap_limit </td>
1373
<td class="md" valign="top">( </td>
1374
<td class="md" nowrap valign="top">const T * </td>
1375
<td class="mdname" nowrap> <em>buf</em>, </td>
1378
<td class="md" nowrap align="right"></td>
1379
<td class="md"></td>
1380
<td class="md" nowrap>const T * </td>
1381
<td class="mdname" nowrap> <em>glevel_len</em></td>
1384
<td class="md"></td>
1385
<td class="md">) </td>
1386
<td class="md" colspan="2"></td>
1392
<table cellspacing="5" cellpadding="0" border="0">
1400
Returs GAP block capacity limit.
1402
<dl compact><dt><b>Parameters:</b></dt><dd>
1403
<table border="0" cellspacing="2" cellpadding="0">
1404
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1405
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- GAP lengths table (<a class="el" href="a00104.html">gap_len_table</a>) </td></tr>
1408
<dl compact><dt><b>Returns:</b></dt><dd>GAP block limit. </dd></dl>
1411
Definition at line <a class="el" href="a00141.html#l02056">2056</a> of file <a class="el" href="a00141.html">bmfunc.h</a>. </td>
1414
<a class="anchor" name="ga29" doxytag="bm::gap_operation_and"></a><p>
1415
<table class="mdTable" cellpadding="2" cellspacing="0">
1418
<table cellpadding="0" cellspacing="0" border="0">
1420
<td class="md" nowrap valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a>* gap_operation_and </td>
1421
<td class="md" valign="top">( </td>
1422
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1423
<td class="mdname" nowrap> <em>vect1</em>, </td>
1426
<td class="md" nowrap align="right"></td>
1427
<td class="md"></td>
1428
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1429
<td class="mdname" nowrap> <em>vect2</em>, </td>
1432
<td class="md" nowrap align="right"></td>
1433
<td class="md"></td>
1434
<td class="md" nowrap><a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1435
<td class="mdname" nowrap> <em>tmp_buf</em></td>
1438
<td class="md"></td>
1439
<td class="md">) </td>
1440
<td class="md" colspan="2"><code> [inline]</code></td>
1446
<table cellspacing="5" cellpadding="0" border="0">
1456
Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1457
<dl compact><dt><b>Parameters:</b></dt><dd>
1458
<table border="0" cellspacing="2" cellpadding="0">
1459
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1460
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1461
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1464
<dl compact><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf OR vect1) </dd></dl>
1467
Definition at line <a class="el" href="a00141.html#l02777">2777</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1469
References <a class="el" href="a00141.html#l00803">bm::gap_buff_op()</a>. </td>
1472
<a class="anchor" name="ga30" doxytag="bm::gap_operation_any_and"></a><p>
1473
<table class="mdTable" cellpadding="2" cellspacing="0">
1476
<table cellpadding="0" cellspacing="0" border="0">
1478
<td class="md" nowrap valign="top">unsigned gap_operation_any_and </td>
1479
<td class="md" valign="top">( </td>
1480
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1481
<td class="mdname" nowrap> <em>vect1</em>, </td>
1484
<td class="md" nowrap align="right"></td>
1485
<td class="md"></td>
1486
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1487
<td class="mdname" nowrap> <em>vect2</em></td>
1490
<td class="md"></td>
1491
<td class="md">) </td>
1492
<td class="md" colspan="2"><code> [inline]</code></td>
1498
<table cellspacing="5" cellpadding="0" border="0">
1506
GAP AND operation test.
1508
Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1509
<dl compact><dt><b>Parameters:</b></dt><dd>
1510
<table border="0" cellspacing="2" cellpadding="0">
1511
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1512
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1515
<dl compact><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1518
Definition at line <a class="el" href="a00141.html#l02800">2800</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1520
References <a class="el" href="a00141.html#l00884">bm::gap_buff_any_op()</a>. </td>
1523
<a class="anchor" name="ga35" doxytag="bm::gap_operation_any_sub"></a><p>
1524
<table class="mdTable" cellpadding="2" cellspacing="0">
1527
<table cellpadding="0" cellspacing="0" border="0">
1529
<td class="md" nowrap valign="top">unsigned gap_operation_any_sub </td>
1530
<td class="md" valign="top">( </td>
1531
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1532
<td class="mdname" nowrap> <em>vect1</em>, </td>
1535
<td class="md" nowrap align="right"></td>
1536
<td class="md"></td>
1537
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1538
<td class="mdname" nowrap> <em>vect2</em></td>
1541
<td class="md"></td>
1542
<td class="md">) </td>
1543
<td class="md" colspan="2"><code> [inline]</code></td>
1549
<table cellspacing="5" cellpadding="0" border="0">
1557
GAP SUB operation test.
1559
Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1560
<dl compact><dt><b>Parameters:</b></dt><dd>
1561
<table border="0" cellspacing="2" cellpadding="0">
1562
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1563
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1566
<dl compact><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1569
Definition at line <a class="el" href="a00141.html#l02919">2919</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1571
References <a class="el" href="a00141.html#l00884">bm::gap_buff_any_op()</a>. </td>
1574
<a class="anchor" name="ga32" doxytag="bm::gap_operation_any_xor"></a><p>
1575
<table class="mdTable" cellpadding="2" cellspacing="0">
1578
<table cellpadding="0" cellspacing="0" border="0">
1580
<td class="md" nowrap valign="top">unsigned gap_operation_any_xor </td>
1581
<td class="md" valign="top">( </td>
1582
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1583
<td class="mdname" nowrap> <em>vect1</em>, </td>
1586
<td class="md" nowrap align="right"></td>
1587
<td class="md"></td>
1588
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1589
<td class="mdname" nowrap> <em>vect2</em></td>
1592
<td class="md"></td>
1593
<td class="md">) </td>
1594
<td class="md" colspan="2"><code> [inline]</code></td>
1600
<table cellspacing="5" cellpadding="0" border="0">
1608
GAP XOR operation test.
1610
Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1611
<dl compact><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>
1617
<dl compact><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
1620
Definition at line <a class="el" href="a00141.html#l02846">2846</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1622
References <a class="el" href="a00141.html#l00884">bm::gap_buff_any_op()</a>. </td>
1625
<a class="anchor" name="ga33" doxytag="bm::gap_operation_or"></a><p>
1626
<table class="mdTable" cellpadding="2" cellspacing="0">
1629
<table cellpadding="0" cellspacing="0" border="0">
1631
<td class="md" nowrap valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a>* gap_operation_or </td>
1632
<td class="md" valign="top">( </td>
1633
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1634
<td class="mdname" nowrap> <em>vect1</em>, </td>
1637
<td class="md" nowrap align="right"></td>
1638
<td class="md"></td>
1639
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1640
<td class="mdname" nowrap> <em>vect2</em>, </td>
1643
<td class="md" nowrap align="right"></td>
1644
<td class="md"></td>
1645
<td class="md" nowrap><a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1646
<td class="mdname" nowrap> <em>tmp_buf</em></td>
1649
<td class="md"></td>
1650
<td class="md">) </td>
1651
<td class="md" colspan="2"><code> [inline]</code></td>
1657
<table cellspacing="5" cellpadding="0" border="0">
1667
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>
1668
<dl compact><dt><b>Parameters:</b></dt><dd>
1669
<table border="0" cellspacing="2" cellpadding="0">
1670
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1671
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1672
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1675
<dl compact><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1678
Definition at line <a class="el" href="a00141.html#l02869">2869</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1680
References <a class="el" href="a00141.html#l00803">bm::gap_buff_op()</a>, and <a class="el" href="a00141.html#l01969">bm::gap_invert()</a>. </td>
1683
<a class="anchor" name="ga34" doxytag="bm::gap_operation_sub"></a><p>
1684
<table class="mdTable" cellpadding="2" cellspacing="0">
1687
<table cellpadding="0" cellspacing="0" border="0">
1689
<td class="md" nowrap valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a>* gap_operation_sub </td>
1690
<td class="md" valign="top">( </td>
1691
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1692
<td class="mdname" nowrap> <em>vect1</em>, </td>
1695
<td class="md" nowrap align="right"></td>
1696
<td class="md"></td>
1697
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1698
<td class="mdname" nowrap> <em>vect2</em>, </td>
1701
<td class="md" nowrap align="right"></td>
1702
<td class="md"></td>
1703
<td class="md" nowrap><a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1704
<td class="mdname" nowrap> <em>tmp_buf</em></td>
1707
<td class="md"></td>
1708
<td class="md">) </td>
1709
<td class="md" colspan="2"><code> [inline]</code></td>
1715
<table cellspacing="5" cellpadding="0" border="0">
1723
GAP SUB (AND NOT) operation.
1725
Function performs SUB logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1726
<dl compact><dt><b>Parameters:</b></dt><dd>
1727
<table border="0" cellspacing="2" cellpadding="0">
1728
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1729
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1730
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1733
<dl compact><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1736
Definition at line <a class="el" href="a00141.html#l02896">2896</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1738
References <a class="el" href="a00141.html#l00803">bm::gap_buff_op()</a>. </td>
1741
<a class="anchor" name="ga31" doxytag="bm::gap_operation_xor"></a><p>
1742
<table class="mdTable" cellpadding="2" cellspacing="0">
1745
<table cellpadding="0" cellspacing="0" border="0">
1747
<td class="md" nowrap valign="top"><a class="el" href="a00129.html#a36">gap_word_t</a>* gap_operation_xor </td>
1748
<td class="md" valign="top">( </td>
1749
<td class="md" nowrap valign="top">const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1750
<td class="mdname" nowrap> <em>vect1</em>, </td>
1753
<td class="md" nowrap align="right"></td>
1754
<td class="md"></td>
1755
<td class="md" nowrap>const <a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1756
<td class="mdname" nowrap> <em>vect2</em>, </td>
1759
<td class="md" nowrap align="right"></td>
1760
<td class="md"></td>
1761
<td class="md" nowrap><a class="el" href="a00129.html#a36">gap_word_t</a> *BMRESTRICT </td>
1762
<td class="mdname" nowrap> <em>tmp_buf</em></td>
1765
<td class="md"></td>
1766
<td class="md">) </td>
1767
<td class="md" colspan="2"><code> [inline]</code></td>
1773
<table cellspacing="5" cellpadding="0" border="0">
1783
Function performs XOR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.<p>
1784
<dl compact><dt><b>Parameters:</b></dt><dd>
1785
<table border="0" cellspacing="2" cellpadding="0">
1786
<tr><td valign="top"></td><td valign="top"><em>vect1</em> </td><td>- operand 1 </td></tr>
1787
<tr><td valign="top"></td><td valign="top"><em>vect2</em> </td><td>- operand 2 </td></tr>
1788
<tr><td valign="top"></td><td valign="top"><em>tmp_buf</em> </td><td>- pointer on temporary buffer </td></tr>
1791
<dl compact><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
1794
Definition at line <a class="el" href="a00141.html#l02823">2823</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1796
References <a class="el" href="a00141.html#l00803">bm::gap_buff_op()</a>. </td>
1799
<a class="anchor" name="ga36" doxytag="bm::gap_overhead"></a><p>
1800
<table class="mdTable" cellpadding="2" cellspacing="0">
1803
<table cellpadding="0" cellspacing="0" border="0">
1805
<td class="mdPrefix" colspan="4">
1806
template<typename T> </td>
1809
<td class="md" nowrap valign="top">unsigned gap_overhead </td>
1810
<td class="md" valign="top">( </td>
1811
<td class="md" nowrap valign="top">const T * </td>
1812
<td class="mdname" nowrap> <em>length</em>, </td>
1815
<td class="md" nowrap align="right"></td>
1816
<td class="md"></td>
1817
<td class="md" nowrap>const T * </td>
1818
<td class="mdname" nowrap> <em>length_end</em>, </td>
1821
<td class="md" nowrap align="right"></td>
1822
<td class="md"></td>
1823
<td class="md" nowrap>const T * </td>
1824
<td class="mdname" nowrap> <em>glevel_len</em></td>
1827
<td class="md"></td>
1828
<td class="md">) </td>
1829
<td class="md" colspan="2"></td>
1835
<table cellspacing="5" cellpadding="0" border="0">
1843
Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table).
1847
Definition at line <a class="el" href="a00141.html#l03949">3949</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1849
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l02099">bm::gap_calc_level()</a>.
1851
Referenced by <a class="el" href="a00141.html#l03977">bm::improve_gap_levels()</a>. </td>
1854
<a class="anchor" name="ga15" doxytag="bm::gap_set_all"></a><p>
1855
<table class="mdTable" cellpadding="2" cellspacing="0">
1858
<table cellpadding="0" cellspacing="0" border="0">
1860
<td class="mdPrefix" colspan="4">
1861
template<class T> </td>
1864
<td class="md" nowrap valign="top">void gap_set_all </td>
1865
<td class="md" valign="top">( </td>
1866
<td class="md" nowrap valign="top">T * </td>
1867
<td class="mdname" nowrap> <em>buf</em>, </td>
1870
<td class="md" nowrap align="right"></td>
1871
<td class="md"></td>
1872
<td class="md" nowrap>unsigned </td>
1873
<td class="mdname" nowrap> <em>set_max</em>, </td>
1876
<td class="md" nowrap align="right"></td>
1877
<td class="md"></td>
1878
<td class="md" nowrap>unsigned </td>
1879
<td class="mdname" nowrap> <em>value</em></td>
1882
<td class="md"></td>
1883
<td class="md">) </td>
1884
<td class="md" colspan="2"></td>
1890
<table cellspacing="5" cellpadding="0" border="0">
1898
Sets all bits to 0 or 1 (GAP).
1900
<dl compact><dt><b>Parameters:</b></dt><dd>
1901
<table border="0" cellspacing="2" cellpadding="0">
1902
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
1903
<tr><td valign="top"></td><td valign="top"><em>set_max</em> </td><td>- max possible bitset length </td></tr>
1908
Definition at line <a class="el" href="a00141.html#l01898">1898</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1910
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>.
1912
Referenced by <a class="el" href="a00141.html#l01919">bm::gap_init_range_block()</a>. </td>
1915
<a class="anchor" name="ga5" doxytag="bm::gap_set_value"></a><p>
1916
<table class="mdTable" cellpadding="2" cellspacing="0">
1919
<table cellpadding="0" cellspacing="0" border="0">
1921
<td class="mdPrefix" colspan="4">
1922
template<typename T> </td>
1925
<td class="md" nowrap valign="top">unsigned gap_set_value </td>
1926
<td class="md" valign="top">( </td>
1927
<td class="md" nowrap valign="top">unsigned </td>
1928
<td class="mdname" nowrap> <em>val</em>, </td>
1931
<td class="md" nowrap align="right"></td>
1932
<td class="md"></td>
1933
<td class="md" nowrap>T *BMRESTRICT </td>
1934
<td class="mdname" nowrap> <em>buf</em>, </td>
1937
<td class="md" nowrap align="right"></td>
1938
<td class="md"></td>
1939
<td class="md" nowrap>unsigned </td>
1940
<td class="mdname" nowrap> <em>pos</em>, </td>
1943
<td class="md" nowrap align="right"></td>
1944
<td class="md"></td>
1945
<td class="md" nowrap>unsigned *BMRESTRICT </td>
1946
<td class="mdname" nowrap> <em>is_set</em></td>
1949
<td class="md"></td>
1950
<td class="md">) </td>
1951
<td class="md" colspan="2"></td>
1957
<table cellspacing="5" cellpadding="0" border="0">
1965
Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument Sets or clears bit in the GAP buffer.
1967
<dl compact><dt><b>Parameters:</b></dt><dd>
1968
<table border="0" cellspacing="2" cellpadding="0">
1969
<tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>- new bit value </td></tr>
1970
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer. </td></tr>
1971
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- Index of bit to set. </td></tr>
1972
<tr><td valign="top"></td><td valign="top"><em>is_set</em> </td><td>- (OUT) flag if bit was actually set.</td></tr>
1975
<dl compact><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
1978
Definition at line <a class="el" href="a00141.html#l01027">1027</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
1980
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l00469">bm::gap_bfind()</a>.
1982
Referenced by <a class="el" href="a00144.html#l00102">bm::miniset< A, N >::set()</a>. </td>
1985
<a class="anchor" name="ga7" doxytag="bm::gap_sub_to_bitset"></a><p>
1986
<table class="mdTable" cellpadding="2" cellspacing="0">
1989
<table cellpadding="0" cellspacing="0" border="0">
1991
<td class="mdPrefix" colspan="4">
1992
template<typename T> </td>
1995
<td class="md" nowrap valign="top">void gap_sub_to_bitset </td>
1996
<td class="md" valign="top">( </td>
1997
<td class="md" nowrap valign="top">unsigned * </td>
1998
<td class="mdname" nowrap> <em>dest</em>, </td>
2001
<td class="md" nowrap align="right"></td>
2002
<td class="md"></td>
2003
<td class="md" nowrap>const T * </td>
2004
<td class="mdname" nowrap> <em>buf</em></td>
2007
<td class="md"></td>
2008
<td class="md">) </td>
2009
<td class="md" colspan="2"></td>
2015
<table cellspacing="5" cellpadding="0" border="0">
2023
SUB (AND NOT) GAP block to bitblock.
2025
<dl compact><dt><b>Parameters:</b></dt><dd>
2026
<table border="0" cellspacing="2" cellpadding="0">
2027
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
2028
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2033
Definition at line <a class="el" href="a00141.html#l01335">1335</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2035
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l01211">bm::sub_bit_block()</a>. </td>
2038
<a class="anchor" name="ga0" doxytag="bm::gap_test"></a><p>
2039
<table class="mdTable" cellpadding="2" cellspacing="0">
2042
<table cellpadding="0" cellspacing="0" border="0">
2044
<td class="mdPrefix" colspan="4">
2045
template<typename T> </td>
2048
<td class="md" nowrap valign="top">unsigned gap_test </td>
2049
<td class="md" valign="top">( </td>
2050
<td class="md" nowrap valign="top">const T * </td>
2051
<td class="mdname" nowrap> <em>buf</em>, </td>
2054
<td class="md" nowrap align="right"></td>
2055
<td class="md"></td>
2056
<td class="md" nowrap>unsigned </td>
2057
<td class="mdname" nowrap> <em>pos</em></td>
2060
<td class="md"></td>
2061
<td class="md">) </td>
2062
<td class="md" colspan="2"></td>
2068
<table cellspacing="5" cellpadding="0" border="0">
2076
Tests if bit = pos is true.
2078
<dl compact><dt><b>Parameters:</b></dt><dd>
2079
<table border="0" cellspacing="2" cellpadding="0">
2080
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2081
<tr><td valign="top"></td><td valign="top"><em>pos</em> </td><td>- index of the element. </td></tr>
2084
<dl compact><dt><b>Returns:</b></dt><dd>true if position is in "1" gap </dd></dl>
2087
Definition at line <a class="el" href="a00141.html#l00497">497</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2089
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>.
2091
Referenced by <a class="el" href="a00137.html#l01796">bm::bvector< Alloc, MS >::get_bit()</a>, and <a class="el" href="a00144.html#l00091">bm::miniset< A, N >::test()</a>. </td>
2094
<a class="anchor" name="ga8" doxytag="bm::gap_xor_to_bitset"></a><p>
2095
<table class="mdTable" cellpadding="2" cellspacing="0">
2098
<table cellpadding="0" cellspacing="0" border="0">
2100
<td class="mdPrefix" colspan="4">
2101
template<typename T> </td>
2104
<td class="md" nowrap valign="top">void gap_xor_to_bitset </td>
2105
<td class="md" valign="top">( </td>
2106
<td class="md" nowrap valign="top">unsigned * </td>
2107
<td class="mdname" nowrap> <em>dest</em>, </td>
2110
<td class="md" nowrap align="right"></td>
2111
<td class="md"></td>
2112
<td class="md" nowrap>const T * </td>
2113
<td class="mdname" nowrap> <em>buf</em></td>
2116
<td class="md"></td>
2117
<td class="md">) </td>
2118
<td class="md" colspan="2"></td>
2124
<table cellspacing="5" cellpadding="0" border="0">
2132
XOR GAP block to bitblock.
2134
<dl compact><dt><b>Parameters:</b></dt><dd>
2135
<table border="0" cellspacing="2" cellpadding="0">
2136
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td>- bitblock buffer pointer. </td></tr>
2137
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2142
Definition at line <a class="el" href="a00141.html#l01367">1367</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2144
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l01273">bm::xor_bit_block()</a>. </td>
2147
<a class="anchor" name="ga2" doxytag="bm::gapcmp"></a><p>
2148
<table class="mdTable" cellpadding="2" cellspacing="0">
2151
<table cellpadding="0" cellspacing="0" border="0">
2153
<td class="mdPrefix" colspan="4">
2154
template<typename T> </td>
2157
<td class="md" nowrap valign="top">int gapcmp </td>
2158
<td class="md" valign="top">( </td>
2159
<td class="md" nowrap valign="top">const T * </td>
2160
<td class="mdname" nowrap> <em>buf1</em>, </td>
2163
<td class="md" nowrap align="right"></td>
2164
<td class="md"></td>
2165
<td class="md" nowrap>const T * </td>
2166
<td class="mdname" nowrap> <em>buf2</em></td>
2169
<td class="md"></td>
2170
<td class="md">) </td>
2171
<td class="md" colspan="2"></td>
2177
<table cellspacing="5" cellpadding="0" border="0">
2185
Lexicographical comparison of GAP buffers.
2187
<dl compact><dt><b>Parameters:</b></dt><dd>
2188
<table border="0" cellspacing="2" cellpadding="0">
2189
<tr><td valign="top"></td><td valign="top"><em>buf1</em> </td><td>- First GAP buffer pointer. </td></tr>
2190
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second GAP buffer pointer. </td></tr>
2193
<dl compact><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
2196
Definition at line <a class="el" href="a00141.html#l00739">739</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2198
Referenced by <a class="el" href="a00137.html#l01909">bm::bvector< Alloc, MS >::compare()</a>. </td>
2201
<a class="anchor" name="ga37" doxytag="bm::improve_gap_levels"></a><p>
2202
<table class="mdTable" cellpadding="2" cellspacing="0">
2205
<table cellpadding="0" cellspacing="0" border="0">
2207
<td class="mdPrefix" colspan="4">
2208
template<typename T> </td>
2211
<td class="md" nowrap valign="top">bool improve_gap_levels </td>
2212
<td class="md" valign="top">( </td>
2213
<td class="md" nowrap valign="top">const T * </td>
2214
<td class="mdname" nowrap> <em>length</em>, </td>
2217
<td class="md" nowrap align="right"></td>
2218
<td class="md"></td>
2219
<td class="md" nowrap>const T * </td>
2220
<td class="mdname" nowrap> <em>length_end</em>, </td>
2223
<td class="md" nowrap align="right"></td>
2224
<td class="md"></td>
2225
<td class="md" nowrap>T * </td>
2226
<td class="mdname" nowrap> <em>glevel_len</em></td>
2229
<td class="md"></td>
2230
<td class="md">) </td>
2231
<td class="md" colspan="2"></td>
2237
<table cellspacing="5" cellpadding="0" border="0">
2245
Finds optimal gap blocks lengths.
2247
<dl compact><dt><b>Parameters:</b></dt><dd>
2248
<table border="0" cellspacing="2" cellpadding="0">
2249
<tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>- first element of GAP lengths array </td></tr>
2250
<tr><td valign="top"></td><td valign="top"><em>length_end</em> </td><td>- end of the GAP lengths array </td></tr>
2251
<tr><td valign="top"></td><td valign="top"><em>glevel_len</em> </td><td>- destination GAP lengths array </td></tr>
2256
Definition at line <a class="el" href="a00141.html#l03977">3977</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2258
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>, and <a class="el" href="a00141.html#l03949">bm::gap_overhead()</a>.
2260
Referenced by <a class="el" href="a00137.html#l01872">bm::bvector< Alloc, MS >::optimize_gap_size()</a>. </td>
2263
<a class="anchor" name="ga24" doxytag="bm::set_gap_level"></a><p>
2264
<table class="mdTable" cellpadding="2" cellspacing="0">
2267
<table cellpadding="0" cellspacing="0" border="0">
2269
<td class="mdPrefix" colspan="4">
2270
template<typename T> </td>
2273
<td class="md" nowrap valign="top">void set_gap_level </td>
2274
<td class="md" valign="top">( </td>
2275
<td class="md" nowrap valign="top">T * </td>
2276
<td class="mdname" nowrap> <em>buf</em>, </td>
2279
<td class="md" nowrap align="right"></td>
2280
<td class="md"></td>
2281
<td class="md" nowrap>unsigned </td>
2282
<td class="mdname" nowrap> <em>level</em></td>
2285
<td class="md"></td>
2286
<td class="md">) </td>
2287
<td class="md" colspan="2"></td>
2293
<table cellspacing="5" cellpadding="0" border="0">
2301
Sets GAP block capacity level.
2303
<dl compact><dt><b>Parameters:</b></dt><dd>
2304
<table border="0" cellspacing="2" cellpadding="0">
2305
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
2306
<tr><td valign="top"></td><td valign="top"><em>level</em> </td><td>new GAP block capacity level. </td></tr>
2311
Definition at line <a class="el" href="a00141.html#l02082">2082</a> of file <a class="el" href="a00141.html">bmfunc.h</a>.
2313
References <a class="el" href="a00140.html#l00014">BM_ASSERT</a>. </td>
2316
<hr size="1"><address style="align: right;"><small>Generated on Sun Aug 5 14:12:35 2007 for BitMagic by
2317
<a href="http://www.doxygen.org/index.html">
2318
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address>