~ubuntu-branches/ubuntu/trusty/bmagic/trusty

« back to all changes in this revision

Viewing changes to doc/html/a00119.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2010-01-24 14:45:39 UTC
  • mfrom: (4.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100124144539-4ipk5rt64dpp38hl
Tags: 3.6.3-1
* New upstream release
* debian/patches/config.guess.patch: drop obsolete patch
* Add ${misc:Depends} as requested by lintian

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
3
<head>
4
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
 
<title>BitMagic: Set algorithms</title>
 
5
<title>BitMagic: GAP functions</title>
6
6
<link href="tabs.css" rel="stylesheet" type="text/css"/>
7
7
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
8
</head>
21
21
  </div>
22
22
</div>
23
23
<div class="contents">
24
 
<h1>Set algorithms<br/>
 
24
<h1>GAP functions<br/>
25
25
<small>
26
 
[<a class="el" href="a00112.html">BitMagic C++ Library</a>]</small>
 
26
[<a class="el" href="a00117.html">BitMagic C++ Library</a>]</small>
27
27
</h1>
28
28
<p><div class="dynheader">
29
 
Collaboration diagram for Set algorithms:</div>
 
29
Collaboration diagram for GAP functions:</div>
30
30
<div class="dynsection">
31
31
<center><table><tr><td><img src="a00119.png" border="0" alt="" usemap="#a00119_map"/>
32
32
<map name="a00119_map" id="a00119">
33
 
<area shape="rect" href="a00112.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/><area shape="rect" href="a00120.html" title="Distance metrics" alt="" coords="352,5,472,35"/></map></td></tr></table></center>
 
33
<area shape="rect" href="a00117.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
34
34
</div>
35
35
</p>
36
36
<table border="0" cellpadding="0" cellspacing="0">
37
 
<tr><td colspan="2"><h2>Modules</h2></td></tr>
38
 
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html">Distance metrics</a></td></tr>
 
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
 
38
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00067.html">bm::gap_len_table&lt; T &gt;</a></td></tr>
 
39
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default GAP lengths table.  <a href="a00067.html#_details">More...</a><br/></td></tr>
 
40
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00068.html">bm::gap_len_table_min&lt; T &gt;</a></td></tr>
 
41
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alternative GAP lengths table. Good for for memory saver mode and very sparse bitsets.  <a href="a00068.html#_details">More...</a><br/></td></tr>
39
42
<tr><td colspan="2"><h2>Functions</h2></td></tr>
40
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
41
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga54ff78528c99ae3ca443eb99ba44785b">bm::combine_or</a> (BV &amp;bv, It first, It last)</td></tr>
42
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OR Combine bitvector and the iterable sequence.  <a href="#ga54ff78528c99ae3ca443eb99ba44785b"></a><br/></td></tr>
43
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
44
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3cb362aee03de6a321495100ae5c8375">bm::combine_xor</a> (BV &amp;bv, It first, It last)</td></tr>
45
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XOR Combine bitvector and the iterable sequence.  <a href="#ga3cb362aee03de6a321495100ae5c8375"></a><br/></td></tr>
46
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
47
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gab88c5bf51484323e0139aa789d7f0b98">bm::combine_sub</a> (BV &amp;bv, It first, It last)</td></tr>
48
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SUB Combine bitvector and the iterable sequence.  <a href="#gab88c5bf51484323e0139aa789d7f0b98"></a><br/></td></tr>
49
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
50
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga22922f71bd1eec8a5b663dc77b90cf6c">bm::combine_and_sorted</a> (BV &amp;bv, It first, It last)</td></tr>
51
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AND Combine bitvector and the iterable sequence.  <a href="#ga22922f71bd1eec8a5b663dc77b90cf6c"></a><br/></td></tr>
52
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
53
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga819bdab57a624a08456ea79161b9c5d2">bm::combine_and</a> (BV &amp;bv, It first, It last)</td></tr>
54
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AND Combine bitvector and the iterable sequence.  <a href="#ga819bdab57a624a08456ea79161b9c5d2"></a><br/></td></tr>
55
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
56
 
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gac7a59d3bc266310ec127cb3efadb0d33">bm::count_intervals</a> (const BV &amp;bv)</td></tr>
57
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute number of bit intervals (GAPs) in the bitvector.  <a href="#gac7a59d3bc266310ec127cb3efadb0d33"></a><br/></td></tr>
58
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV , class It &gt; </td></tr>
59
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gacd88ed9539553dd93419b7029e8a4584">bm::export_array</a> (BV &amp;bv, It first, It last)</td></tr>
60
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Export bitset from an array of binary data representing the bit vector.  <a href="#gacd88ed9539553dd93419b7029e8a4584"></a><br/></td></tr>
 
43
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
44
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga866352ef5986a7d2b709795d127b666b">bm::gap_test</a> (const T *buf, unsigned pos)</td></tr>
 
45
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if bit = pos is true.  <a href="#ga866352ef5986a7d2b709795d127b666b"></a><br/></td></tr>
 
46
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
47
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga570a6f573ffb9ac9e41a688d2bdc6004">bm::gap_bit_count</a> (const T *buf, unsigned dsize=0)</td></tr>
 
48
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculates number of bits ON in GAP buffer.  <a href="#ga570a6f573ffb9ac9e41a688d2bdc6004"></a><br/></td></tr>
 
49
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
50
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga406952734f1b05962941b32e37b3eb96">bm::gapcmp</a> (const T *buf1, const T *buf2)</td></tr>
 
51
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lexicographical comparison of GAP buffers.  <a href="#ga406952734f1b05962941b32e37b3eb96"></a><br/></td></tr>
 
52
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , class F &gt; </td></tr>
 
53
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga5e3123c3c9d3587f470abdbe6c8c3ad3">bm::gap_buff_any_op</a> (const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)</td></tr>
 
54
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Abstract distance test operation for GAP buffers. Receives functor F as a template argument.  <a href="#ga5e3123c3c9d3587f470abdbe6c8c3ad3"></a><br/></td></tr>
 
55
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
56
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga69186bd13bda27e04b3e33683ff884c2">bm::gap_set_value</a> (unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)</td></tr>
 
57
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument.  <a href="#ga69186bd13bda27e04b3e33683ff884c2"></a><br/></td></tr>
 
58
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
59
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gaa7df7193094353ea24b8519debf745be">bm::gap_find_in_block</a> (const T *buf, unsigned nbit, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *prev)</td></tr>
 
60
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Searches for the next 1 bit in the GAP block.  <a href="#gaa7df7193094353ea24b8519debf745be"></a><br/></td></tr>
 
61
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
62
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga08e0ae8b2fd5869aa31cfad7d47177c4">bm::gap_sub_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
 
63
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SUB (AND NOT) GAP block to bitblock.  <a href="#ga08e0ae8b2fd5869aa31cfad7d47177c4"></a><br/></td></tr>
 
64
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
65
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gab939656d4ea54fd3868aa236cdb20b82">bm::gap_xor_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
 
66
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XOR GAP block to bitblock.  <a href="#gab939656d4ea54fd3868aa236cdb20b82"></a><br/></td></tr>
 
67
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
68
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga12615cd62f2e5367e1bc688d00a2188f">bm::gap_add_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
 
69
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds(OR) GAP block to bitblock.  <a href="#ga12615cd62f2e5367e1bc688d00a2188f"></a><br/></td></tr>
 
70
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
71
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gafe6f72a009618290eeab3cddee869543">bm::gap_and_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
 
72
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">ANDs GAP block to bitblock.  <a href="#gafe6f72a009618290eeab3cddee869543"></a><br/></td></tr>
 
73
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
74
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga4862f4dcdcb7c0575e2e2db9e5f2a849">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf)</td></tr>
 
75
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP block to bitblock conversion.  <a href="#ga4862f4dcdcb7c0575e2e2db9e5f2a849"></a><br/></td></tr>
 
76
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
77
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga9bb80c42ee0ecf8f2af8250d7f5d327b">bm::gap_convert_to_bitset</a> (unsigned *dest, const T *buf, unsigned dest_len)</td></tr>
 
78
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP block to bitblock conversion.  <a href="#ga9bb80c42ee0ecf8f2af8250d7f5d327b"></a><br/></td></tr>
 
79
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
80
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned *&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c">bm::gap_convert_to_bitset_smart</a> (unsigned *dest, const T *buf, id_t set_max)</td></tr>
 
81
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Smart GAP block to bitblock conversion.  <a href="#ga3f01bb7c1ae7983aa8c4ba82e1e3f54c"></a><br/></td></tr>
 
82
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
83
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga14d29338ffd1387758810b3f9e3a72c6">bm::gap_control_sum</a> (const T *buf)</td></tr>
 
84
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculates sum of all words in GAP block. (For debugging purposes).  <a href="#ga14d29338ffd1387758810b3f9e3a72c6"></a><br/></td></tr>
 
85
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
 
86
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gaef53b2877ff369badd7bb25b26bb9029">bm::gap_set_all</a> (T *buf, unsigned set_max, unsigned value)</td></tr>
 
87
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets all bits to 0 or 1 (GAP).  <a href="#gaef53b2877ff369badd7bb25b26bb9029"></a><br/></td></tr>
 
88
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
 
89
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga5d49355eb9dd7947699e20f3a2a75ef5">bm::gap_init_range_block</a> (T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)</td></tr>
 
90
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init gap block so it has block in it (can be whole block).  <a href="#ga5d49355eb9dd7947699e20f3a2a75ef5"></a><br/></td></tr>
 
91
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
92
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3f22bfde5dfe06d6d77dc2598b8c0845">bm::gap_invert</a> (T *buf)</td></tr>
 
93
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inverts all bits in the GAP buffer.  <a href="#ga3f22bfde5dfe06d6d77dc2598b8c0845"></a><br/></td></tr>
 
94
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
95
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga690ff7c8b16e1821a77663b7194267e7">bm::gap_is_all_zero</a> (const T *buf, unsigned set_max)</td></tr>
 
96
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Temporary inverts all bits in the GAP buffer.  <a href="#ga690ff7c8b16e1821a77663b7194267e7"></a><br/></td></tr>
 
97
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
98
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga1427d43e91872f981c6311fa76ab5633">bm::gap_is_all_one</a> (const T *buf, unsigned set_max)</td></tr>
 
99
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks if GAP block is all-one.  <a href="#ga1427d43e91872f981c6311fa76ab5633"></a><br/></td></tr>
 
100
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
101
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gad6bfb9da9950b0df8983a9faf9db5042">bm::gap_length</a> (const T *buf)</td></tr>
 
102
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returs GAP block length.  <a href="#gad6bfb9da9950b0df8983a9faf9db5042"></a><br/></td></tr>
 
103
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
104
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga0419ed06e2f0b7891e7d721546f5fb45">bm::gap_capacity</a> (const T *buf, const T *glevel_len)</td></tr>
 
105
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returs GAP block capacity.  <a href="#ga0419ed06e2f0b7891e7d721546f5fb45"></a><br/></td></tr>
 
106
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
107
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga94a5371b5dc6a1560d95d7c2dde88815">bm::gap_limit</a> (const T *buf, const T *glevel_len)</td></tr>
 
108
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returs GAP block capacity limit.  <a href="#ga94a5371b5dc6a1560d95d7c2dde88815"></a><br/></td></tr>
 
109
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
110
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga1defe73aa4227a0e7204363ac6bb1ac1">bm::gap_level</a> (const T *buf)</td></tr>
 
111
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returs GAP blocks capacity level.  <a href="#ga1defe73aa4227a0e7204363ac6bb1ac1"></a><br/></td></tr>
 
112
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
113
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga501aa9bf029e7f9ea9518e7003fe5549">bm::set_gap_level</a> (T *buf, unsigned level)</td></tr>
 
114
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets GAP block capacity level.  <a href="#ga501aa9bf029e7f9ea9518e7003fe5549"></a><br/></td></tr>
 
115
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
116
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga3bfaebeeb4b2d479c5a9ac9d57607165">bm::gap_calc_level</a> (int len, const T *glevel_len)</td></tr>
 
117
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculates GAP block capacity level.  <a href="#ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><br/></td></tr>
 
118
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
119
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gafd76869eb44fac688da5e26e0e74f41f">bm::gap_free_elements</a> (const T *buf, const T *glevel_len)</td></tr>
 
120
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length.  <a href="#gafd76869eb44fac688da5e26e0e74f41f"></a><br/></td></tr>
 
121
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
122
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga80d09bb6ab244e68ab0c1fdccc17b95b">bm::bit_convert_to_gap</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bits, unsigned dest_len)</td></tr>
 
123
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts bit block to GAP.  <a href="#ga80d09bb6ab244e68ab0c1fdccc17b95b"></a><br/></td></tr>
 
124
<tr><td class="memTemplParams" colspan="2">template&lt;class T , class F &gt; </td></tr>
 
125
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga11bc26da8533752bb23756632fd30a00">bm::for_each_gap_dbit</a> (const T *buf, F &amp;func)</td></tr>
 
126
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterate gap block as delta-bits with a functor.  <a href="#ga11bc26da8533752bb23756632fd30a00"></a><br/></td></tr>
 
127
<tr><td class="memTemplParams" colspan="2">template&lt;typename D , typename T &gt; </td></tr>
 
128
<tr><td class="memTemplItemLeft" align="right" valign="top">D&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga5cd7e0cfee401da1b8f702151c083b27">bm::gap_convert_to_arr</a> (D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len, bool invert=false)</td></tr>
 
129
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert gap block into array of ints corresponding to 1 bits.  <a href="#ga5cd7e0cfee401da1b8f702151c083b27"></a><br/></td></tr>
 
130
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ga1666464d22f7fd473db9aafcf2f77a63">bm::gap_operation_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)</td></tr>
 
131
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP AND operation.  <a href="#ga1666464d22f7fd473db9aafcf2f77a63"></a><br/></td></tr>
 
132
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gafb24a1e2588c5670df6facc537594d9d">bm::gap_operation_any_and</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
 
133
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP AND operation test.  <a href="#gafb24a1e2588c5670df6facc537594d9d"></a><br/></td></tr>
 
134
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gaa5e07ad0256bf784ad3397acbbd23bb2">bm::gap_operation_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)</td></tr>
 
135
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP XOR operation.  <a href="#gaa5e07ad0256bf784ad3397acbbd23bb2"></a><br/></td></tr>
 
136
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gab46833bf0d7813f868a1608f70db12de">bm::gap_operation_any_xor</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
 
137
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP XOR operation test.  <a href="#gab46833bf0d7813f868a1608f70db12de"></a><br/></td></tr>
 
138
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gacda280af8910ae5fde37731a3a7a1226">bm::gap_operation_or</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)</td></tr>
 
139
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP OR operation.  <a href="#gacda280af8910ae5fde37731a3a7a1226"></a><br/></td></tr>
 
140
<tr><td class="memItemLeft" align="right" valign="top">gap_word_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gabe4c83e5e162c38e297116dd1cd05ac4">bm::gap_operation_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)</td></tr>
 
141
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP SUB (AND NOT) operation.  <a href="#gabe4c83e5e162c38e297116dd1cd05ac4"></a><br/></td></tr>
 
142
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#gae0b1d4aca0ddfa58d83e4b089a4f35d9">bm::gap_operation_any_sub</a> (const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)</td></tr>
 
143
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GAP SUB operation test.  <a href="#gae0b1d4aca0ddfa58d83e4b089a4f35d9"></a><br/></td></tr>
 
144
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
145
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#gacc578010f3700940829c600c812d23b1">bm::gap_overhead</a> (const T *length, const T *length_end, const T *glevel_len)</td></tr>
 
146
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert bit block into an array of ints corresponding to 1 bits.  <a href="#gacc578010f3700940829c600c812d23b1"></a><br/></td></tr>
 
147
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
148
<tr><td class="memTemplItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00119.html#ga2daff3a0ceda6fef87d3b0e892da5813">bm::improve_gap_levels</a> (const T *length, const T *length_end, T *glevel_len)</td></tr>
 
149
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds optimal gap blocks lengths.  <a href="#ga2daff3a0ceda6fef87d3b0e892da5813"></a><br/></td></tr>
61
150
</table>
62
151
<hr/><a name="_details"></a><h2>Detailed Description</h2>
63
 
<p>Set algorithms </p>
 
152
<p>GAP functions implement different opereations on GAP compressed blocks and serve as a minimal building blocks. </p>
64
153
<hr/><h2>Function Documentation</h2>
65
 
<a class="anchor" id="ga819bdab57a624a08456ea79161b9c5d2"></a><!-- doxytag: member="bm::combine_and" ref="ga819bdab57a624a08456ea79161b9c5d2" args="(BV &amp;bv, It first, It last)" -->
66
 
<div class="memitem">
67
 
<div class="memproto">
68
 
<div class="memtemplate">
69
 
template&lt;class BV , class It &gt; </div>
70
 
      <table class="memname">
71
 
        <tr>
72
 
          <td class="memname">void bm::combine_and </td>
73
 
          <td>(</td>
74
 
          <td class="paramtype">BV &amp;&nbsp;</td>
75
 
          <td class="paramname"> <em>bv</em>, </td>
76
 
        </tr>
77
 
        <tr>
78
 
          <td class="paramkey"></td>
79
 
          <td></td>
80
 
          <td class="paramtype">It&nbsp;</td>
81
 
          <td class="paramname"> <em>first</em>, </td>
82
 
        </tr>
83
 
        <tr>
84
 
          <td class="paramkey"></td>
85
 
          <td></td>
86
 
          <td class="paramtype">It&nbsp;</td>
87
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
88
 
        </tr>
89
 
        <tr>
90
 
          <td></td>
91
 
          <td>)</td>
92
 
          <td></td><td></td><td><code> [inline]</code></td>
93
 
        </tr>
94
 
      </table>
95
 
</div>
96
 
<div class="memdoc">
97
 
 
98
 
<p>AND Combine bitvector and the iterable sequence. </p>
99
 
<p>Algorithm combines <a class="el" href="a00043.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
100
 
<dl><dt><b>Parameters:</b></dt><dd>
101
 
  <table border="0" cellspacing="2" cellpadding="0">
102
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
103
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
104
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence</td></tr>
105
 
  </table>
106
 
  </dd>
107
 
</dl>
108
 
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00119.html#ga22922f71bd1eec8a5b663dc77b90cf6c" title="AND Combine bitvector and the iterable sequence.">combine_and_sorted</a> </dd></dl>
109
 
 
110
 
<p>Definition at line <a class="el" href="a00086_source.html#l01382">1382</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
111
 
 
112
 
<p>References <a class="el" href="a00086_source.html#l01105">bm::combine_or()</a>.</p>
113
 
 
114
 
</div>
115
 
</div>
116
 
<a class="anchor" id="ga22922f71bd1eec8a5b663dc77b90cf6c"></a><!-- doxytag: member="bm::combine_and_sorted" ref="ga22922f71bd1eec8a5b663dc77b90cf6c" args="(BV &amp;bv, It first, It last)" -->
117
 
<div class="memitem">
118
 
<div class="memproto">
119
 
<div class="memtemplate">
120
 
template&lt;class BV , class It &gt; </div>
121
 
      <table class="memname">
122
 
        <tr>
123
 
          <td class="memname">void bm::combine_and_sorted </td>
124
 
          <td>(</td>
125
 
          <td class="paramtype">BV &amp;&nbsp;</td>
126
 
          <td class="paramname"> <em>bv</em>, </td>
127
 
        </tr>
128
 
        <tr>
129
 
          <td class="paramkey"></td>
130
 
          <td></td>
131
 
          <td class="paramtype">It&nbsp;</td>
132
 
          <td class="paramname"> <em>first</em>, </td>
133
 
        </tr>
134
 
        <tr>
135
 
          <td class="paramkey"></td>
136
 
          <td></td>
137
 
          <td class="paramtype">It&nbsp;</td>
138
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
139
 
        </tr>
140
 
        <tr>
141
 
          <td></td>
142
 
          <td>)</td>
143
 
          <td></td><td></td><td><code> [inline]</code></td>
144
 
        </tr>
145
 
      </table>
146
 
</div>
147
 
<div class="memdoc">
148
 
 
149
 
<p>AND Combine bitvector and the iterable sequence. </p>
150
 
<p>Algorithm combines <a class="el" href="a00043.html" title="bitvector with runtime compression of bits.">bvector</a> with sorted sequence of integers (represents another set).</p>
151
 
<dl><dt><b>Parameters:</b></dt><dd>
152
 
  <table border="0" cellspacing="2" cellpadding="0">
153
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
154
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
155
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence </td></tr>
156
 
  </table>
157
 
  </dd>
158
 
</dl>
159
 
 
160
 
<p>Definition at line <a class="el" href="a00086_source.html#l01350">1350</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
161
 
 
162
 
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>.</p>
163
 
 
164
 
</div>
165
 
</div>
166
 
<a class="anchor" id="ga54ff78528c99ae3ca443eb99ba44785b"></a><!-- doxytag: member="bm::combine_or" ref="ga54ff78528c99ae3ca443eb99ba44785b" args="(BV &amp;bv, It first, It last)" -->
167
 
<div class="memitem">
168
 
<div class="memproto">
169
 
<div class="memtemplate">
170
 
template&lt;class BV , class It &gt; </div>
171
 
      <table class="memname">
172
 
        <tr>
173
 
          <td class="memname">void bm::combine_or </td>
174
 
          <td>(</td>
175
 
          <td class="paramtype">BV &amp;&nbsp;</td>
176
 
          <td class="paramname"> <em>bv</em>, </td>
177
 
        </tr>
178
 
        <tr>
179
 
          <td class="paramkey"></td>
180
 
          <td></td>
181
 
          <td class="paramtype">It&nbsp;</td>
182
 
          <td class="paramname"> <em>first</em>, </td>
183
 
        </tr>
184
 
        <tr>
185
 
          <td class="paramkey"></td>
186
 
          <td></td>
187
 
          <td class="paramtype">It&nbsp;</td>
188
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
189
 
        </tr>
190
 
        <tr>
191
 
          <td></td>
192
 
          <td>)</td>
193
 
          <td></td><td></td><td><code> [inline]</code></td>
194
 
        </tr>
195
 
      </table>
196
 
</div>
197
 
<div class="memdoc">
198
 
 
199
 
<p>OR Combine bitvector and the iterable sequence. </p>
200
 
<p>Algorithm combines <a class="el" href="a00043.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
201
 
<dl><dt><b>Parameters:</b></dt><dd>
202
 
  <table border="0" cellspacing="2" cellpadding="0">
203
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
204
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
205
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence </td></tr>
206
 
  </table>
207
 
  </dd>
208
 
</dl>
209
 
 
210
 
<p>Definition at line <a class="el" href="a00086_source.html#l01105">1105</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
211
 
 
212
 
<p>References <a class="el" href="a00086_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00089_source.html#l00092">BMGAP_PTR</a>, <a class="el" href="a00090_source.html#l02151">bm::gap_limit()</a>, <a class="el" href="a00090_source.html#l01098">bm::gap_set_value()</a>, <a class="el" href="a00088_source.html#l00048">bm::id_max</a>, <a class="el" href="a00088_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00088_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00088_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00088_source.html#l00062">bm::set_word_shift</a>.</p>
213
 
 
214
 
<p>Referenced by <a class="el" href="a00086_source.html#l01382">bm::combine_and()</a>.</p>
215
 
 
216
 
</div>
217
 
</div>
218
 
<a class="anchor" id="gab88c5bf51484323e0139aa789d7f0b98"></a><!-- doxytag: member="bm::combine_sub" ref="gab88c5bf51484323e0139aa789d7f0b98" args="(BV &amp;bv, It first, It last)" -->
219
 
<div class="memitem">
220
 
<div class="memproto">
221
 
<div class="memtemplate">
222
 
template&lt;class BV , class It &gt; </div>
223
 
      <table class="memname">
224
 
        <tr>
225
 
          <td class="memname">void bm::combine_sub </td>
226
 
          <td>(</td>
227
 
          <td class="paramtype">BV &amp;&nbsp;</td>
228
 
          <td class="paramname"> <em>bv</em>, </td>
229
 
        </tr>
230
 
        <tr>
231
 
          <td class="paramkey"></td>
232
 
          <td></td>
233
 
          <td class="paramtype">It&nbsp;</td>
234
 
          <td class="paramname"> <em>first</em>, </td>
235
 
        </tr>
236
 
        <tr>
237
 
          <td class="paramkey"></td>
238
 
          <td></td>
239
 
          <td class="paramtype">It&nbsp;</td>
240
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
241
 
        </tr>
242
 
        <tr>
243
 
          <td></td>
244
 
          <td>)</td>
245
 
          <td></td><td></td><td><code> [inline]</code></td>
246
 
        </tr>
247
 
      </table>
248
 
</div>
249
 
<div class="memdoc">
250
 
 
251
 
<p>SUB Combine bitvector and the iterable sequence. </p>
252
 
<p>Algorithm combines <a class="el" href="a00043.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
253
 
<dl><dt><b>Parameters:</b></dt><dd>
254
 
  <table border="0" cellspacing="2" cellpadding="0">
255
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
256
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
257
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence </td></tr>
258
 
  </table>
259
 
  </dd>
260
 
</dl>
261
 
 
262
 
<p>Definition at line <a class="el" href="a00086_source.html#l01268">1268</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
263
 
 
264
 
<p>References <a class="el" href="a00086_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00089_source.html#l00092">BMGAP_PTR</a>, <a class="el" href="a00090_source.html#l02151">bm::gap_limit()</a>, <a class="el" href="a00090_source.html#l01098">bm::gap_set_value()</a>, <a class="el" href="a00090_source.html#l00454">bm::gap_test()</a>, <a class="el" href="a00088_source.html#l00048">bm::id_max</a>, <a class="el" href="a00088_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00088_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00088_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00088_source.html#l00062">bm::set_word_shift</a>.</p>
265
 
 
266
 
</div>
267
 
</div>
268
 
<a class="anchor" id="ga3cb362aee03de6a321495100ae5c8375"></a><!-- doxytag: member="bm::combine_xor" ref="ga3cb362aee03de6a321495100ae5c8375" args="(BV &amp;bv, It first, It last)" -->
269
 
<div class="memitem">
270
 
<div class="memproto">
271
 
<div class="memtemplate">
272
 
template&lt;class BV , class It &gt; </div>
273
 
      <table class="memname">
274
 
        <tr>
275
 
          <td class="memname">void bm::combine_xor </td>
276
 
          <td>(</td>
277
 
          <td class="paramtype">BV &amp;&nbsp;</td>
278
 
          <td class="paramname"> <em>bv</em>, </td>
279
 
        </tr>
280
 
        <tr>
281
 
          <td class="paramkey"></td>
282
 
          <td></td>
283
 
          <td class="paramtype">It&nbsp;</td>
284
 
          <td class="paramname"> <em>first</em>, </td>
285
 
        </tr>
286
 
        <tr>
287
 
          <td class="paramkey"></td>
288
 
          <td></td>
289
 
          <td class="paramtype">It&nbsp;</td>
290
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
291
 
        </tr>
292
 
        <tr>
293
 
          <td></td>
294
 
          <td>)</td>
295
 
          <td></td><td></td><td><code> [inline]</code></td>
296
 
        </tr>
297
 
      </table>
298
 
</div>
299
 
<div class="memdoc">
300
 
 
301
 
<p>XOR Combine bitvector and the iterable sequence. </p>
302
 
<p>Algorithm combines <a class="el" href="a00043.html" title="bitvector with runtime compression of bits.">bvector</a> with sequence of integers (represents another set). When the agrument set is sorted this method can give serious increase in performance.</p>
303
 
<dl><dt><b>Parameters:</b></dt><dd>
304
 
  <table border="0" cellspacing="2" cellpadding="0">
305
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
306
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
307
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence </td></tr>
308
 
  </table>
309
 
  </dd>
310
 
</dl>
311
 
 
312
 
<p>Definition at line <a class="el" href="a00086_source.html#l01184">1184</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
313
 
 
314
 
<p>References <a class="el" href="a00086_source.html#l01075">bm::block_range_scan()</a>, <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00089_source.html#l00092">BMGAP_PTR</a>, <a class="el" href="a00090_source.html#l02151">bm::gap_limit()</a>, <a class="el" href="a00090_source.html#l01098">bm::gap_set_value()</a>, <a class="el" href="a00090_source.html#l00454">bm::gap_test()</a>, <a class="el" href="a00088_source.html#l00048">bm::id_max</a>, <a class="el" href="a00088_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00088_source.html#l00053">bm::set_block_shift</a>, <a class="el" href="a00088_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00088_source.html#l00062">bm::set_word_shift</a>.</p>
315
 
 
316
 
</div>
317
 
</div>
318
 
<a class="anchor" id="gac7a59d3bc266310ec127cb3efadb0d33"></a><!-- doxytag: member="bm::count_intervals" ref="gac7a59d3bc266310ec127cb3efadb0d33" args="(const BV &amp;bv)" -->
319
 
<div class="memitem">
320
 
<div class="memproto">
321
 
<div class="memtemplate">
322
 
template&lt;class BV &gt; </div>
323
 
      <table class="memname">
324
 
        <tr>
325
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_intervals </td>
326
 
          <td>(</td>
327
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
328
 
          <td class="paramname"> <em>bv</em></td>
329
 
          <td>&nbsp;)&nbsp;</td>
330
 
          <td><code> [inline]</code></td>
331
 
        </tr>
332
 
      </table>
333
 
</div>
334
 
<div class="memdoc">
335
 
 
336
 
<p>Compute number of bit intervals (GAPs) in the bitvector. </p>
337
 
<p>Algorithm traverses bit vector and count number of uninterrupted intervals of 1s and 0s. </p>
338
 
<pre>
339
 
    For example: 
340
 
      00001111100000 - gives us 3 intervals
341
 
      10001111100000 - 4 intervals
342
 
      00000000000000 - 1 interval
343
 
      11111111111111 - 1 interval
344
 
    </pre> <dl class="return"><dt><b>Returns:</b></dt><dd>Number of intervals </dd></dl>
345
 
 
346
 
<p>Definition at line <a class="el" href="a00086_source.html#l01405">1405</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
347
 
 
348
 
<p>References <a class="el" href="a00090_source.html#l00557">bm::for_each_block()</a>, and <a class="el" href="a00088_source.html#l00080">bm::set_array_size</a>.</p>
349
 
 
350
 
</div>
351
 
</div>
352
 
<a class="anchor" id="gacd88ed9539553dd93419b7029e8a4584"></a><!-- doxytag: member="bm::export_array" ref="gacd88ed9539553dd93419b7029e8a4584" args="(BV &amp;bv, It first, It last)" -->
353
 
<div class="memitem">
354
 
<div class="memproto">
355
 
<div class="memtemplate">
356
 
template&lt;class BV , class It &gt; </div>
357
 
      <table class="memname">
358
 
        <tr>
359
 
          <td class="memname">void bm::export_array </td>
360
 
          <td>(</td>
361
 
          <td class="paramtype">BV &amp;&nbsp;</td>
362
 
          <td class="paramname"> <em>bv</em>, </td>
363
 
        </tr>
364
 
        <tr>
365
 
          <td class="paramkey"></td>
366
 
          <td></td>
367
 
          <td class="paramtype">It&nbsp;</td>
368
 
          <td class="paramname"> <em>first</em>, </td>
369
 
        </tr>
370
 
        <tr>
371
 
          <td class="paramkey"></td>
372
 
          <td></td>
373
 
          <td class="paramtype">It&nbsp;</td>
374
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
375
 
        </tr>
376
 
        <tr>
377
 
          <td></td>
378
 
          <td>)</td>
379
 
          <td></td><td></td><td><code> [inline]</code></td>
380
 
        </tr>
381
 
      </table>
382
 
</div>
383
 
<div class="memdoc">
384
 
 
385
 
<p>Export bitset from an array of binary data representing the bit vector. </p>
386
 
<p>Input array can be array of ints, chars or other native C types. Method works with iterators, which makes it compatible with STL containers and C arrays</p>
387
 
<dl><dt><b>Parameters:</b></dt><dd>
388
 
  <table border="0" cellspacing="2" cellpadding="0">
389
 
    <tr><td valign="top"></td><td valign="top"><em>bv</em>&nbsp;</td><td>- destination bitvector </td></tr>
390
 
    <tr><td valign="top"></td><td valign="top"><em>first</em>&nbsp;</td><td>- first element of the iterated sequence </td></tr>
391
 
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>- last element of the iterated sequence </td></tr>
392
 
  </table>
393
 
  </dd>
394
 
</dl>
395
 
 
396
 
<p>Definition at line <a class="el" href="a00086_source.html#l01431">1431</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
397
 
 
398
 
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00088_source.html#l00116">bm::BM_BIT</a>, <a class="el" href="a00089_source.html#l00092">BMGAP_PTR</a>, <a class="el" href="a00088_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00088_source.html#l00083">bm::set_total_blocks</a>.</p>
399
 
 
400
 
</div>
401
 
</div>
402
 
</div>
403
 
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Nov 22 10:49:42 2009 for BitMagic by&nbsp;
 
154
<a class="anchor" id="ga80d09bb6ab244e68ab0c1fdccc17b95b"></a><!-- doxytag: member="bm::bit_convert_to_gap" ref="ga80d09bb6ab244e68ab0c1fdccc17b95b" args="(T *BMRESTRICT dest, const unsigned *BMRESTRICT src, bm::id_t bits, unsigned dest_len)" -->
 
155
<div class="memitem">
 
156
<div class="memproto">
 
157
<div class="memtemplate">
 
158
template&lt;typename T &gt; </div>
 
159
      <table class="memname">
 
160
        <tr>
 
161
          <td class="memname">unsigned bm::bit_convert_to_gap </td>
 
162
          <td>(</td>
 
163
          <td class="paramtype">T *BMRESTRICT&nbsp;</td>
 
164
          <td class="paramname"> <em>dest</em>, </td>
 
165
        </tr>
 
166
        <tr>
 
167
          <td class="paramkey"></td>
 
168
          <td></td>
 
169
          <td class="paramtype">const unsigned *BMRESTRICT&nbsp;</td>
 
170
          <td class="paramname"> <em>src</em>, </td>
 
171
        </tr>
 
172
        <tr>
 
173
          <td class="paramkey"></td>
 
174
          <td></td>
 
175
          <td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td>
 
176
          <td class="paramname"> <em>bits</em>, </td>
 
177
        </tr>
 
178
        <tr>
 
179
          <td class="paramkey"></td>
 
180
          <td></td>
 
181
          <td class="paramtype">unsigned&nbsp;</td>
 
182
          <td class="paramname"> <em>dest_len</em></td><td>&nbsp;</td>
 
183
        </tr>
 
184
        <tr>
 
185
          <td></td>
 
186
          <td>)</td>
 
187
          <td></td><td></td><td><code> [inline]</code></td>
 
188
        </tr>
 
189
      </table>
 
190
</div>
 
191
<div class="memdoc">
 
192
 
 
193
<p>Converts bit block to GAP. </p>
 
194
<dl><dt><b>Parameters:</b></dt><dd>
 
195
  <table border="0" cellspacing="2" cellpadding="0">
 
196
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- Destinatio GAP buffer. </td></tr>
 
197
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- Source bitblock buffer. </td></tr>
 
198
    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>- Number of bits to convert. </td></tr>
 
199
    <tr><td valign="top"></td><td valign="top"><em>dest_len</em>&nbsp;</td><td>- length of the dest. buffer. </td></tr>
 
200
  </table>
 
201
  </dd>
 
202
</dl>
 
203
<dl class="return"><dt><b>Returns:</b></dt><dd>New length of GAP block or 0 if conversion failed (insufficicent space). </dd></dl>
 
204
 
 
205
<p>Definition at line <a class="el" href="a00093_source.html#l02301">2301</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
206
 
 
207
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
208
 
 
209
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>.</p>
 
210
 
 
211
</div>
 
212
</div>
 
213
<a class="anchor" id="ga11bc26da8533752bb23756632fd30a00"></a><!-- doxytag: member="bm::for_each_gap_dbit" ref="ga11bc26da8533752bb23756632fd30a00" args="(const T *buf, F &amp;func)" -->
 
214
<div class="memitem">
 
215
<div class="memproto">
 
216
<div class="memtemplate">
 
217
template&lt;class T , class F &gt; </div>
 
218
      <table class="memname">
 
219
        <tr>
 
220
          <td class="memname">void bm::for_each_gap_dbit </td>
 
221
          <td>(</td>
 
222
          <td class="paramtype">const T *&nbsp;</td>
 
223
          <td class="paramname"> <em>buf</em>, </td>
 
224
        </tr>
 
225
        <tr>
 
226
          <td class="paramkey"></td>
 
227
          <td></td>
 
228
          <td class="paramtype">F &amp;&nbsp;</td>
 
229
          <td class="paramname"> <em>func</em></td><td>&nbsp;</td>
 
230
        </tr>
 
231
        <tr>
 
232
          <td></td>
 
233
          <td>)</td>
 
234
          <td></td><td></td><td><code> [inline]</code></td>
 
235
        </tr>
 
236
      </table>
 
237
</div>
 
238
<div class="memdoc">
 
239
 
 
240
<p>Iterate gap block as delta-bits with a functor. </p>
 
241
 
 
242
<p>Definition at line <a class="el" href="a00093_source.html#l02391">2391</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
243
 
 
244
</div>
 
245
</div>
 
246
<a class="anchor" id="ga12615cd62f2e5367e1bc688d00a2188f"></a><!-- doxytag: member="bm::gap_add_to_bitset" ref="ga12615cd62f2e5367e1bc688d00a2188f" args="(unsigned *dest, const T *buf)" -->
 
247
<div class="memitem">
 
248
<div class="memproto">
 
249
<div class="memtemplate">
 
250
template&lt;typename T &gt; </div>
 
251
      <table class="memname">
 
252
        <tr>
 
253
          <td class="memname">void bm::gap_add_to_bitset </td>
 
254
          <td>(</td>
 
255
          <td class="paramtype">unsigned *&nbsp;</td>
 
256
          <td class="paramname"> <em>dest</em>, </td>
 
257
        </tr>
 
258
        <tr>
 
259
          <td class="paramkey"></td>
 
260
          <td></td>
 
261
          <td class="paramtype">const T *&nbsp;</td>
 
262
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
263
        </tr>
 
264
        <tr>
 
265
          <td></td>
 
266
          <td>)</td>
 
267
          <td></td><td></td><td><code> [inline]</code></td>
 
268
        </tr>
 
269
      </table>
 
270
</div>
 
271
<div class="memdoc">
 
272
 
 
273
<p>Adds(OR) GAP block to bitblock. </p>
 
274
<dl><dt><b>Parameters:</b></dt><dd>
 
275
  <table border="0" cellspacing="2" cellpadding="0">
 
276
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
277
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
278
  </table>
 
279
  </dd>
 
280
</dl>
 
281
 
 
282
<p>Definition at line <a class="el" href="a00093_source.html#l01530">1530</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
283
 
 
284
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01280">bm::or_bit_block()</a>.</p>
 
285
 
 
286
<p>Referenced by <a class="el" href="a00093_source.html#l01938">bm::gap_convert_to_bitset()</a>.</p>
 
287
 
 
288
</div>
 
289
</div>
 
290
<a class="anchor" id="gafe6f72a009618290eeab3cddee869543"></a><!-- doxytag: member="bm::gap_and_to_bitset" ref="gafe6f72a009618290eeab3cddee869543" args="(unsigned *dest, const T *buf)" -->
 
291
<div class="memitem">
 
292
<div class="memproto">
 
293
<div class="memtemplate">
 
294
template&lt;typename T &gt; </div>
 
295
      <table class="memname">
 
296
        <tr>
 
297
          <td class="memname">void bm::gap_and_to_bitset </td>
 
298
          <td>(</td>
 
299
          <td class="paramtype">unsigned *&nbsp;</td>
 
300
          <td class="paramname"> <em>dest</em>, </td>
 
301
        </tr>
 
302
        <tr>
 
303
          <td class="paramkey"></td>
 
304
          <td></td>
 
305
          <td class="paramtype">const T *&nbsp;</td>
 
306
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
307
        </tr>
 
308
        <tr>
 
309
          <td></td>
 
310
          <td>)</td>
 
311
          <td></td><td></td><td><code> [inline]</code></td>
 
312
        </tr>
 
313
      </table>
 
314
</div>
 
315
<div class="memdoc">
 
316
 
 
317
<p>ANDs GAP block to bitblock. </p>
 
318
<dl><dt><b>Parameters:</b></dt><dd>
 
319
  <table border="0" cellspacing="2" cellpadding="0">
 
320
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
321
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
322
  </table>
 
323
  </dd>
 
324
</dl>
 
325
 
 
326
<p>Definition at line <a class="el" href="a00093_source.html#l01562">1562</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
327
 
 
328
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01342">bm::sub_bit_block()</a>.</p>
 
329
 
 
330
</div>
 
331
</div>
 
332
<a class="anchor" id="ga570a6f573ffb9ac9e41a688d2bdc6004"></a><!-- doxytag: member="bm::gap_bit_count" ref="ga570a6f573ffb9ac9e41a688d2bdc6004" args="(const T *buf, unsigned dsize=0)" -->
 
333
<div class="memitem">
 
334
<div class="memproto">
 
335
<div class="memtemplate">
 
336
template&lt;typename T &gt; </div>
 
337
      <table class="memname">
 
338
        <tr>
 
339
          <td class="memname">unsigned bm::gap_bit_count </td>
 
340
          <td>(</td>
 
341
          <td class="paramtype">const T *&nbsp;</td>
 
342
          <td class="paramname"> <em>buf</em>, </td>
 
343
        </tr>
 
344
        <tr>
 
345
          <td class="paramkey"></td>
 
346
          <td></td>
 
347
          <td class="paramtype">unsigned&nbsp;</td>
 
348
          <td class="paramname"> <em>dsize</em> = <code>0</code></td><td>&nbsp;</td>
 
349
        </tr>
 
350
        <tr>
 
351
          <td></td>
 
352
          <td>)</td>
 
353
          <td></td><td></td><td><code> [inline]</code></td>
 
354
        </tr>
 
355
      </table>
 
356
</div>
 
357
<div class="memdoc">
 
358
 
 
359
<p>Calculates number of bits ON in GAP buffer. </p>
 
360
<dl><dt><b>Parameters:</b></dt><dd>
 
361
  <table border="0" cellspacing="2" cellpadding="0">
 
362
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
363
    <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>- buffer size </td></tr>
 
364
  </table>
 
365
  </dd>
 
366
</dl>
 
367
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of non-zero bits. </dd></dl>
 
368
 
 
369
<p>Definition at line <a class="el" href="a00093_source.html#l00653">653</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
370
 
 
371
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>, and <a class="el" href="a00096_source.html#l00653">bm::serializer&lt; BV &gt;::encode_gap_block()</a>.</p>
 
372
 
 
373
</div>
 
374
</div>
 
375
<a class="anchor" id="ga5e3123c3c9d3587f470abdbe6c8c3ad3"></a><!-- doxytag: member="bm::gap_buff_any_op" ref="ga5e3123c3c9d3587f470abdbe6c8c3ad3" args="(const T *BMRESTRICT vect1, unsigned vect1_mask, const T *BMRESTRICT vect2, unsigned vect2_mask, F f)" -->
 
376
<div class="memitem">
 
377
<div class="memproto">
 
378
<div class="memtemplate">
 
379
template&lt;typename T , class F &gt; </div>
 
380
      <table class="memname">
 
381
        <tr>
 
382
          <td class="memname">unsigned bm::gap_buff_any_op </td>
 
383
          <td>(</td>
 
384
          <td class="paramtype">const T *BMRESTRICT&nbsp;</td>
 
385
          <td class="paramname"> <em>vect1</em>, </td>
 
386
        </tr>
 
387
        <tr>
 
388
          <td class="paramkey"></td>
 
389
          <td></td>
 
390
          <td class="paramtype">unsigned&nbsp;</td>
 
391
          <td class="paramname"> <em>vect1_mask</em>, </td>
 
392
        </tr>
 
393
        <tr>
 
394
          <td class="paramkey"></td>
 
395
          <td></td>
 
396
          <td class="paramtype">const T *BMRESTRICT&nbsp;</td>
 
397
          <td class="paramname"> <em>vect2</em>, </td>
 
398
        </tr>
 
399
        <tr>
 
400
          <td class="paramkey"></td>
 
401
          <td></td>
 
402
          <td class="paramtype">unsigned&nbsp;</td>
 
403
          <td class="paramname"> <em>vect2_mask</em>, </td>
 
404
        </tr>
 
405
        <tr>
 
406
          <td class="paramkey"></td>
 
407
          <td></td>
 
408
          <td class="paramtype">F&nbsp;</td>
 
409
          <td class="paramname"> <em>f</em></td><td>&nbsp;</td>
 
410
        </tr>
 
411
        <tr>
 
412
          <td></td>
 
413
          <td>)</td>
 
414
          <td></td><td></td><td><code> [inline]</code></td>
 
415
        </tr>
 
416
      </table>
 
417
</div>
 
418
<div class="memdoc">
 
419
 
 
420
<p>Abstract distance test operation for GAP buffers. Receives functor F as a template argument. </p>
 
421
<dl><dt><b>Parameters:</b></dt><dd>
 
422
  <table border="0" cellspacing="2" cellpadding="0">
 
423
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 GAP encoded buffer. </td></tr>
 
424
    <tr><td valign="top"></td><td valign="top"><em>vect1_mask</em>&nbsp;</td><td>- XOR mask for starting bitflag for vector1 can be 0 or 1 (1 inverts the vector) </td></tr>
 
425
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 GAP encoded buffer. </td></tr>
 
426
    <tr><td valign="top"></td><td valign="top"><em>vect2_mask</em>&nbsp;</td><td>- same as vect1_mask </td></tr>
 
427
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>- operation functor. </td></tr>
 
428
  </table>
 
429
  </dd>
 
430
</dl>
 
431
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function. </dd></dl>
 
432
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation result returns any 1 bit </dd></dl>
 
433
 
 
434
<p>Definition at line <a class="el" href="a00093_source.html#l00990">990</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
435
 
 
436
<p>References <a class="el" href="a00091_source.html#l00071">bm::gap_max_bits</a>.</p>
 
437
 
 
438
<p>Referenced by <a class="el" href="a00093_source.html#l02977">bm::gap_operation_any_and()</a>, <a class="el" href="a00093_source.html#l03104">bm::gap_operation_any_sub()</a>, and <a class="el" href="a00093_source.html#l03025">bm::gap_operation_any_xor()</a>.</p>
 
439
 
 
440
</div>
 
441
</div>
 
442
<a class="anchor" id="ga3bfaebeeb4b2d479c5a9ac9d57607165"></a><!-- doxytag: member="bm::gap_calc_level" ref="ga3bfaebeeb4b2d479c5a9ac9d57607165" args="(int len, const T *glevel_len)" -->
 
443
<div class="memitem">
 
444
<div class="memproto">
 
445
<div class="memtemplate">
 
446
template&lt;typename T &gt; </div>
 
447
      <table class="memname">
 
448
        <tr>
 
449
          <td class="memname">int bm::gap_calc_level </td>
 
450
          <td>(</td>
 
451
          <td class="paramtype">int&nbsp;</td>
 
452
          <td class="paramname"> <em>len</em>, </td>
 
453
        </tr>
 
454
        <tr>
 
455
          <td class="paramkey"></td>
 
456
          <td></td>
 
457
          <td class="paramtype">const T *&nbsp;</td>
 
458
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
459
        </tr>
 
460
        <tr>
 
461
          <td></td>
 
462
          <td>)</td>
 
463
          <td></td><td></td><td><code> [inline]</code></td>
 
464
        </tr>
 
465
      </table>
 
466
</div>
 
467
<div class="memdoc">
 
468
 
 
469
<p>Calculates GAP block capacity level. </p>
 
470
<dl><dt><b>Parameters:</b></dt><dd>
 
471
  <table border="0" cellspacing="2" cellpadding="0">
 
472
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>- GAP buffer length. </td></tr>
 
473
    <tr><td valign="top"></td><td valign="top"><em>glevel_len</em>&nbsp;</td><td>- GAP lengths table </td></tr>
 
474
  </table>
 
475
  </dd>
 
476
</dl>
 
477
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. -1 if block does not fit any level. </dd></dl>
 
478
 
 
479
<p>Definition at line <a class="el" href="a00093_source.html#l02229">2229</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
480
 
 
481
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00074">bm::gap_levels</a>.</p>
 
482
 
 
483
<p>Referenced by <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>, <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l04563">bm::gap_overhead()</a>.</p>
 
484
 
 
485
</div>
 
486
</div>
 
487
<a class="anchor" id="ga0419ed06e2f0b7891e7d721546f5fb45"></a><!-- doxytag: member="bm::gap_capacity" ref="ga0419ed06e2f0b7891e7d721546f5fb45" args="(const T *buf, const T *glevel_len)" -->
 
488
<div class="memitem">
 
489
<div class="memproto">
 
490
<div class="memtemplate">
 
491
template&lt;typename T &gt; </div>
 
492
      <table class="memname">
 
493
        <tr>
 
494
          <td class="memname">unsigned bm::gap_capacity </td>
 
495
          <td>(</td>
 
496
          <td class="paramtype">const T *&nbsp;</td>
 
497
          <td class="paramname"> <em>buf</em>, </td>
 
498
        </tr>
 
499
        <tr>
 
500
          <td class="paramkey"></td>
 
501
          <td></td>
 
502
          <td class="paramtype">const T *&nbsp;</td>
 
503
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
504
        </tr>
 
505
        <tr>
 
506
          <td></td>
 
507
          <td>)</td>
 
508
          <td></td><td></td><td><code> [inline]</code></td>
 
509
        </tr>
 
510
      </table>
 
511
</div>
 
512
<div class="memdoc">
 
513
 
 
514
<p>Returs GAP block capacity. </p>
 
515
<dl><dt><b>Parameters:</b></dt><dd>
 
516
  <table border="0" cellspacing="2" cellpadding="0">
 
517
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
518
  </table>
 
519
  </dd>
 
520
</dl>
 
521
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity. </dd></dl>
 
522
 
 
523
<p>Definition at line <a class="el" href="a00093_source.html#l02171">2171</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
524
 
 
525
<p>Referenced by <a class="el" href="a00087_source.html#l02051">bm::bvector&lt; Alloc, MS &gt;::calc_stat()</a>, <a class="el" href="a00090_source.html#l00205">bm::mem_alloc&lt; BA, PA &gt;::free_gap_block()</a>, and <a class="el" href="a00093_source.html#l02250">bm::gap_free_elements()</a>.</p>
 
526
 
 
527
</div>
 
528
</div>
 
529
<a class="anchor" id="ga14d29338ffd1387758810b3f9e3a72c6"></a><!-- doxytag: member="bm::gap_control_sum" ref="ga14d29338ffd1387758810b3f9e3a72c6" args="(const T *buf)" -->
 
530
<div class="memitem">
 
531
<div class="memproto">
 
532
<div class="memtemplate">
 
533
template&lt;typename T &gt; </div>
 
534
      <table class="memname">
 
535
        <tr>
 
536
          <td class="memname">unsigned bm::gap_control_sum </td>
 
537
          <td>(</td>
 
538
          <td class="paramtype">const T *&nbsp;</td>
 
539
          <td class="paramname"> <em>buf</em></td>
 
540
          <td>&nbsp;)&nbsp;</td>
 
541
          <td><code> [inline]</code></td>
 
542
        </tr>
 
543
      </table>
 
544
</div>
 
545
<div class="memdoc">
 
546
 
 
547
<p>Calculates sum of all words in GAP block. (For debugging purposes). </p>
 
548
<dl class="note"><dt><b>Note:</b></dt><dd>For debugging and testing ONLY. </dd></dl>
 
549
<dl><dt><b>Parameters:</b></dt><dd>
 
550
  <table border="0" cellspacing="2" cellpadding="0">
 
551
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
552
  </table>
 
553
  </dd>
 
554
</dl>
 
555
<dl class="return"><dt><b>Returns:</b></dt><dd>Sum of all words. </dd></dl>
 
556
 
 
557
<p>Definition at line <a class="el" href="a00093_source.html#l01997">1997</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
558
 
 
559
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
560
 
 
561
</div>
 
562
</div>
 
563
<a class="anchor" id="ga5cd7e0cfee401da1b8f702151c083b27"></a><!-- doxytag: member="bm::gap_convert_to_arr" ref="ga5cd7e0cfee401da1b8f702151c083b27" args="(D *BMRESTRICT dest, const T *BMRESTRICT buf, unsigned dest_len, bool invert=false)" -->
 
564
<div class="memitem">
 
565
<div class="memproto">
 
566
<div class="memtemplate">
 
567
template&lt;typename D , typename T &gt; </div>
 
568
      <table class="memname">
 
569
        <tr>
 
570
          <td class="memname">D bm::gap_convert_to_arr </td>
 
571
          <td>(</td>
 
572
          <td class="paramtype">D *BMRESTRICT&nbsp;</td>
 
573
          <td class="paramname"> <em>dest</em>, </td>
 
574
        </tr>
 
575
        <tr>
 
576
          <td class="paramkey"></td>
 
577
          <td></td>
 
578
          <td class="paramtype">const T *BMRESTRICT&nbsp;</td>
 
579
          <td class="paramname"> <em>buf</em>, </td>
 
580
        </tr>
 
581
        <tr>
 
582
          <td class="paramkey"></td>
 
583
          <td></td>
 
584
          <td class="paramtype">unsigned&nbsp;</td>
 
585
          <td class="paramname"> <em>dest_len</em>, </td>
 
586
        </tr>
 
587
        <tr>
 
588
          <td class="paramkey"></td>
 
589
          <td></td>
 
590
          <td class="paramtype">bool&nbsp;</td>
 
591
          <td class="paramname"> <em>invert</em> = <code>false</code></td><td>&nbsp;</td>
 
592
        </tr>
 
593
        <tr>
 
594
          <td></td>
 
595
          <td>)</td>
 
596
          <td></td><td></td><td><code> [inline]</code></td>
 
597
        </tr>
 
598
      </table>
 
599
</div>
 
600
<div class="memdoc">
 
601
 
 
602
<p>Convert gap block into array of ints corresponding to 1 bits. </p>
 
603
 
 
604
<p>Definition at line <a class="el" href="a00093_source.html#l02446">2446</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
605
 
 
606
<p>Referenced by <a class="el" href="a00096_source.html#l00653">bm::serializer&lt; BV &gt;::encode_gap_block()</a>.</p>
 
607
 
 
608
</div>
 
609
</div>
 
610
<a class="anchor" id="ga9bb80c42ee0ecf8f2af8250d7f5d327b"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga9bb80c42ee0ecf8f2af8250d7f5d327b" args="(unsigned *dest, const T *buf, unsigned dest_len)" -->
 
611
<div class="memitem">
 
612
<div class="memproto">
 
613
<div class="memtemplate">
 
614
template&lt;typename T &gt; </div>
 
615
      <table class="memname">
 
616
        <tr>
 
617
          <td class="memname">void bm::gap_convert_to_bitset </td>
 
618
          <td>(</td>
 
619
          <td class="paramtype">unsigned *&nbsp;</td>
 
620
          <td class="paramname"> <em>dest</em>, </td>
 
621
        </tr>
 
622
        <tr>
 
623
          <td class="paramkey"></td>
 
624
          <td></td>
 
625
          <td class="paramtype">const T *&nbsp;</td>
 
626
          <td class="paramname"> <em>buf</em>, </td>
 
627
        </tr>
 
628
        <tr>
 
629
          <td class="paramkey"></td>
 
630
          <td></td>
 
631
          <td class="paramtype">unsigned&nbsp;</td>
 
632
          <td class="paramname"> <em>dest_len</em></td><td>&nbsp;</td>
 
633
        </tr>
 
634
        <tr>
 
635
          <td></td>
 
636
          <td>)</td>
 
637
          <td></td><td></td><td><code> [inline]</code></td>
 
638
        </tr>
 
639
      </table>
 
640
</div>
 
641
<div class="memdoc">
 
642
 
 
643
<p>GAP block to bitblock conversion. </p>
 
644
<dl><dt><b>Parameters:</b></dt><dd>
 
645
  <table border="0" cellspacing="2" cellpadding="0">
 
646
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
647
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
648
    <tr><td valign="top"></td><td valign="top"><em>dest_size</em>&nbsp;</td><td>- length of the destination buffer. </td></tr>
 
649
  </table>
 
650
  </dd>
 
651
</dl>
 
652
 
 
653
<p>Definition at line <a class="el" href="a00093_source.html#l01954">1954</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
654
 
 
655
<p>References <a class="el" href="a00093_source.html#l01530">bm::gap_add_to_bitset()</a>.</p>
 
656
 
 
657
</div>
 
658
</div>
 
659
<a class="anchor" id="ga4862f4dcdcb7c0575e2e2db9e5f2a849"></a><!-- doxytag: member="bm::gap_convert_to_bitset" ref="ga4862f4dcdcb7c0575e2e2db9e5f2a849" args="(unsigned *dest, const T *buf)" -->
 
660
<div class="memitem">
 
661
<div class="memproto">
 
662
<div class="memtemplate">
 
663
template&lt;typename T &gt; </div>
 
664
      <table class="memname">
 
665
        <tr>
 
666
          <td class="memname">void bm::gap_convert_to_bitset </td>
 
667
          <td>(</td>
 
668
          <td class="paramtype">unsigned *&nbsp;</td>
 
669
          <td class="paramname"> <em>dest</em>, </td>
 
670
        </tr>
 
671
        <tr>
 
672
          <td class="paramkey"></td>
 
673
          <td></td>
 
674
          <td class="paramtype">const T *&nbsp;</td>
 
675
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
676
        </tr>
 
677
        <tr>
 
678
          <td></td>
 
679
          <td>)</td>
 
680
          <td></td><td></td><td><code> [inline]</code></td>
 
681
        </tr>
 
682
      </table>
 
683
</div>
 
684
<div class="memdoc">
 
685
 
 
686
<p>GAP block to bitblock conversion. </p>
 
687
<dl><dt><b>Parameters:</b></dt><dd>
 
688
  <table border="0" cellspacing="2" cellpadding="0">
 
689
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
690
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
691
  </table>
 
692
  </dd>
 
693
</dl>
 
694
 
 
695
<p>Definition at line <a class="el" href="a00093_source.html#l01938">1938</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
696
 
 
697
<p>References <a class="el" href="a00093_source.html#l01920">bm::bit_block_set()</a>, and <a class="el" href="a00093_source.html#l01530">bm::gap_add_to_bitset()</a>.</p>
 
698
 
 
699
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00087_source.html#l01921">bm::bvector&lt; Alloc, MS &gt;::compare()</a>, <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>, <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l01975">bm::gap_convert_to_bitset_smart()</a>.</p>
 
700
 
 
701
</div>
 
702
</div>
 
703
<a class="anchor" id="ga3f01bb7c1ae7983aa8c4ba82e1e3f54c"></a><!-- doxytag: member="bm::gap_convert_to_bitset_smart" ref="ga3f01bb7c1ae7983aa8c4ba82e1e3f54c" args="(unsigned *dest, const T *buf, id_t set_max)" -->
 
704
<div class="memitem">
 
705
<div class="memproto">
 
706
<div class="memtemplate">
 
707
template&lt;typename T &gt; </div>
 
708
      <table class="memname">
 
709
        <tr>
 
710
          <td class="memname">unsigned* bm::gap_convert_to_bitset_smart </td>
 
711
          <td>(</td>
 
712
          <td class="paramtype">unsigned *&nbsp;</td>
 
713
          <td class="paramname"> <em>dest</em>, </td>
 
714
        </tr>
 
715
        <tr>
 
716
          <td class="paramkey"></td>
 
717
          <td></td>
 
718
          <td class="paramtype">const T *&nbsp;</td>
 
719
          <td class="paramname"> <em>buf</em>, </td>
 
720
        </tr>
 
721
        <tr>
 
722
          <td class="paramkey"></td>
 
723
          <td></td>
 
724
          <td class="paramtype">id_t&nbsp;</td>
 
725
          <td class="paramname"> <em>set_max</em></td><td>&nbsp;</td>
 
726
        </tr>
 
727
        <tr>
 
728
          <td></td>
 
729
          <td>)</td>
 
730
          <td></td><td></td><td><code> [inline]</code></td>
 
731
        </tr>
 
732
      </table>
 
733
</div>
 
734
<div class="memdoc">
 
735
 
 
736
<p>Smart GAP block to bitblock conversion. </p>
 
737
<p>Checks if GAP block is ALL-ZERO or ALL-ON. In those cases returns pointer on special static bitblocks.</p>
 
738
<dl><dt><b>Parameters:</b></dt><dd>
 
739
  <table border="0" cellspacing="2" cellpadding="0">
 
740
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
741
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
742
    <tr><td valign="top"></td><td valign="top"><em>set_max</em>&nbsp;</td><td>- max possible bitset length </td></tr>
 
743
  </table>
 
744
  </dd>
 
745
</dl>
 
746
 
 
747
<p>Definition at line <a class="el" href="a00093_source.html#l01975">1975</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
748
 
 
749
<p>References <a class="el" href="a00092_source.html#l00060">FULL_BLOCK_ADDR</a>, and <a class="el" href="a00093_source.html#l01938">bm::gap_convert_to_bitset()</a>.</p>
 
750
 
 
751
</div>
 
752
</div>
 
753
<a class="anchor" id="gaa7df7193094353ea24b8519debf745be"></a><!-- doxytag: member="bm::gap_find_in_block" ref="gaa7df7193094353ea24b8519debf745be" args="(const T *buf, unsigned nbit, bm::id_t *prev)" -->
 
754
<div class="memitem">
 
755
<div class="memproto">
 
756
<div class="memtemplate">
 
757
template&lt;typename T &gt; </div>
 
758
      <table class="memname">
 
759
        <tr>
 
760
          <td class="memname">int bm::gap_find_in_block </td>
 
761
          <td>(</td>
 
762
          <td class="paramtype">const T *&nbsp;</td>
 
763
          <td class="paramname"> <em>buf</em>, </td>
 
764
        </tr>
 
765
        <tr>
 
766
          <td class="paramkey"></td>
 
767
          <td></td>
 
768
          <td class="paramtype">unsigned&nbsp;</td>
 
769
          <td class="paramname"> <em>nbit</em>, </td>
 
770
        </tr>
 
771
        <tr>
 
772
          <td class="paramkey"></td>
 
773
          <td></td>
 
774
          <td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *&nbsp;</td>
 
775
          <td class="paramname"> <em>prev</em></td><td>&nbsp;</td>
 
776
        </tr>
 
777
        <tr>
 
778
          <td></td>
 
779
          <td>)</td>
 
780
          <td></td><td></td><td><code> [inline]</code></td>
 
781
        </tr>
 
782
      </table>
 
783
</div>
 
784
<div class="memdoc">
 
785
 
 
786
<p>Searches for the next 1 bit in the GAP block. </p>
 
787
<dl><dt><b>Parameters:</b></dt><dd>
 
788
  <table border="0" cellspacing="2" cellpadding="0">
 
789
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer </td></tr>
 
790
    <tr><td valign="top"></td><td valign="top"><em>nbit</em>&nbsp;</td><td>- bit index to start checking from. </td></tr>
 
791
    <tr><td valign="top"></td><td valign="top"><em>prev</em>&nbsp;</td><td>- returns previously checked value </td></tr>
 
792
  </table>
 
793
  </dd>
 
794
</dl>
 
795
 
 
796
<p>Definition at line <a class="el" href="a00093_source.html#l01225">1225</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
797
 
 
798
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00461">bm::gap_bfind()</a>, and <a class="el" href="a00091_source.html#l00071">bm::gap_max_bits</a>.</p>
 
799
 
 
800
</div>
 
801
</div>
 
802
<a class="anchor" id="gafd76869eb44fac688da5e26e0e74f41f"></a><!-- doxytag: member="bm::gap_free_elements" ref="gafd76869eb44fac688da5e26e0e74f41f" args="(const T *buf, const T *glevel_len)" -->
 
803
<div class="memitem">
 
804
<div class="memproto">
 
805
<div class="memtemplate">
 
806
template&lt;typename T &gt; </div>
 
807
      <table class="memname">
 
808
        <tr>
 
809
          <td class="memname">unsigned bm::gap_free_elements </td>
 
810
          <td>(</td>
 
811
          <td class="paramtype">const T *&nbsp;</td>
 
812
          <td class="paramname"> <em>buf</em>, </td>
 
813
        </tr>
 
814
        <tr>
 
815
          <td class="paramkey"></td>
 
816
          <td></td>
 
817
          <td class="paramtype">const T *&nbsp;</td>
 
818
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
819
        </tr>
 
820
        <tr>
 
821
          <td></td>
 
822
          <td>)</td>
 
823
          <td></td><td></td><td><code> [inline]</code></td>
 
824
        </tr>
 
825
      </table>
 
826
</div>
 
827
<div class="memdoc">
 
828
 
 
829
<p>Returns number of free elements in GAP block array. Difference between GAP block capacity on this level and actual GAP length. </p>
 
830
<dl><dt><b>Parameters:</b></dt><dd>
 
831
  <table border="0" cellspacing="2" cellpadding="0">
 
832
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer  glevel_len - GAP lengths table</td></tr>
 
833
  </table>
 
834
  </dd>
 
835
</dl>
 
836
<dl class="return"><dt><b>Returns:</b></dt><dd>Number of free GAP elements </dd></dl>
 
837
 
 
838
<p>Definition at line <a class="el" href="a00093_source.html#l02250">2250</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
839
 
 
840
<p>References <a class="el" href="a00093_source.html#l02171">bm::gap_capacity()</a>, and <a class="el" href="a00093_source.html#l02157">bm::gap_length()</a>.</p>
 
841
 
 
842
</div>
 
843
</div>
 
844
<a class="anchor" id="ga5d49355eb9dd7947699e20f3a2a75ef5"></a><!-- doxytag: member="bm::gap_init_range_block" ref="ga5d49355eb9dd7947699e20f3a2a75ef5" args="(T *buf, unsigned from, unsigned to, unsigned value, unsigned set_max)" -->
 
845
<div class="memitem">
 
846
<div class="memproto">
 
847
<div class="memtemplate">
 
848
template&lt;class T &gt; </div>
 
849
      <table class="memname">
 
850
        <tr>
 
851
          <td class="memname">void bm::gap_init_range_block </td>
 
852
          <td>(</td>
 
853
          <td class="paramtype">T *&nbsp;</td>
 
854
          <td class="paramname"> <em>buf</em>, </td>
 
855
        </tr>
 
856
        <tr>
 
857
          <td class="paramkey"></td>
 
858
          <td></td>
 
859
          <td class="paramtype">unsigned&nbsp;</td>
 
860
          <td class="paramname"> <em>from</em>, </td>
 
861
        </tr>
 
862
        <tr>
 
863
          <td class="paramkey"></td>
 
864
          <td></td>
 
865
          <td class="paramtype">unsigned&nbsp;</td>
 
866
          <td class="paramname"> <em>to</em>, </td>
 
867
        </tr>
 
868
        <tr>
 
869
          <td class="paramkey"></td>
 
870
          <td></td>
 
871
          <td class="paramtype">unsigned&nbsp;</td>
 
872
          <td class="paramname"> <em>value</em>, </td>
 
873
        </tr>
 
874
        <tr>
 
875
          <td class="paramkey"></td>
 
876
          <td></td>
 
877
          <td class="paramtype">unsigned&nbsp;</td>
 
878
          <td class="paramname"> <em>set_max</em></td><td>&nbsp;</td>
 
879
        </tr>
 
880
        <tr>
 
881
          <td></td>
 
882
          <td>)</td>
 
883
          <td></td><td></td><td><code> [inline]</code></td>
 
884
        </tr>
 
885
      </table>
 
886
</div>
 
887
<div class="memdoc">
 
888
 
 
889
<p>Init gap block so it has block in it (can be whole block). </p>
 
890
<dl><dt><b>Parameters:</b></dt><dd>
 
891
  <table border="0" cellspacing="2" cellpadding="0">
 
892
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
893
    <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>- one block start </td></tr>
 
894
    <tr><td valign="top"></td><td valign="top"><em>to</em>&nbsp;</td><td>- one block end </td></tr>
 
895
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>- (block value)1 or 0 </td></tr>
 
896
    <tr><td valign="top"></td><td valign="top"><em>set_max</em>&nbsp;</td><td>- max possible bitset length </td></tr>
 
897
  </table>
 
898
  </dd>
 
899
</dl>
 
900
 
 
901
<p>Definition at line <a class="el" href="a00093_source.html#l02049">2049</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
902
 
 
903
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l02028">bm::gap_set_all()</a>.</p>
 
904
 
 
905
</div>
 
906
</div>
 
907
<a class="anchor" id="ga3f22bfde5dfe06d6d77dc2598b8c0845"></a><!-- doxytag: member="bm::gap_invert" ref="ga3f22bfde5dfe06d6d77dc2598b8c0845" args="(T *buf)" -->
 
908
<div class="memitem">
 
909
<div class="memproto">
 
910
<div class="memtemplate">
 
911
template&lt;typename T &gt; </div>
 
912
      <table class="memname">
 
913
        <tr>
 
914
          <td class="memname">void bm::gap_invert </td>
 
915
          <td>(</td>
 
916
          <td class="paramtype">T *&nbsp;</td>
 
917
          <td class="paramname"> <em>buf</em></td>
 
918
          <td>&nbsp;)&nbsp;</td>
 
919
          <td><code> [inline]</code></td>
 
920
        </tr>
 
921
      </table>
 
922
</div>
 
923
<div class="memdoc">
 
924
 
 
925
<p>Inverts all bits in the GAP buffer. </p>
 
926
<dl><dt><b>Parameters:</b></dt><dd>
 
927
  <table border="0" cellspacing="2" cellpadding="0">
 
928
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
929
  </table>
 
930
  </dd>
 
931
</dl>
 
932
 
 
933
<p>Definition at line <a class="el" href="a00093_source.html#l02099">2099</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
934
 
 
935
<p>Referenced by <a class="el" href="a00093_source.html#l03050">bm::gap_operation_or()</a>, and <a class="el" href="a00096_source.html#l01129">bm::deseriaizer_base&lt; DEC &gt;::read_gap_block()</a>.</p>
 
936
 
 
937
</div>
 
938
</div>
 
939
<a class="anchor" id="ga1427d43e91872f981c6311fa76ab5633"></a><!-- doxytag: member="bm::gap_is_all_one" ref="ga1427d43e91872f981c6311fa76ab5633" args="(const T *buf, unsigned set_max)" -->
 
940
<div class="memitem">
 
941
<div class="memproto">
 
942
<div class="memtemplate">
 
943
template&lt;typename T &gt; </div>
 
944
      <table class="memname">
 
945
        <tr>
 
946
          <td class="memname">bool bm::gap_is_all_one </td>
 
947
          <td>(</td>
 
948
          <td class="paramtype">const T *&nbsp;</td>
 
949
          <td class="paramname"> <em>buf</em>, </td>
 
950
        </tr>
 
951
        <tr>
 
952
          <td class="paramkey"></td>
 
953
          <td></td>
 
954
          <td class="paramtype">unsigned&nbsp;</td>
 
955
          <td class="paramname"> <em>set_max</em></td><td>&nbsp;</td>
 
956
        </tr>
 
957
        <tr>
 
958
          <td></td>
 
959
          <td>)</td>
 
960
          <td></td><td></td><td><code> [inline]</code></td>
 
961
        </tr>
 
962
      </table>
 
963
</div>
 
964
<div class="memdoc">
 
965
 
 
966
<p>Checks if GAP block is all-one. </p>
 
967
<dl><dt><b>Parameters:</b></dt><dd>
 
968
  <table border="0" cellspacing="2" cellpadding="0">
 
969
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
970
    <tr><td valign="top"></td><td valign="top"><em>set_max</em>&nbsp;</td><td>- max possible bitset length </td></tr>
 
971
  </table>
 
972
  </dd>
 
973
</dl>
 
974
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-one. </dd></dl>
 
975
 
 
976
<p>Definition at line <a class="el" href="a00093_source.html#l02145">2145</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
977
 
 
978
</div>
 
979
</div>
 
980
<a class="anchor" id="ga690ff7c8b16e1821a77663b7194267e7"></a><!-- doxytag: member="bm::gap_is_all_zero" ref="ga690ff7c8b16e1821a77663b7194267e7" args="(const T *buf, unsigned set_max)" -->
 
981
<div class="memitem">
 
982
<div class="memproto">
 
983
<div class="memtemplate">
 
984
template&lt;typename T &gt; </div>
 
985
      <table class="memname">
 
986
        <tr>
 
987
          <td class="memname">bool bm::gap_is_all_zero </td>
 
988
          <td>(</td>
 
989
          <td class="paramtype">const T *&nbsp;</td>
 
990
          <td class="paramname"> <em>buf</em>, </td>
 
991
        </tr>
 
992
        <tr>
 
993
          <td class="paramkey"></td>
 
994
          <td></td>
 
995
          <td class="paramtype">unsigned&nbsp;</td>
 
996
          <td class="paramname"> <em>set_max</em></td><td>&nbsp;</td>
 
997
        </tr>
 
998
        <tr>
 
999
          <td></td>
 
1000
          <td>)</td>
 
1001
          <td></td><td></td><td><code> [inline]</code></td>
 
1002
        </tr>
 
1003
      </table>
 
1004
</div>
 
1005
<div class="memdoc">
 
1006
 
 
1007
<p>Temporary inverts all bits in the GAP buffer. </p>
 
1008
<p>In this function const-ness of the buffer means nothing. Calling this function again restores the status of the buffer.</p>
 
1009
<dl><dt><b>Parameters:</b></dt><dd>
 
1010
  <table border="0" cellspacing="2" cellpadding="0">
 
1011
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. (Buffer IS changed)</td></tr>
 
1012
  </table>
 
1013
  </dd>
 
1014
</dl>
 
1015
<p>Checks if GAP block is all-zero. </p>
 
1016
<dl><dt><b>Parameters:</b></dt><dd>
 
1017
  <table border="0" cellspacing="2" cellpadding="0">
 
1018
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1019
    <tr><td valign="top"></td><td valign="top"><em>set_max</em>&nbsp;</td><td>- max possible bitset length </td></tr>
 
1020
  </table>
 
1021
  </dd>
 
1022
</dl>
 
1023
<dl class="return"><dt><b>Returns:</b></dt><dd>true if all-zero. </dd></dl>
 
1024
 
 
1025
<p>Definition at line <a class="el" href="a00093_source.html#l02131">2131</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1026
 
 
1027
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>, and <a class="el" href="a00087_source.html#l01921">bm::bvector&lt; Alloc, MS &gt;::compare()</a>.</p>
 
1028
 
 
1029
</div>
 
1030
</div>
 
1031
<a class="anchor" id="gad6bfb9da9950b0df8983a9faf9db5042"></a><!-- doxytag: member="bm::gap_length" ref="gad6bfb9da9950b0df8983a9faf9db5042" args="(const T *buf)" -->
 
1032
<div class="memitem">
 
1033
<div class="memproto">
 
1034
<div class="memtemplate">
 
1035
template&lt;typename T &gt; </div>
 
1036
      <table class="memname">
 
1037
        <tr>
 
1038
          <td class="memname">unsigned bm::gap_length </td>
 
1039
          <td>(</td>
 
1040
          <td class="paramtype">const T *&nbsp;</td>
 
1041
          <td class="paramname"> <em>buf</em></td>
 
1042
          <td>&nbsp;)&nbsp;</td>
 
1043
          <td><code> [inline]</code></td>
 
1044
        </tr>
 
1045
      </table>
 
1046
</div>
 
1047
<div class="memdoc">
 
1048
 
 
1049
<p>Returs GAP block length. </p>
 
1050
<dl><dt><b>Parameters:</b></dt><dd>
 
1051
  <table border="0" cellspacing="2" cellpadding="0">
 
1052
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1053
  </table>
 
1054
  </dd>
 
1055
</dl>
 
1056
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block length. </dd></dl>
 
1057
 
 
1058
<p>Definition at line <a class="el" href="a00093_source.html#l02157">2157</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1059
 
 
1060
<p>Referenced by <a class="el" href="a00087_source.html#l02051">bm::bvector&lt; Alloc, MS &gt;::calc_stat()</a>, <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>, <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>, <a class="el" href="a00096_source.html#l00653">bm::serializer&lt; BV &gt;::encode_gap_block()</a>, <a class="el" href="a00096_source.html#l00569">bm::serializer&lt; BV &gt;::gamma_gap_block()</a>, <a class="el" href="a00093_source.html#l02250">bm::gap_free_elements()</a>, and <a class="el" href="a00096_source.html#l01129">bm::deseriaizer_base&lt; DEC &gt;::read_gap_block()</a>.</p>
 
1061
 
 
1062
</div>
 
1063
</div>
 
1064
<a class="anchor" id="ga1defe73aa4227a0e7204363ac6bb1ac1"></a><!-- doxytag: member="bm::gap_level" ref="ga1defe73aa4227a0e7204363ac6bb1ac1" args="(const T *buf)" -->
 
1065
<div class="memitem">
 
1066
<div class="memproto">
 
1067
<div class="memtemplate">
 
1068
template&lt;typename T &gt; </div>
 
1069
      <table class="memname">
 
1070
        <tr>
 
1071
          <td class="memname">unsigned bm::gap_level </td>
 
1072
          <td>(</td>
 
1073
          <td class="paramtype">const T *&nbsp;</td>
 
1074
          <td class="paramname"> <em>buf</em></td>
 
1075
          <td>&nbsp;)&nbsp;</td>
 
1076
          <td><code> [inline]</code></td>
 
1077
        </tr>
 
1078
      </table>
 
1079
</div>
 
1080
<div class="memdoc">
 
1081
 
 
1082
<p>Returs GAP blocks capacity level. </p>
 
1083
<dl><dt><b>Parameters:</b></dt><dd>
 
1084
  <table border="0" cellspacing="2" cellpadding="0">
 
1085
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1086
  </table>
 
1087
  </dd>
 
1088
</dl>
 
1089
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block capacity level. </dd></dl>
 
1090
 
 
1091
<p>Definition at line <a class="el" href="a00093_source.html#l02199">2199</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1092
 
 
1093
</div>
 
1094
</div>
 
1095
<a class="anchor" id="ga94a5371b5dc6a1560d95d7c2dde88815"></a><!-- doxytag: member="bm::gap_limit" ref="ga94a5371b5dc6a1560d95d7c2dde88815" args="(const T *buf, const T *glevel_len)" -->
 
1096
<div class="memitem">
 
1097
<div class="memproto">
 
1098
<div class="memtemplate">
 
1099
template&lt;typename T &gt; </div>
 
1100
      <table class="memname">
 
1101
        <tr>
 
1102
          <td class="memname">unsigned bm::gap_limit </td>
 
1103
          <td>(</td>
 
1104
          <td class="paramtype">const T *&nbsp;</td>
 
1105
          <td class="paramname"> <em>buf</em>, </td>
 
1106
        </tr>
 
1107
        <tr>
 
1108
          <td class="paramkey"></td>
 
1109
          <td></td>
 
1110
          <td class="paramtype">const T *&nbsp;</td>
 
1111
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
1112
        </tr>
 
1113
        <tr>
 
1114
          <td></td>
 
1115
          <td>)</td>
 
1116
          <td></td><td></td><td><code> [inline]</code></td>
 
1117
        </tr>
 
1118
      </table>
 
1119
</div>
 
1120
<div class="memdoc">
 
1121
 
 
1122
<p>Returs GAP block capacity limit. </p>
 
1123
<dl><dt><b>Parameters:</b></dt><dd>
 
1124
  <table border="0" cellspacing="2" cellpadding="0">
 
1125
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1126
    <tr><td valign="top"></td><td valign="top"><em>glevel_len</em>&nbsp;</td><td>- GAP lengths table (<a class="el" href="a00067.html" title="Default GAP lengths table.">gap_len_table</a>) </td></tr>
 
1127
  </table>
 
1128
  </dd>
 
1129
</dl>
 
1130
<dl class="return"><dt><b>Returns:</b></dt><dd>GAP block limit. </dd></dl>
 
1131
 
 
1132
<p>Definition at line <a class="el" href="a00093_source.html#l02186">2186</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1133
 
 
1134
<p>Referenced by <a class="el" href="a00089_source.html#l01105">bm::combine_or()</a>, <a class="el" href="a00089_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00089_source.html#l01184">bm::combine_xor()</a>, and <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>.</p>
 
1135
 
 
1136
</div>
 
1137
</div>
 
1138
<a class="anchor" id="ga1666464d22f7fd473db9aafcf2f77a63"></a><!-- doxytag: member="bm::gap_operation_and" ref="ga1666464d22f7fd473db9aafcf2f77a63" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)" -->
 
1139
<div class="memitem">
 
1140
<div class="memproto">
 
1141
      <table class="memname">
 
1142
        <tr>
 
1143
          <td class="memname">gap_word_t* bm::gap_operation_and </td>
 
1144
          <td>(</td>
 
1145
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1146
          <td class="paramname"> <em>vect1</em>, </td>
 
1147
        </tr>
 
1148
        <tr>
 
1149
          <td class="paramkey"></td>
 
1150
          <td></td>
 
1151
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1152
          <td class="paramname"> <em>vect2</em>, </td>
 
1153
        </tr>
 
1154
        <tr>
 
1155
          <td class="paramkey"></td>
 
1156
          <td></td>
 
1157
          <td class="paramtype">gap_word_t *BMRESTRICT&nbsp;</td>
 
1158
          <td class="paramname"> <em>tmp_buf</em>, </td>
 
1159
        </tr>
 
1160
        <tr>
 
1161
          <td class="paramkey"></td>
 
1162
          <td></td>
 
1163
          <td class="paramtype">unsigned &amp;&nbsp;</td>
 
1164
          <td class="paramname"> <em>dsize</em></td><td>&nbsp;</td>
 
1165
        </tr>
 
1166
        <tr>
 
1167
          <td></td>
 
1168
          <td>)</td>
 
1169
          <td></td><td></td><td><code> [inline]</code></td>
 
1170
        </tr>
 
1171
      </table>
 
1172
</div>
 
1173
<div class="memdoc">
 
1174
 
 
1175
<p>GAP AND operation. </p>
 
1176
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1177
<dl><dt><b>Parameters:</b></dt><dd>
 
1178
  <table border="0" cellspacing="2" cellpadding="0">
 
1179
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1180
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1181
    <tr><td valign="top"></td><td valign="top"><em>tmp_buf</em>&nbsp;</td><td>- pointer on temporary buffer </td></tr>
 
1182
    <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>- out size of the destination </td></tr>
 
1183
  </table>
 
1184
  </dd>
 
1185
</dl>
 
1186
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf OR vect1) </dd></dl>
 
1187
 
 
1188
<p>Definition at line <a class="el" href="a00093_source.html#l02954">2954</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1189
 
 
1190
<p>References <a class="el" href="a00093_source.html#l02925">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00908">bm::gap_buff_op()</a>.</p>
 
1191
 
 
1192
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
1193
 
 
1194
</div>
 
1195
</div>
 
1196
<a class="anchor" id="gafb24a1e2588c5670df6facc537594d9d"></a><!-- doxytag: member="bm::gap_operation_any_and" ref="gafb24a1e2588c5670df6facc537594d9d" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
 
1197
<div class="memitem">
 
1198
<div class="memproto">
 
1199
      <table class="memname">
 
1200
        <tr>
 
1201
          <td class="memname">unsigned bm::gap_operation_any_and </td>
 
1202
          <td>(</td>
 
1203
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1204
          <td class="paramname"> <em>vect1</em>, </td>
 
1205
        </tr>
 
1206
        <tr>
 
1207
          <td class="paramkey"></td>
 
1208
          <td></td>
 
1209
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1210
          <td class="paramname"> <em>vect2</em></td><td>&nbsp;</td>
 
1211
        </tr>
 
1212
        <tr>
 
1213
          <td></td>
 
1214
          <td>)</td>
 
1215
          <td></td><td></td><td><code> [inline]</code></td>
 
1216
        </tr>
 
1217
      </table>
 
1218
</div>
 
1219
<div class="memdoc">
 
1220
 
 
1221
<p>GAP AND operation test. </p>
 
1222
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1223
<dl><dt><b>Parameters:</b></dt><dd>
 
1224
  <table border="0" cellspacing="2" cellpadding="0">
 
1225
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1226
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1227
  </table>
 
1228
  </dd>
 
1229
</dl>
 
1230
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
 
1231
 
 
1232
<p>Definition at line <a class="el" href="a00093_source.html#l02977">2977</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1233
 
 
1234
<p>References <a class="el" href="a00093_source.html#l02925">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00990">bm::gap_buff_any_op()</a>.</p>
 
1235
 
 
1236
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1237
 
 
1238
</div>
 
1239
</div>
 
1240
<a class="anchor" id="gae0b1d4aca0ddfa58d83e4b089a4f35d9"></a><!-- doxytag: member="bm::gap_operation_any_sub" ref="gae0b1d4aca0ddfa58d83e4b089a4f35d9" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
 
1241
<div class="memitem">
 
1242
<div class="memproto">
 
1243
      <table class="memname">
 
1244
        <tr>
 
1245
          <td class="memname">unsigned bm::gap_operation_any_sub </td>
 
1246
          <td>(</td>
 
1247
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1248
          <td class="paramname"> <em>vect1</em>, </td>
 
1249
        </tr>
 
1250
        <tr>
 
1251
          <td class="paramkey"></td>
 
1252
          <td></td>
 
1253
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1254
          <td class="paramname"> <em>vect2</em></td><td>&nbsp;</td>
 
1255
        </tr>
 
1256
        <tr>
 
1257
          <td></td>
 
1258
          <td>)</td>
 
1259
          <td></td><td></td><td><code> [inline]</code></td>
 
1260
        </tr>
 
1261
      </table>
 
1262
</div>
 
1263
<div class="memdoc">
 
1264
 
 
1265
<p>GAP SUB operation test. </p>
 
1266
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1267
<dl><dt><b>Parameters:</b></dt><dd>
 
1268
  <table border="0" cellspacing="2" cellpadding="0">
 
1269
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1270
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1271
  </table>
 
1272
  </dd>
 
1273
</dl>
 
1274
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
 
1275
 
 
1276
<p>Definition at line <a class="el" href="a00093_source.html#l03104">3104</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1277
 
 
1278
<p>References <a class="el" href="a00093_source.html#l02925">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00990">bm::gap_buff_any_op()</a>.</p>
 
1279
 
 
1280
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1281
 
 
1282
</div>
 
1283
</div>
 
1284
<a class="anchor" id="gab46833bf0d7813f868a1608f70db12de"></a><!-- doxytag: member="bm::gap_operation_any_xor" ref="gab46833bf0d7813f868a1608f70db12de" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2)" -->
 
1285
<div class="memitem">
 
1286
<div class="memproto">
 
1287
      <table class="memname">
 
1288
        <tr>
 
1289
          <td class="memname">unsigned bm::gap_operation_any_xor </td>
 
1290
          <td>(</td>
 
1291
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1292
          <td class="paramname"> <em>vect1</em>, </td>
 
1293
        </tr>
 
1294
        <tr>
 
1295
          <td class="paramkey"></td>
 
1296
          <td></td>
 
1297
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1298
          <td class="paramname"> <em>vect2</em></td><td>&nbsp;</td>
 
1299
        </tr>
 
1300
        <tr>
 
1301
          <td></td>
 
1302
          <td>)</td>
 
1303
          <td></td><td></td><td><code> [inline]</code></td>
 
1304
        </tr>
 
1305
      </table>
 
1306
</div>
 
1307
<div class="memdoc">
 
1308
 
 
1309
<p>GAP XOR operation test. </p>
 
1310
<p>Function performs AND logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1311
<dl><dt><b>Parameters:</b></dt><dd>
 
1312
  <table border="0" cellspacing="2" cellpadding="0">
 
1313
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1314
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1315
  </table>
 
1316
  </dd>
 
1317
</dl>
 
1318
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if operation returns any 1 bit </dd></dl>
 
1319
 
 
1320
<p>Definition at line <a class="el" href="a00093_source.html#l03025">3025</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1321
 
 
1322
<p>References <a class="el" href="a00093_source.html#l00990">bm::gap_buff_any_op()</a>, and <a class="el" href="a00093_source.html#l02932">bm::xor_op()</a>.</p>
 
1323
 
 
1324
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1325
 
 
1326
</div>
 
1327
</div>
 
1328
<a class="anchor" id="gacda280af8910ae5fde37731a3a7a1226"></a><!-- doxytag: member="bm::gap_operation_or" ref="gacda280af8910ae5fde37731a3a7a1226" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)" -->
 
1329
<div class="memitem">
 
1330
<div class="memproto">
 
1331
      <table class="memname">
 
1332
        <tr>
 
1333
          <td class="memname">gap_word_t* bm::gap_operation_or </td>
 
1334
          <td>(</td>
 
1335
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1336
          <td class="paramname"> <em>vect1</em>, </td>
 
1337
        </tr>
 
1338
        <tr>
 
1339
          <td class="paramkey"></td>
 
1340
          <td></td>
 
1341
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1342
          <td class="paramname"> <em>vect2</em>, </td>
 
1343
        </tr>
 
1344
        <tr>
 
1345
          <td class="paramkey"></td>
 
1346
          <td></td>
 
1347
          <td class="paramtype">gap_word_t *BMRESTRICT&nbsp;</td>
 
1348
          <td class="paramname"> <em>tmp_buf</em>, </td>
 
1349
        </tr>
 
1350
        <tr>
 
1351
          <td class="paramkey"></td>
 
1352
          <td></td>
 
1353
          <td class="paramtype">unsigned &amp;&nbsp;</td>
 
1354
          <td class="paramname"> <em>dsize</em></td><td>&nbsp;</td>
 
1355
        </tr>
 
1356
        <tr>
 
1357
          <td></td>
 
1358
          <td>)</td>
 
1359
          <td></td><td></td><td><code> [inline]</code></td>
 
1360
        </tr>
 
1361
      </table>
 
1362
</div>
 
1363
<div class="memdoc">
 
1364
 
 
1365
<p>GAP OR operation. </p>
 
1366
<p>Function performs OR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1367
<dl><dt><b>Parameters:</b></dt><dd>
 
1368
  <table border="0" cellspacing="2" cellpadding="0">
 
1369
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1370
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1371
    <tr><td valign="top"></td><td valign="top"><em>tmp_buf</em>&nbsp;</td><td>- pointer on temporary buffer </td></tr>
 
1372
    <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>- out destination size</td></tr>
 
1373
  </table>
 
1374
  </dd>
 
1375
</dl>
 
1376
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
 
1377
 
 
1378
<p>Definition at line <a class="el" href="a00093_source.html#l03050">3050</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1379
 
 
1380
<p>References <a class="el" href="a00093_source.html#l02925">bm::and_op()</a>, <a class="el" href="a00093_source.html#l00908">bm::gap_buff_op()</a>, and <a class="el" href="a00093_source.html#l02099">bm::gap_invert()</a>.</p>
 
1381
 
 
1382
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>, and <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
1383
 
 
1384
</div>
 
1385
</div>
 
1386
<a class="anchor" id="gabe4c83e5e162c38e297116dd1cd05ac4"></a><!-- doxytag: member="bm::gap_operation_sub" ref="gabe4c83e5e162c38e297116dd1cd05ac4" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)" -->
 
1387
<div class="memitem">
 
1388
<div class="memproto">
 
1389
      <table class="memname">
 
1390
        <tr>
 
1391
          <td class="memname">gap_word_t* bm::gap_operation_sub </td>
 
1392
          <td>(</td>
 
1393
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1394
          <td class="paramname"> <em>vect1</em>, </td>
 
1395
        </tr>
 
1396
        <tr>
 
1397
          <td class="paramkey"></td>
 
1398
          <td></td>
 
1399
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1400
          <td class="paramname"> <em>vect2</em>, </td>
 
1401
        </tr>
 
1402
        <tr>
 
1403
          <td class="paramkey"></td>
 
1404
          <td></td>
 
1405
          <td class="paramtype">gap_word_t *BMRESTRICT&nbsp;</td>
 
1406
          <td class="paramname"> <em>tmp_buf</em>, </td>
 
1407
        </tr>
 
1408
        <tr>
 
1409
          <td class="paramkey"></td>
 
1410
          <td></td>
 
1411
          <td class="paramtype">unsigned &amp;&nbsp;</td>
 
1412
          <td class="paramname"> <em>dsize</em></td><td>&nbsp;</td>
 
1413
        </tr>
 
1414
        <tr>
 
1415
          <td></td>
 
1416
          <td>)</td>
 
1417
          <td></td><td></td><td><code> [inline]</code></td>
 
1418
        </tr>
 
1419
      </table>
 
1420
</div>
 
1421
<div class="memdoc">
 
1422
 
 
1423
<p>GAP SUB (AND NOT) operation. </p>
 
1424
<p>Function performs SUB logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1425
<dl><dt><b>Parameters:</b></dt><dd>
 
1426
  <table border="0" cellspacing="2" cellpadding="0">
 
1427
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1428
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1429
    <tr><td valign="top"></td><td valign="top"><em>tmp_buf</em>&nbsp;</td><td>- pointer on temporary buffer </td></tr>
 
1430
    <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>- out destination size</td></tr>
 
1431
  </table>
 
1432
  </dd>
 
1433
</dl>
 
1434
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
 
1435
 
 
1436
<p>Definition at line <a class="el" href="a00093_source.html#l03080">3080</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1437
 
 
1438
<p>References <a class="el" href="a00093_source.html#l02925">bm::and_op()</a>, and <a class="el" href="a00093_source.html#l00908">bm::gap_buff_op()</a>.</p>
 
1439
 
 
1440
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
1441
 
 
1442
</div>
 
1443
</div>
 
1444
<a class="anchor" id="gaa5e07ad0256bf784ad3397acbbd23bb2"></a><!-- doxytag: member="bm::gap_operation_xor" ref="gaa5e07ad0256bf784ad3397acbbd23bb2" args="(const gap_word_t *BMRESTRICT vect1, const gap_word_t *BMRESTRICT vect2, gap_word_t *BMRESTRICT tmp_buf, unsigned &amp;dsize)" -->
 
1445
<div class="memitem">
 
1446
<div class="memproto">
 
1447
      <table class="memname">
 
1448
        <tr>
 
1449
          <td class="memname">gap_word_t* bm::gap_operation_xor </td>
 
1450
          <td>(</td>
 
1451
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1452
          <td class="paramname"> <em>vect1</em>, </td>
 
1453
        </tr>
 
1454
        <tr>
 
1455
          <td class="paramkey"></td>
 
1456
          <td></td>
 
1457
          <td class="paramtype">const gap_word_t *BMRESTRICT&nbsp;</td>
 
1458
          <td class="paramname"> <em>vect2</em>, </td>
 
1459
        </tr>
 
1460
        <tr>
 
1461
          <td class="paramkey"></td>
 
1462
          <td></td>
 
1463
          <td class="paramtype">gap_word_t *BMRESTRICT&nbsp;</td>
 
1464
          <td class="paramname"> <em>tmp_buf</em>, </td>
 
1465
        </tr>
 
1466
        <tr>
 
1467
          <td class="paramkey"></td>
 
1468
          <td></td>
 
1469
          <td class="paramtype">unsigned &amp;&nbsp;</td>
 
1470
          <td class="paramname"> <em>dsize</em></td><td>&nbsp;</td>
 
1471
        </tr>
 
1472
        <tr>
 
1473
          <td></td>
 
1474
          <td>)</td>
 
1475
          <td></td><td></td><td><code> [inline]</code></td>
 
1476
        </tr>
 
1477
      </table>
 
1478
</div>
 
1479
<div class="memdoc">
 
1480
 
 
1481
<p>GAP XOR operation. </p>
 
1482
<p>Function performs XOR logical oparation on gap vectors. If possible function put the result into vect1 and returns this pointer. Otherwise result is put into tmp_buf, which should be twice of the vector size.</p>
 
1483
<dl><dt><b>Parameters:</b></dt><dd>
 
1484
  <table border="0" cellspacing="2" cellpadding="0">
 
1485
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 </td></tr>
 
1486
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 </td></tr>
 
1487
    <tr><td valign="top"></td><td valign="top"><em>tmp_buf</em>&nbsp;</td><td>- pointer on temporary buffer </td></tr>
 
1488
    <tr><td valign="top"></td><td valign="top"><em>dsize</em>&nbsp;</td><td>- out destination size </td></tr>
 
1489
  </table>
 
1490
  </dd>
 
1491
</dl>
 
1492
<dl class="return"><dt><b>Returns:</b></dt><dd>Result pointer (tmp_buf) </dd></dl>
 
1493
 
 
1494
<p>Definition at line <a class="el" href="a00093_source.html#l03001">3001</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1495
 
 
1496
<p>References <a class="el" href="a00093_source.html#l00908">bm::gap_buff_op()</a>, and <a class="el" href="a00093_source.html#l02932">bm::xor_op()</a>.</p>
 
1497
 
 
1498
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
1499
 
 
1500
</div>
 
1501
</div>
 
1502
<a class="anchor" id="gacc578010f3700940829c600c812d23b1"></a><!-- doxytag: member="bm::gap_overhead" ref="gacc578010f3700940829c600c812d23b1" args="(const T *length, const T *length_end, const T *glevel_len)" -->
 
1503
<div class="memitem">
 
1504
<div class="memproto">
 
1505
<div class="memtemplate">
 
1506
template&lt;typename T &gt; </div>
 
1507
      <table class="memname">
 
1508
        <tr>
 
1509
          <td class="memname">unsigned bm::gap_overhead </td>
 
1510
          <td>(</td>
 
1511
          <td class="paramtype">const T *&nbsp;</td>
 
1512
          <td class="paramname"> <em>length</em>, </td>
 
1513
        </tr>
 
1514
        <tr>
 
1515
          <td class="paramkey"></td>
 
1516
          <td></td>
 
1517
          <td class="paramtype">const T *&nbsp;</td>
 
1518
          <td class="paramname"> <em>length_end</em>, </td>
 
1519
        </tr>
 
1520
        <tr>
 
1521
          <td class="paramkey"></td>
 
1522
          <td></td>
 
1523
          <td class="paramtype">const T *&nbsp;</td>
 
1524
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
1525
        </tr>
 
1526
        <tr>
 
1527
          <td></td>
 
1528
          <td>)</td>
 
1529
          <td></td><td></td><td><code> [inline]</code></td>
 
1530
        </tr>
 
1531
      </table>
 
1532
</div>
 
1533
<div class="memdoc">
 
1534
 
 
1535
<p>Convert bit block into an array of ints corresponding to 1 bits. </p>
 
1536
<p>OBSOLETE function</p>
 
1537
<p>Calculates memory overhead for number of gap blocks sharing the same memory allocation table (level lengths table). </p>
 
1538
 
 
1539
<p>Definition at line <a class="el" href="a00093_source.html#l04563">4563</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1540
 
 
1541
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l02229">bm::gap_calc_level()</a>, and <a class="el" href="a00091_source.html#l00074">bm::gap_levels</a>.</p>
 
1542
 
 
1543
<p>Referenced by <a class="el" href="a00093_source.html#l04591">bm::improve_gap_levels()</a>.</p>
 
1544
 
 
1545
</div>
 
1546
</div>
 
1547
<a class="anchor" id="gaef53b2877ff369badd7bb25b26bb9029"></a><!-- doxytag: member="bm::gap_set_all" ref="gaef53b2877ff369badd7bb25b26bb9029" args="(T *buf, unsigned set_max, unsigned value)" -->
 
1548
<div class="memitem">
 
1549
<div class="memproto">
 
1550
<div class="memtemplate">
 
1551
template&lt;class T &gt; </div>
 
1552
      <table class="memname">
 
1553
        <tr>
 
1554
          <td class="memname">void bm::gap_set_all </td>
 
1555
          <td>(</td>
 
1556
          <td class="paramtype">T *&nbsp;</td>
 
1557
          <td class="paramname"> <em>buf</em>, </td>
 
1558
        </tr>
 
1559
        <tr>
 
1560
          <td class="paramkey"></td>
 
1561
          <td></td>
 
1562
          <td class="paramtype">unsigned&nbsp;</td>
 
1563
          <td class="paramname"> <em>set_max</em>, </td>
 
1564
        </tr>
 
1565
        <tr>
 
1566
          <td class="paramkey"></td>
 
1567
          <td></td>
 
1568
          <td class="paramtype">unsigned&nbsp;</td>
 
1569
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
 
1570
        </tr>
 
1571
        <tr>
 
1572
          <td></td>
 
1573
          <td>)</td>
 
1574
          <td></td><td></td><td><code> [inline]</code></td>
 
1575
        </tr>
 
1576
      </table>
 
1577
</div>
 
1578
<div class="memdoc">
 
1579
 
 
1580
<p>Sets all bits to 0 or 1 (GAP). </p>
 
1581
<dl><dt><b>Parameters:</b></dt><dd>
 
1582
  <table border="0" cellspacing="2" cellpadding="0">
 
1583
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1584
    <tr><td valign="top"></td><td valign="top"><em>set_max</em>&nbsp;</td><td>- max possible bitset length </td></tr>
 
1585
  </table>
 
1586
  </dd>
 
1587
</dl>
 
1588
 
 
1589
<p>Definition at line <a class="el" href="a00093_source.html#l02028">2028</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1590
 
 
1591
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
1592
 
 
1593
<p>Referenced by <a class="el" href="a00093_source.html#l02049">bm::gap_init_range_block()</a>, and <a class="el" href="a00096_source.html#l01129">bm::deseriaizer_base&lt; DEC &gt;::read_gap_block()</a>.</p>
 
1594
 
 
1595
</div>
 
1596
</div>
 
1597
<a class="anchor" id="ga69186bd13bda27e04b3e33683ff884c2"></a><!-- doxytag: member="bm::gap_set_value" ref="ga69186bd13bda27e04b3e33683ff884c2" args="(unsigned val, T *BMRESTRICT buf, unsigned pos, unsigned *BMRESTRICT is_set)" -->
 
1598
<div class="memitem">
 
1599
<div class="memproto">
 
1600
<div class="memtemplate">
 
1601
template&lt;typename T &gt; </div>
 
1602
      <table class="memname">
 
1603
        <tr>
 
1604
          <td class="memname">unsigned bm::gap_set_value </td>
 
1605
          <td>(</td>
 
1606
          <td class="paramtype">unsigned&nbsp;</td>
 
1607
          <td class="paramname"> <em>val</em>, </td>
 
1608
        </tr>
 
1609
        <tr>
 
1610
          <td class="paramkey"></td>
 
1611
          <td></td>
 
1612
          <td class="paramtype">T *BMRESTRICT&nbsp;</td>
 
1613
          <td class="paramname"> <em>buf</em>, </td>
 
1614
        </tr>
 
1615
        <tr>
 
1616
          <td class="paramkey"></td>
 
1617
          <td></td>
 
1618
          <td class="paramtype">unsigned&nbsp;</td>
 
1619
          <td class="paramname"> <em>pos</em>, </td>
 
1620
        </tr>
 
1621
        <tr>
 
1622
          <td class="paramkey"></td>
 
1623
          <td></td>
 
1624
          <td class="paramtype">unsigned *BMRESTRICT&nbsp;</td>
 
1625
          <td class="paramname"> <em>is_set</em></td><td>&nbsp;</td>
 
1626
        </tr>
 
1627
        <tr>
 
1628
          <td></td>
 
1629
          <td>)</td>
 
1630
          <td></td><td></td><td><code> [inline]</code></td>
 
1631
        </tr>
 
1632
      </table>
 
1633
</div>
 
1634
<div class="memdoc">
 
1635
 
 
1636
<p>Abstract distance(similarity) operation for GAP buffers. Receives functor F as a template argument. </p>
 
1637
<dl><dt><b>Parameters:</b></dt><dd>
 
1638
  <table border="0" cellspacing="2" cellpadding="0">
 
1639
    <tr><td valign="top"></td><td valign="top"><em>vect1</em>&nbsp;</td><td>- operand 1 GAP encoded buffer. </td></tr>
 
1640
    <tr><td valign="top"></td><td valign="top"><em>vect2</em>&nbsp;</td><td>- operand 2 GAP encoded buffer. </td></tr>
 
1641
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>- operation functor. </td></tr>
 
1642
  </table>
 
1643
  </dd>
 
1644
</dl>
 
1645
<dl class="note"><dt><b>Note:</b></dt><dd>Internal function.</dd></dl>
 
1646
<p>Sets or clears bit in the GAP buffer. </p>
 
1647
<dl><dt><b>Parameters:</b></dt><dd>
 
1648
  <table border="0" cellspacing="2" cellpadding="0">
 
1649
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>- new bit value </td></tr>
 
1650
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer. </td></tr>
 
1651
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>- Index of bit to set. </td></tr>
 
1652
    <tr><td valign="top"></td><td valign="top"><em>is_set</em>&nbsp;</td><td>- (OUT) flag if bit was actually set.</td></tr>
 
1653
  </table>
 
1654
  </dd>
 
1655
</dl>
 
1656
<dl class="return"><dt><b>Returns:</b></dt><dd>New GAP buffer length. </dd></dl>
 
1657
 
 
1658
<p>Definition at line <a class="el" href="a00093_source.html#l01133">1133</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1659
 
 
1660
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00093_source.html#l00461">bm::gap_bfind()</a>, and <a class="el" href="a00091_source.html#l00071">bm::gap_max_bits</a>.</p>
 
1661
 
 
1662
<p>Referenced by <a class="el" href="a00089_source.html#l01105">bm::combine_or()</a>, <a class="el" href="a00089_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00089_source.html#l01184">bm::combine_xor()</a>, <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>, <a class="el" href="a00096_source.html#l01129">bm::deseriaizer_base&lt; DEC &gt;::read_gap_block()</a>, and <a class="el" href="a00103_source.html#l00101">bm::miniset&lt; A, N &gt;::set()</a>.</p>
 
1663
 
 
1664
</div>
 
1665
</div>
 
1666
<a class="anchor" id="ga08e0ae8b2fd5869aa31cfad7d47177c4"></a><!-- doxytag: member="bm::gap_sub_to_bitset" ref="ga08e0ae8b2fd5869aa31cfad7d47177c4" args="(unsigned *dest, const T *buf)" -->
 
1667
<div class="memitem">
 
1668
<div class="memproto">
 
1669
<div class="memtemplate">
 
1670
template&lt;typename T &gt; </div>
 
1671
      <table class="memname">
 
1672
        <tr>
 
1673
          <td class="memname">void bm::gap_sub_to_bitset </td>
 
1674
          <td>(</td>
 
1675
          <td class="paramtype">unsigned *&nbsp;</td>
 
1676
          <td class="paramname"> <em>dest</em>, </td>
 
1677
        </tr>
 
1678
        <tr>
 
1679
          <td class="paramkey"></td>
 
1680
          <td></td>
 
1681
          <td class="paramtype">const T *&nbsp;</td>
 
1682
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
1683
        </tr>
 
1684
        <tr>
 
1685
          <td></td>
 
1686
          <td>)</td>
 
1687
          <td></td><td></td><td><code> [inline]</code></td>
 
1688
        </tr>
 
1689
      </table>
 
1690
</div>
 
1691
<div class="memdoc">
 
1692
 
 
1693
<p>SUB (AND NOT) GAP block to bitblock. </p>
 
1694
<dl><dt><b>Parameters:</b></dt><dd>
 
1695
  <table border="0" cellspacing="2" cellpadding="0">
 
1696
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
1697
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1698
  </table>
 
1699
  </dd>
 
1700
</dl>
 
1701
 
 
1702
<p>Definition at line <a class="el" href="a00093_source.html#l01466">1466</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1703
 
 
1704
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01342">bm::sub_bit_block()</a>.</p>
 
1705
 
 
1706
</div>
 
1707
</div>
 
1708
<a class="anchor" id="ga866352ef5986a7d2b709795d127b666b"></a><!-- doxytag: member="bm::gap_test" ref="ga866352ef5986a7d2b709795d127b666b" args="(const T *buf, unsigned pos)" -->
 
1709
<div class="memitem">
 
1710
<div class="memproto">
 
1711
<div class="memtemplate">
 
1712
template&lt;typename T &gt; </div>
 
1713
      <table class="memname">
 
1714
        <tr>
 
1715
          <td class="memname">unsigned bm::gap_test </td>
 
1716
          <td>(</td>
 
1717
          <td class="paramtype">const T *&nbsp;</td>
 
1718
          <td class="paramname"> <em>buf</em>, </td>
 
1719
        </tr>
 
1720
        <tr>
 
1721
          <td class="paramkey"></td>
 
1722
          <td></td>
 
1723
          <td class="paramtype">unsigned&nbsp;</td>
 
1724
          <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
 
1725
        </tr>
 
1726
        <tr>
 
1727
          <td></td>
 
1728
          <td>)</td>
 
1729
          <td></td><td></td><td><code> [inline]</code></td>
 
1730
        </tr>
 
1731
      </table>
 
1732
</div>
 
1733
<div class="memdoc">
 
1734
 
 
1735
<p>Tests if bit = pos is true. </p>
 
1736
<dl><dt><b>Parameters:</b></dt><dd>
 
1737
  <table border="0" cellspacing="2" cellpadding="0">
 
1738
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1739
    <tr><td valign="top"></td><td valign="top"><em>pos</em>&nbsp;</td><td>- index of the element. </td></tr>
 
1740
  </table>
 
1741
  </dd>
 
1742
</dl>
 
1743
<dl class="return"><dt><b>Returns:</b></dt><dd>true if position is in "1" gap </dd></dl>
 
1744
 
 
1745
<p>Definition at line <a class="el" href="a00093_source.html#l00489">489</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1746
 
 
1747
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00071">bm::gap_max_bits</a>.</p>
 
1748
 
 
1749
<p>Referenced by <a class="el" href="a00089_source.html#l01268">bm::combine_sub()</a>, <a class="el" href="a00089_source.html#l01184">bm::combine_xor()</a>, <a class="el" href="a00087_source.html#l01808">bm::bvector&lt; Alloc, MS &gt;::get_bit()</a>, and <a class="el" href="a00103_source.html#l00090">bm::miniset&lt; A, N &gt;::test()</a>.</p>
 
1750
 
 
1751
</div>
 
1752
</div>
 
1753
<a class="anchor" id="gab939656d4ea54fd3868aa236cdb20b82"></a><!-- doxytag: member="bm::gap_xor_to_bitset" ref="gab939656d4ea54fd3868aa236cdb20b82" args="(unsigned *dest, const T *buf)" -->
 
1754
<div class="memitem">
 
1755
<div class="memproto">
 
1756
<div class="memtemplate">
 
1757
template&lt;typename T &gt; </div>
 
1758
      <table class="memname">
 
1759
        <tr>
 
1760
          <td class="memname">void bm::gap_xor_to_bitset </td>
 
1761
          <td>(</td>
 
1762
          <td class="paramtype">unsigned *&nbsp;</td>
 
1763
          <td class="paramname"> <em>dest</em>, </td>
 
1764
        </tr>
 
1765
        <tr>
 
1766
          <td class="paramkey"></td>
 
1767
          <td></td>
 
1768
          <td class="paramtype">const T *&nbsp;</td>
 
1769
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
1770
        </tr>
 
1771
        <tr>
 
1772
          <td></td>
 
1773
          <td>)</td>
 
1774
          <td></td><td></td><td><code> [inline]</code></td>
 
1775
        </tr>
 
1776
      </table>
 
1777
</div>
 
1778
<div class="memdoc">
 
1779
 
 
1780
<p>XOR GAP block to bitblock. </p>
 
1781
<dl><dt><b>Parameters:</b></dt><dd>
 
1782
  <table border="0" cellspacing="2" cellpadding="0">
 
1783
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
1784
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1785
  </table>
 
1786
  </dd>
 
1787
</dl>
 
1788
 
 
1789
<p>Definition at line <a class="el" href="a00093_source.html#l01498">1498</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1790
 
 
1791
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00093_source.html#l01404">bm::xor_bit_block()</a>.</p>
 
1792
 
 
1793
</div>
 
1794
</div>
 
1795
<a class="anchor" id="ga406952734f1b05962941b32e37b3eb96"></a><!-- doxytag: member="bm::gapcmp" ref="ga406952734f1b05962941b32e37b3eb96" args="(const T *buf1, const T *buf2)" -->
 
1796
<div class="memitem">
 
1797
<div class="memproto">
 
1798
<div class="memtemplate">
 
1799
template&lt;typename T &gt; </div>
 
1800
      <table class="memname">
 
1801
        <tr>
 
1802
          <td class="memname">int bm::gapcmp </td>
 
1803
          <td>(</td>
 
1804
          <td class="paramtype">const T *&nbsp;</td>
 
1805
          <td class="paramname"> <em>buf1</em>, </td>
 
1806
        </tr>
 
1807
        <tr>
 
1808
          <td class="paramkey"></td>
 
1809
          <td></td>
 
1810
          <td class="paramtype">const T *&nbsp;</td>
 
1811
          <td class="paramname"> <em>buf2</em></td><td>&nbsp;</td>
 
1812
        </tr>
 
1813
        <tr>
 
1814
          <td></td>
 
1815
          <td>)</td>
 
1816
          <td></td><td></td><td><code> [inline]</code></td>
 
1817
        </tr>
 
1818
      </table>
 
1819
</div>
 
1820
<div class="memdoc">
 
1821
 
 
1822
<p>Lexicographical comparison of GAP buffers. </p>
 
1823
<dl><dt><b>Parameters:</b></dt><dd>
 
1824
  <table border="0" cellspacing="2" cellpadding="0">
 
1825
    <tr><td valign="top"></td><td valign="top"><em>buf1</em>&nbsp;</td><td>- First GAP buffer pointer. </td></tr>
 
1826
    <tr><td valign="top"></td><td valign="top"><em>buf2</em>&nbsp;</td><td>- Second GAP buffer pointer. </td></tr>
 
1827
  </table>
 
1828
  </dd>
 
1829
</dl>
 
1830
<dl class="return"><dt><b>Returns:</b></dt><dd>&lt;0 - less, =0 - equal, &gt;0 - greater. </dd></dl>
 
1831
 
 
1832
<p>Definition at line <a class="el" href="a00093_source.html#l00841">841</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1833
 
 
1834
<p>Referenced by <a class="el" href="a00087_source.html#l01921">bm::bvector&lt; Alloc, MS &gt;::compare()</a>.</p>
 
1835
 
 
1836
</div>
 
1837
</div>
 
1838
<a class="anchor" id="ga2daff3a0ceda6fef87d3b0e892da5813"></a><!-- doxytag: member="bm::improve_gap_levels" ref="ga2daff3a0ceda6fef87d3b0e892da5813" args="(const T *length, const T *length_end, T *glevel_len)" -->
 
1839
<div class="memitem">
 
1840
<div class="memproto">
 
1841
<div class="memtemplate">
 
1842
template&lt;typename T &gt; </div>
 
1843
      <table class="memname">
 
1844
        <tr>
 
1845
          <td class="memname">bool bm::improve_gap_levels </td>
 
1846
          <td>(</td>
 
1847
          <td class="paramtype">const T *&nbsp;</td>
 
1848
          <td class="paramname"> <em>length</em>, </td>
 
1849
        </tr>
 
1850
        <tr>
 
1851
          <td class="paramkey"></td>
 
1852
          <td></td>
 
1853
          <td class="paramtype">const T *&nbsp;</td>
 
1854
          <td class="paramname"> <em>length_end</em>, </td>
 
1855
        </tr>
 
1856
        <tr>
 
1857
          <td class="paramkey"></td>
 
1858
          <td></td>
 
1859
          <td class="paramtype">T *&nbsp;</td>
 
1860
          <td class="paramname"> <em>glevel_len</em></td><td>&nbsp;</td>
 
1861
        </tr>
 
1862
        <tr>
 
1863
          <td></td>
 
1864
          <td>)</td>
 
1865
          <td></td><td></td><td><code> [inline]</code></td>
 
1866
        </tr>
 
1867
      </table>
 
1868
</div>
 
1869
<div class="memdoc">
 
1870
 
 
1871
<p>Finds optimal gap blocks lengths. </p>
 
1872
<dl><dt><b>Parameters:</b></dt><dd>
 
1873
  <table border="0" cellspacing="2" cellpadding="0">
 
1874
    <tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td>- first element of GAP lengths array </td></tr>
 
1875
    <tr><td valign="top"></td><td valign="top"><em>length_end</em>&nbsp;</td><td>- end of the GAP lengths array </td></tr>
 
1876
    <tr><td valign="top"></td><td valign="top"><em>glevel_len</em>&nbsp;</td><td>- destination GAP lengths array </td></tr>
 
1877
  </table>
 
1878
  </dd>
 
1879
</dl>
 
1880
 
 
1881
<p>Definition at line <a class="el" href="a00093_source.html#l04591">4591</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1882
 
 
1883
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00091_source.html#l00074">bm::gap_levels</a>, <a class="el" href="a00091_source.html#l00070">bm::gap_max_buff_len</a>, and <a class="el" href="a00093_source.html#l04563">bm::gap_overhead()</a>.</p>
 
1884
 
 
1885
<p>Referenced by <a class="el" href="a00087_source.html#l01884">bm::bvector&lt; Alloc, MS &gt;::optimize_gap_size()</a>.</p>
 
1886
 
 
1887
</div>
 
1888
</div>
 
1889
<a class="anchor" id="ga501aa9bf029e7f9ea9518e7003fe5549"></a><!-- doxytag: member="bm::set_gap_level" ref="ga501aa9bf029e7f9ea9518e7003fe5549" args="(T *buf, unsigned level)" -->
 
1890
<div class="memitem">
 
1891
<div class="memproto">
 
1892
<div class="memtemplate">
 
1893
template&lt;typename T &gt; </div>
 
1894
      <table class="memname">
 
1895
        <tr>
 
1896
          <td class="memname">void bm::set_gap_level </td>
 
1897
          <td>(</td>
 
1898
          <td class="paramtype">T *&nbsp;</td>
 
1899
          <td class="paramname"> <em>buf</em>, </td>
 
1900
        </tr>
 
1901
        <tr>
 
1902
          <td class="paramkey"></td>
 
1903
          <td></td>
 
1904
          <td class="paramtype">unsigned&nbsp;</td>
 
1905
          <td class="paramname"> <em>level</em></td><td>&nbsp;</td>
 
1906
        </tr>
 
1907
        <tr>
 
1908
          <td></td>
 
1909
          <td>)</td>
 
1910
          <td></td><td></td><td><code> [inline]</code></td>
 
1911
        </tr>
 
1912
      </table>
 
1913
</div>
 
1914
<div class="memdoc">
 
1915
 
 
1916
<p>Sets GAP block capacity level. </p>
 
1917
<dl><dt><b>Parameters:</b></dt><dd>
 
1918
  <table border="0" cellspacing="2" cellpadding="0">
 
1919
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
1920
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>new GAP block capacity level. </td></tr>
 
1921
  </table>
 
1922
  </dd>
 
1923
</dl>
 
1924
 
 
1925
<p>Definition at line <a class="el" href="a00093_source.html#l02212">2212</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1926
 
 
1927
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00091_source.html#l00074">bm::gap_levels</a>.</p>
 
1928
 
 
1929
<p>Referenced by <a class="el" href="a00096_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>, and <a class="el" href="a00096_source.html#l01232">bm::deserializer&lt; BV, DEC &gt;::deserialize_gap()</a>.</p>
 
1930
 
 
1931
</div>
 
1932
</div>
 
1933
</div>
 
1934
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:19 2010 for BitMagic by&nbsp;
404
1935
<a href="http://www.doxygen.org/index.html">
405
1936
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
406
1937
</body>