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

« back to all changes in this revision

Viewing changes to doc/html/a00120.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: Distance metrics</title>
 
5
<title>BitMagic: BIT 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>Distance metrics<br/>
 
24
<h1>BIT functions<br/>
25
25
<small>
26
 
[<a class="el" href="a00119.html">Set algorithms</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 Distance metrics:</div>
 
29
Collaboration diagram for BIT functions:</div>
30
30
<div class="dynsection">
31
31
<center><table><tr><td><img src="a00120.png" border="0" alt="" usemap="#a00120_map"/>
32
32
<map name="a00120_map" id="a00120">
33
 
<area shape="rect" href="a00119.html" title="Set algorithms" alt="" coords="7,5,111,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>Enumerations</h2></td></tr>
38
 
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a> { <br/>
39
 
&nbsp;&nbsp;<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce">bm::COUNT_AND</a> =  set_COUNT_AND, 
40
 
<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061">bm::COUNT_XOR</a> =  set_COUNT_XOR, 
41
 
<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb">bm::COUNT_OR</a> =  set_COUNT_OR, 
42
 
<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62">bm::COUNT_SUB_AB</a> =  set_COUNT_SUB_AB, 
43
 
<br/>
44
 
&nbsp;&nbsp;<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400">bm::COUNT_SUB_BA</a> =  set_COUNT_SUB_BA, 
45
 
<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2">bm::COUNT_A</a> =  set_COUNT_A, 
46
 
<a class="el" href="a00120.html#ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516">bm::COUNT_B</a> =  set_COUNT_B
47
 
<br/>
48
 
 }</td></tr>
49
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Distance metrics codes defined for vectors A and B. </p>
50
 
 <a href="a00120.html#gac38d64c8b27b652413a664cddd4d40ab">More...</a><br/></td></tr>
 
37
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
 
38
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00041.html">bm::block_set_table&lt; T &gt;</a></td></tr>
 
39
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure keeps all-left/right ON bits masks.  <a href="a00041.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="a00012.html">bm::all_set&lt; T &gt;</a></td></tr>
 
41
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure carries pointer on bit block with all bits 1.  <a href="a00012.html#_details">More...</a><br/></td></tr>
 
42
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">bm::first_bit_table&lt; T &gt;</a></td></tr>
 
43
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure keeps index of first right 1 bit for every byte.  <a href="a00064.html#_details">More...</a><br/></td></tr>
 
44
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html">bm::bit_count_table&lt; T &gt;</a></td></tr>
 
45
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure to aid in counting bits table contains count of bits in 0-255 diapason of numbers.  <a href="a00023.html#_details">More...</a><br/></td></tr>
 
46
<tr><td colspan="2"><h2>Defines</h2></td></tr>
 
47
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga967f6a5264f47d8adb93f6bdf8cdc129">BM_INCWORD_BITCOUNT</a>(cnt, w)&nbsp;&nbsp;&nbsp;cnt += _mm_popcnt_u32(w);</td></tr>
51
48
<tr><td colspan="2"><h2>Functions</h2></td></tr>
52
 
<tr><td class="memItemLeft" align="right" valign="top">distance_metric&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga158946ea41ca66c3e1bca62c92684788">bm::operation2metric</a> (set_operation op)</td></tr>
53
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert set operation into compatible distance metric.  <a href="#ga158946ea41ca66c3e1bca62c92684788"></a><br/></td></tr>
54
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
55
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga815fef76f02576ab9ab58de0a45d8a4b">bm::distance_operation</a> (const BV &amp;bv1, const BV &amp;bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
56
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Distance computing template function.  <a href="#ga815fef76f02576ab9ab58de0a45d8a4b"></a><br/></td></tr>
57
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
58
 
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaa66525fd7a3f823d73678252a235982e">bm::distance_operation_any</a> (const BV &amp;bv1, const BV &amp;bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
59
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Distance screening template function.  <a href="#gaa66525fd7a3f823d73678252a235982e"></a><br/></td></tr>
60
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
61
 
<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="a00120.html#gae451cb4b87e8c0859b0614d2ffb99737">bm::count_and</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
62
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes bitcount of AND operation of two bitsets.  <a href="#gae451cb4b87e8c0859b0614d2ffb99737"></a><br/></td></tr>
63
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
64
 
<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="a00120.html#ga2d5393e05bcfc540840a4cee67fb771f">bm::any_and</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
65
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes if there is any bit in AND operation of two bitsets.  <a href="#ga2d5393e05bcfc540840a4cee67fb771f"></a><br/></td></tr>
66
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
67
 
<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="a00120.html#gafc64a082dcaee07f70f7faf3e24f844e">bm::count_xor</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
68
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes bitcount of XOR operation of two bitsets.  <a href="#gafc64a082dcaee07f70f7faf3e24f844e"></a><br/></td></tr>
69
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
70
 
<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="a00120.html#ga2d63f41244b82d233acb53d88b326b82">bm::any_xor</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
71
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes if there is any bit in XOR operation of two bitsets.  <a href="#ga2d63f41244b82d233acb53d88b326b82"></a><br/></td></tr>
72
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
73
 
<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="a00120.html#ga902d8c1cd1f8a2538cd47d47f5d8d605">bm::count_sub</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
74
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes bitcount of SUB operation of two bitsets.  <a href="#ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><br/></td></tr>
75
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
76
 
<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="a00120.html#gabde2e210b9b1edd190e1f5a9ff22344c">bm::any_sub</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
77
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes if there is any bit in SUB operation of two bitsets.  <a href="#gabde2e210b9b1edd190e1f5a9ff22344c"></a><br/></td></tr>
78
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
79
 
<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="a00120.html#ga803c564668703fc3bf80067570c2c905">bm::count_or</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
80
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes bitcount of OR operation of two bitsets.  <a href="#ga803c564668703fc3bf80067570c2c905"></a><br/></td></tr>
81
 
<tr><td class="memTemplParams" colspan="2">template&lt;class BV &gt; </td></tr>
82
 
<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="a00120.html#gaeda4f0cf54aa464cec09e740100caa79">bm::any_or</a> (const BV &amp;bv1, const BV &amp;bv2)</td></tr>
83
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes if there is any bit in OR operation of two bitsets.  <a href="#gaeda4f0cf54aa464cec09e740100caa79"></a><br/></td></tr>
 
49
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaef40342b0c318391df3db2b891acf7c1">bm::word_bitcount</a> (<a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> w)</td></tr>
 
50
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
51
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gafee2e8361c2e90a67dbaf9c7559d50e4">bm::wordcmp0</a> (T w1, T w2)</td></tr>
 
52
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes.  <a href="#gafee2e8361c2e90a67dbaf9c7559d50e4"></a><br/></td></tr>
 
53
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
54
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga5847533a73b7a5125fe5c2888ec827bd">bm::wordcmp</a> (T a, T b)</td></tr>
 
55
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes.  <a href="#ga5847533a73b7a5125fe5c2888ec827bd"></a><br/></td></tr>
 
56
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga2becf9a16ec20ab124ca8938e34b4aa8">bm::set_bit</a> (unsigned *dest, unsigned bitpos)</td></tr>
 
57
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set 1 bit in a block.  <a href="#ga2becf9a16ec20ab124ca8938e34b4aa8"></a><br/></td></tr>
 
58
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga9bccc586aa791f98f1bec284b799102c">bm::test_bit</a> (const unsigned *block, unsigned bitpos)</td></tr>
 
59
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test 1 bit in a block.  <a href="#ga9bccc586aa791f98f1bec284b799102c"></a><br/></td></tr>
 
60
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gad698b5242f5b629aa28e7338b7150497">bm::or_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
 
61
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets bits to 1 in the bitblock.  <a href="#gad698b5242f5b629aa28e7338b7150497"></a><br/></td></tr>
 
62
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaceaa54aa59b16299f5a87b925715e5e8">bm::sub_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
 
63
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SUB (AND NOT) bit interval to 1 in the bitblock.  <a href="#gaceaa54aa59b16299f5a87b925715e5e8"></a><br/></td></tr>
 
64
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga6191abb017003b633fab24e0c6357521">bm::xor_bit_block</a> (unsigned *dest, unsigned bitpos, unsigned bitcount)</td></tr>
 
65
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XOR bit interval to 1 in the bitblock.  <a href="#ga6191abb017003b633fab24e0c6357521"></a><br/></td></tr>
 
66
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
67
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gab87384cbf46a04d86c008ab2463d02cc">bm::gap_bitset_and_count</a> (const unsigned *block, const T *buf)</td></tr>
 
68
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount of bit block AND masked by GAP block.  <a href="#gab87384cbf46a04d86c008ab2463d02cc"></a><br/></td></tr>
 
69
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
70
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gad6e40898b8836ae1923b06a3d028fcaa">bm::gap_bitset_and_any</a> (const unsigned *block, const T *buf)</td></tr>
 
71
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitcount test of bit block AND masked by GAP block.  <a href="#gad6e40898b8836ae1923b06a3d028fcaa"></a><br/></td></tr>
 
72
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
73
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga15a780da58d5aeb67ffc51c84fa6152e">bm::gap_bitset_sub_count</a> (const unsigned *block, const T *buf)</td></tr>
 
74
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount of bit block SUB masked by GAP block.  <a href="#ga15a780da58d5aeb67ffc51c84fa6152e"></a><br/></td></tr>
 
75
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
76
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaab7c711122e8f189555dffd83a21111c">bm::gap_bitset_sub_any</a> (const unsigned *block, const T *buf)</td></tr>
 
77
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount test of bit block SUB masked by GAP block.  <a href="#gaab7c711122e8f189555dffd83a21111c"></a><br/></td></tr>
 
78
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
79
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga803fbc7c790f07b14175303e524bd2d8">bm::gap_bitset_xor_count</a> (const unsigned *block, const T *buf)</td></tr>
 
80
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount of bit block XOR masked by GAP block.  <a href="#ga803fbc7c790f07b14175303e524bd2d8"></a><br/></td></tr>
 
81
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
82
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gad0f7ee00f84ea357d55e6a2f507c8918">bm::gap_bitset_xor_any</a> (const unsigned *block, const T *buf)</td></tr>
 
83
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount test of bit block XOR masked by GAP block.  <a href="#gad0f7ee00f84ea357d55e6a2f507c8918"></a><br/></td></tr>
 
84
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
85
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga23733890861063a59f787e26763a734a">bm::gap_bitset_or_count</a> (const unsigned *block, const T *buf)</td></tr>
 
86
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount of bit block OR masked by GAP block.  <a href="#ga23733890861063a59f787e26763a734a"></a><br/></td></tr>
 
87
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
88
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gad15f1b92c70752cd3b97fa9e0c585f00">bm::gap_bitset_or_any</a> (const unsigned *block, const T *buf)</td></tr>
 
89
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute bitcount test of bit block OR masked by GAP block.  <a href="#gad15f1b92c70752cd3b97fa9e0c585f00"></a><br/></td></tr>
 
90
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaada8b13c35acd8df90129b45edcfc5de">bm::bit_block_set</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> value)</td></tr>
 
91
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitblock memset operation.  <a href="#gaada8b13c35acd8df90129b45edcfc5de"></a><br/></td></tr>
 
92
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
93
<tr><td class="memTemplItemLeft" align="right" valign="top">int&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga91fe9566575d9d66e1bb9d030b3d29a0">bm::bitcmp</a> (const T *buf1, const T *buf2, unsigned len)</td></tr>
 
94
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lexicographical comparison of BIT buffers.  <a href="#ga91fe9566575d9d66e1bb9d030b3d29a0"></a><br/></td></tr>
 
95
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gab30df14a61f036d690c091878feaff1c">bm::bit_block_calc_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block_end)</td></tr>
 
96
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitcount for bit string.  <a href="#gab30df14a61f036d690c091878feaff1c"></a><br/></td></tr>
 
97
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaafc87c4764bb30d95ba4088064a404e3">bm::bit_count_change</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> w)</td></tr>
 
98
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaca91016aeb08ae1b610d6d407aae0e4c">bm::bit_block_calc_count_change</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block_end, unsigned *bit_count)</td></tr>
 
99
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga2485f707b2629c5ce7681cf9fe385b91">bm::bit_block_calc_count_range</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> left, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> right)</td></tr>
 
100
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga503e0f3e79f819d9b58e4b0e905be116">bm::bit_block_any_range</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *block, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> left, <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> right)</td></tr>
 
101
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
102
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga95854f9969985254a0f58b928da0eec6">bm::bit_invert</a> (T *start, T *end)</td></tr>
 
103
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga97b1075250d4bf10f596ff2fbc334ceb">bm::is_bits_one</a> (const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *start, const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *end)</td></tr>
 
104
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns "true" if all bits in the block are 1.  <a href="#ga97b1075250d4bf10f596ff2fbc334ceb"></a><br/></td></tr>
 
105
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gac6cfb9f92e4df6bb4c76f6efb2382860">bm::bit_is_all_zero</a> (const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *start, const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *end)</td></tr>
 
106
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns "true" if all bits in the block are 0.  <a href="#gac6cfb9f92e4df6bb4c76f6efb2382860"></a><br/></td></tr>
 
107
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga9090de87d53e7f25eff96c8259b3485c">bm::bit_block_copy</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
108
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitblock copy operation.  <a href="#ga9090de87d53e7f25eff96c8259b3485c"></a><br/></td></tr>
 
109
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga882f79df0a0175ad4ddf483c5f1eeb0e">bm::bit_block_and</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
110
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plain bitblock AND operation. Function does not analyse availability of source and destination blocks.  <a href="#ga882f79df0a0175ad4ddf483c5f1eeb0e"></a><br/></td></tr>
 
111
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga0070984bb1d332610150a9106ab8eb0a">bm::bit_block_and_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src2)</td></tr>
 
112
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function ANDs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks.  <a href="#ga0070984bb1d332610150a9106ab8eb0a"></a><br/></td></tr>
 
113
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga9fe2d12ddac5293fe53038c687c732f3">bm::bit_block_and_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src2)</td></tr>
 
114
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function ANDs two bitblocks and tests for any bit. Function does not analyse availability of source blocks.  <a href="#ga9fe2d12ddac5293fe53038c687c732f3"></a><br/></td></tr>
 
115
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaf8af8cfe8b49407be1af7398da28c939">bm::bit_block_xor_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
116
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function XORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks.  <a href="#gaf8af8cfe8b49407be1af7398da28c939"></a><br/></td></tr>
 
117
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gafbc3ffafc859a503fdd2fc96e7fb60ce">bm::bit_block_xor_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
118
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function XORs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks.  <a href="#gafbc3ffafc859a503fdd2fc96e7fb60ce"></a><br/></td></tr>
 
119
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gad34175255e9860a572fcf2e664a6de8e">bm::bit_block_sub_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
120
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function SUBs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks.  <a href="#gad34175255e9860a572fcf2e664a6de8e"></a><br/></td></tr>
 
121
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga3f51735d2ca08e5a9fae2c9c49138c5c">bm::bit_block_sub_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
122
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function SUBs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks.  <a href="#ga3f51735d2ca08e5a9fae2c9c49138c5c"></a><br/></td></tr>
 
123
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gacf4f8ab164277278448a541863c07517">bm::bit_block_or_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *src2)</td></tr>
 
124
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function ORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks.  <a href="#gacf4f8ab164277278448a541863c07517"></a><br/></td></tr>
 
125
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gab2047495f7844d3014ff697503669d24">bm::bit_block_or_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
126
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function ORs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks.  <a href="#gab2047495f7844d3014ff697503669d24"></a><br/></td></tr>
 
127
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga869fce5348076d4c7b92adcc2f1a49ab">bm::bit_operation_and</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
128
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">bitblock AND operation.  <a href="#ga869fce5348076d4c7b92adcc2f1a49ab"></a><br/></td></tr>
 
129
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga9765914087df2fc22ec18db8128f2a12">bm::bit_operation_and_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
130
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock AND operation and calculates bitcount of the result.  <a href="#ga9765914087df2fc22ec18db8128f2a12"></a><br/></td></tr>
 
131
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga0e7995f7d6c791f6ff27a8dd21d324e5">bm::bit_operation_and_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
132
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock AND operation test.  <a href="#ga0e7995f7d6c791f6ff27a8dd21d324e5"></a><br/></td></tr>
 
133
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaabb39bf01bf973cb7bf3648873921ab7">bm::bit_operation_sub_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
134
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock SUB operation and calculates bitcount of the result.  <a href="#gaabb39bf01bf973cb7bf3648873921ab7"></a><br/></td></tr>
 
135
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga53867faf377db72324b858a37063c0b8">bm::bit_operation_sub_count_inv</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
136
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs inverted bitblock SUB operation and calculates bitcount of the result.  <a href="#ga53867faf377db72324b858a37063c0b8"></a><br/></td></tr>
 
137
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga847d5a84673b284be984f0db583e2723">bm::bit_operation_sub_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
138
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock test of SUB operation.  <a href="#ga847d5a84673b284be984f0db583e2723"></a><br/></td></tr>
 
139
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga5a267aff3b56cc6dadf5a3a338e00a1d">bm::bit_operation_or_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
140
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock OR operation and calculates bitcount of the result.  <a href="#ga5a267aff3b56cc6dadf5a3a338e00a1d"></a><br/></td></tr>
 
141
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga6d26742bdc373074474a6932eab4f388">bm::bit_operation_or_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
142
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock OR operation test.  <a href="#ga6d26742bdc373074474a6932eab4f388"></a><br/></td></tr>
 
143
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga3515d8eb5da7f9d41d63dc90ad9523a4">bm::bit_block_or</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
144
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plain bitblock OR operation. Function does not analyse availability of source and destination blocks.  <a href="#ga3515d8eb5da7f9d41d63dc90ad9523a4"></a><br/></td></tr>
 
145
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga0e945a9eaae699ad40f63b3f0632e6f9">bm::bit_operation_or</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
146
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Block OR operation. Makes analysis if block is 0 or FULL.  <a href="#ga0e945a9eaae699ad40f63b3f0632e6f9"></a><br/></td></tr>
 
147
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gafed81435f74c0542857842d4461686e4">bm::bit_block_sub</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
148
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plain bitblock SUB (AND NOT) operation. Function does not analyse availability of source and destination blocks.  <a href="#gafed81435f74c0542857842d4461686e4"></a><br/></td></tr>
 
149
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gad7afa9bce28a376360ca4826960d669f">bm::bit_operation_sub</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
150
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">bitblock SUB operation.  <a href="#gad7afa9bce28a376360ca4826960d669f"></a><br/></td></tr>
 
151
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gae6a46c5e671ea1c9312219ceb41025ef">bm::bit_block_xor</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
152
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plain bitblock XOR operation. Function does not analyse availability of source and destination blocks.  <a href="#gae6a46c5e671ea1c9312219ceb41025ef"></a><br/></td></tr>
 
153
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga179de722e87ccf8189d975ca6beed025">bm::bit_operation_xor</a> (<a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT dst, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src)</td></tr>
 
154
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">bitblock XOR operation.  <a href="#ga179de722e87ccf8189d975ca6beed025"></a><br/></td></tr>
 
155
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gace08ab77feefb638daee164ee83118bc">bm::bit_operation_xor_count</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
156
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock XOR operation and calculates bitcount of the result.  <a href="#gace08ab77feefb638daee164ee83118bc"></a><br/></td></tr>
 
157
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gaa86561b6d11c3f01dd772563c692f732">bm::bit_operation_xor_any</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src1_end, const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT src2)</td></tr>
 
158
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs bitblock XOR operation test.  <a href="#gaa86561b6d11c3f01dd772563c692f732"></a><br/></td></tr>
 
159
<tr><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
 
160
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga0ff158706f2e194be67fb8267641c30a">bm::bit_count_nonzero_size</a> (const T *blk, unsigned data_size)</td></tr>
 
161
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inspects block for full zero words.  <a href="#ga0ff158706f2e194be67fb8267641c30a"></a><br/></td></tr>
 
162
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gad6a7c549a625df7aa7d68d43a57238c7">bm::bit_find_in_block</a> (const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *data, unsigned nbit, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *prev)</td></tr>
 
163
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Searches for the next 1 bit in the BIT block.  <a href="#gad6a7c549a625df7aa7d68d43a57238c7"></a><br/></td></tr>
 
164
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename F &gt; </td></tr>
 
165
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gab9f80b3c898323ce77beb915e4c861f3">bm::bit_for_each_4</a> (T w, F &amp;func)</td></tr>
 
166
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Templated algorithm to unpacks octet based word into list of ON bit indexes.  <a href="#gab9f80b3c898323ce77beb915e4c861f3"></a><br/></td></tr>
 
167
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename F &gt; </td></tr>
 
168
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga24be2ad5d8c2a8f18fdad142452aaae8">bm::bit_for_each</a> (T w, F &amp;func)</td></tr>
 
169
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Templated algorithm to unpacks word into list of ON bit indexes.  <a href="#ga24be2ad5d8c2a8f18fdad142452aaae8"></a><br/></td></tr>
 
170
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename B &gt; </td></tr>
 
171
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga3c81f6bff8866ec3ed0a94903eee96b7">bm::bit_list_4</a> (T w, B *bits)</td></tr>
 
172
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unpacks word into list of ON bit indexes (quad-bit based).  <a href="#ga3c81f6bff8866ec3ed0a94903eee96b7"></a><br/></td></tr>
 
173
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , typename B &gt; </td></tr>
 
174
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaae3ae537760044543f842363e4614e82">bm::bit_list</a> (T w, B *bits)</td></tr>
 
175
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unpacks word into list of ON bit indexes.  <a href="#gaae3ae537760044543f842363e4614e82"></a><br/></td></tr>
 
176
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#a593916a103395805070a3200720c6416">bm::set_representation</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga20610fae6b0de84957b74ed17429667f">bm::best_representation</a> (unsigned bit_count, unsigned total_possible_bitcount, unsigned gap_count, unsigned block_size)</td></tr>
 
177
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Choose best representation for a bit-block.  <a href="#ga20610fae6b0de84957b74ed17429667f"></a><br/></td></tr>
 
178
<tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
 
179
<tr><td class="memTemplItemLeft" align="right" valign="top">T&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaf24d85761f60877c2260f8160593f732">bm::bit_convert_to_arr</a> (T *BMRESTRICT dest, const unsigned *BMRESTRICT src, <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bits, unsigned dest_len, unsigned mask=0)</td></tr>
 
180
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert bit block into an array of ints corresponding to 1 bits.  <a href="#gaf24d85761f60877c2260f8160593f732"></a><br/></td></tr>
 
181
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , unsigned BPC, unsigned BPS&gt; </td></tr>
 
182
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga3fe02492f64cd8a9dfbb1a00ec71c0ae">bm::tmatrix_distance</a> (const T tmatrix[BPC][BPS], unsigned distance[BPC][BPC])</td></tr>
 
183
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compute pairwise Row x Row Humming distances on plains(rows) of the transposed bit block.  <a href="#ga3fe02492f64cd8a9dfbb1a00ec71c0ae"></a><br/></td></tr>
 
184
<tr><td class="memTemplParams" colspan="2">template&lt;typename T , unsigned BPC, unsigned BPS&gt; </td></tr>
 
185
<tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gabdc11d48fda6a69873eefd219c4b7e75">bm::bit_iblock_make_pcv</a> (const unsigned distance[BPC][BPC], unsigned char *pc_vector)</td></tr>
 
186
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">!&lt; ibpc limiter  <a href="#gabdc11d48fda6a69873eefd219c4b7e75"></a><br/></td></tr>
84
187
</table>
85
188
<hr/><a name="_details"></a><h2>Detailed Description</h2>
86
 
<p>Algorithms to compute binary distance metrics </p>
87
 
<hr/><h2>Enumeration Type Documentation</h2>
88
 
<a class="anchor" id="gac38d64c8b27b652413a664cddd4d40ab"></a><!-- doxytag: member="bm::distance_metric" ref="gac38d64c8b27b652413a664cddd4d40ab" args="" -->
 
189
<p>Bit functions implement different opereations on bit blocks and serve as a minimal building blocks. </p>
 
190
<hr/><h2>Define Documentation</h2>
 
191
<a class="anchor" id="ga967f6a5264f47d8adb93f6bdf8cdc129"></a><!-- doxytag: member="bmdef.h::BM_INCWORD_BITCOUNT" ref="ga967f6a5264f47d8adb93f6bdf8cdc129" args="(cnt, w)" -->
89
192
<div class="memitem">
90
193
<div class="memproto">
91
194
      <table class="memname">
92
195
        <tr>
93
 
          <td class="memname">enum <a class="el" href="a00120.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a></td>
 
196
          <td class="memname">#define BM_INCWORD_BITCOUNT</td>
 
197
          <td>(</td>
 
198
          <td class="paramtype">cnt, </td>
 
199
        </tr>
 
200
        <tr>
 
201
          <td class="paramkey"></td>
 
202
          <td></td>
 
203
          <td class="paramtype">w&nbsp;</td>
 
204
          <td class="paramname"></td>
 
205
          <td>&nbsp;)&nbsp;</td>
 
206
          <td>&nbsp;&nbsp;&nbsp;cnt += _mm_popcnt_u32(w);</td>
94
207
        </tr>
95
208
      </table>
96
209
</div>
97
210
<div class="memdoc">
98
 
 
99
 
<p>Distance metrics codes defined for vectors A and B. </p>
100
 
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
101
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce"></a><!-- doxytag: member="COUNT_AND" ref="ggac38d64c8b27b652413a664cddd4d40abacb39376469ba778e9a9099ddbae5e7ce" args="" -->COUNT_AND</em>&nbsp;</td><td>
102
 
<p>(A &amp; B).count() </p>
103
 
</td></tr>
104
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061"></a><!-- doxytag: member="COUNT_XOR" ref="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061" args="" -->COUNT_XOR</em>&nbsp;</td><td>
105
 
<p>(A ^ B).count() </p>
106
 
</td></tr>
107
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb"></a><!-- doxytag: member="COUNT_OR" ref="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb" args="" -->COUNT_OR</em>&nbsp;</td><td>
108
 
<p>(A | B).count() </p>
109
 
</td></tr>
110
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62"></a><!-- doxytag: member="COUNT_SUB_AB" ref="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62" args="" -->COUNT_SUB_AB</em>&nbsp;</td><td>
111
 
<p>(A - B).count() </p>
112
 
</td></tr>
113
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400"></a><!-- doxytag: member="COUNT_SUB_BA" ref="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400" args="" -->COUNT_SUB_BA</em>&nbsp;</td><td>
114
 
<p>(B - A).count() </p>
115
 
</td></tr>
116
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2"></a><!-- doxytag: member="COUNT_A" ref="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2" args="" -->COUNT_A</em>&nbsp;</td><td>
117
 
<p>A.count(). </p>
118
 
</td></tr>
119
 
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516"></a><!-- doxytag: member="COUNT_B" ref="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516" args="" -->COUNT_B</em>&nbsp;</td><td>
120
 
<p>B.count(). </p>
121
 
</td></tr>
122
 
</table>
123
 
</dd>
124
 
</dl>
125
 
 
126
 
<p>Definition at line <a class="el" href="a00086_source.html#l00053">53</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
 
211
<p>Define calculates number of 1 bits in 32-bit word. </p>
 
212
 
 
213
<p>Definition at line <a class="el" href="a00092_source.html#l00168">168</a> of file <a class="el" href="a00092_source.html">bmdef.h</a>.</p>
 
214
 
 
215
<p>Referenced by <a class="el" href="a00093_source.html#l03179">bm::bit_block_and_count()</a>, <a class="el" href="a00093_source.html#l02505">bm::bit_block_calc_count()</a>, <a class="el" href="a00093_source.html#l02729">bm::bit_block_calc_count_range()</a>, <a class="el" href="a00093_source.html#l03420">bm::bit_block_or_count()</a>, <a class="el" href="a00093_source.html#l03341">bm::bit_block_sub_count()</a>, <a class="el" href="a00093_source.html#l03260">bm::bit_block_xor_count()</a>, <a class="el" href="a00093_source.html#l02565">bm::bit_count_change()</a>, <a class="el" href="a00093_source.html#l02581">bm::bit_count_change32()</a>, <a class="el" href="a00093_source.html#l04897">bm::bit_COUNT_B&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04886">bm::bit_COUNT_A&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04875">bm::bit_COUNT_SUB_BA&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04864">bm::bit_COUNT_SUB_AB&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04852">bm::bit_COUNT_OR&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04841">bm::bit_COUNT_XOR&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04830">bm::bit_COUNT_AND&lt; W &gt;::operator()()</a>, <a class="el" href="a00093_source.html#l04819">bm::bit_COUNT&lt; W &gt;::operator()()</a>, <a class="el" href="a00097_source.html#l00237">bm::sse2_bit_block_calc_count_change()</a>, and <a class="el" href="a00100_source.html#l00348">bm::tmatrix_distance()</a>.</p>
127
216
 
128
217
</div>
129
218
</div>
130
219
<hr/><h2>Function Documentation</h2>
131
 
<a class="anchor" id="ga2d5393e05bcfc540840a4cee67fb771f"></a><!-- doxytag: member="bm::any_and" ref="ga2d5393e05bcfc540840a4cee67fb771f" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
132
 
<div class="memitem">
133
 
<div class="memproto">
134
 
<div class="memtemplate">
135
 
template&lt;class BV &gt; </div>
136
 
      <table class="memname">
137
 
        <tr>
138
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_and </td>
139
 
          <td>(</td>
140
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
141
 
          <td class="paramname"> <em>bv1</em>, </td>
142
 
        </tr>
143
 
        <tr>
144
 
          <td class="paramkey"></td>
145
 
          <td></td>
146
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
147
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
148
 
        </tr>
149
 
        <tr>
150
 
          <td></td>
151
 
          <td>)</td>
152
 
          <td></td><td></td><td><code> [inline]</code></td>
153
 
        </tr>
154
 
      </table>
155
 
</div>
156
 
<div class="memdoc">
157
 
 
158
 
<p>Computes if there is any bit in AND operation of two bitsets. </p>
159
 
<dl><dt><b>Parameters:</b></dt><dd>
160
 
  <table border="0" cellspacing="2" cellpadding="0">
161
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
162
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
163
 
  </table>
164
 
  </dd>
165
 
</dl>
166
 
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
167
 
 
168
 
<p>Definition at line <a class="el" href="a00086_source.html#l00959">959</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
169
 
 
170
 
<p>References <a class="el" href="a00086_source.html#l00055">bm::COUNT_AND</a>, <a class="el" href="a00086_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
171
 
 
172
 
</div>
173
 
</div>
174
 
<a class="anchor" id="gaeda4f0cf54aa464cec09e740100caa79"></a><!-- doxytag: member="bm::any_or" ref="gaeda4f0cf54aa464cec09e740100caa79" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
175
 
<div class="memitem">
176
 
<div class="memproto">
177
 
<div class="memtemplate">
178
 
template&lt;class BV &gt; </div>
179
 
      <table class="memname">
180
 
        <tr>
181
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_or </td>
182
 
          <td>(</td>
183
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
184
 
          <td class="paramname"> <em>bv1</em>, </td>
185
 
        </tr>
186
 
        <tr>
187
 
          <td class="paramkey"></td>
188
 
          <td></td>
189
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
190
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
191
 
        </tr>
192
 
        <tr>
193
 
          <td></td>
194
 
          <td>)</td>
195
 
          <td></td><td></td><td><code> [inline]</code></td>
196
 
        </tr>
197
 
      </table>
198
 
</div>
199
 
<div class="memdoc">
200
 
 
201
 
<p>Computes if there is any bit in OR operation of two bitsets. </p>
202
 
<dl><dt><b>Parameters:</b></dt><dd>
203
 
  <table border="0" cellspacing="2" cellpadding="0">
204
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
205
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
206
 
  </table>
207
 
  </dd>
208
 
</dl>
209
 
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
210
 
 
211
 
<p>Definition at line <a class="el" href="a00086_source.html#l01061">1061</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
212
 
 
213
 
<p>References <a class="el" href="a00086_source.html#l00057">bm::COUNT_OR</a>, <a class="el" href="a00086_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
214
 
 
215
 
</div>
216
 
</div>
217
 
<a class="anchor" id="gabde2e210b9b1edd190e1f5a9ff22344c"></a><!-- doxytag: member="bm::any_sub" ref="gabde2e210b9b1edd190e1f5a9ff22344c" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
218
 
<div class="memitem">
219
 
<div class="memproto">
220
 
<div class="memtemplate">
221
 
template&lt;class BV &gt; </div>
222
 
      <table class="memname">
223
 
        <tr>
224
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_sub </td>
225
 
          <td>(</td>
226
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
227
 
          <td class="paramname"> <em>bv1</em>, </td>
228
 
        </tr>
229
 
        <tr>
230
 
          <td class="paramkey"></td>
231
 
          <td></td>
232
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
233
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
234
 
        </tr>
235
 
        <tr>
236
 
          <td></td>
237
 
          <td>)</td>
238
 
          <td></td><td></td><td><code> [inline]</code></td>
239
 
        </tr>
240
 
      </table>
241
 
</div>
242
 
<div class="memdoc">
243
 
 
244
 
<p>Computes if there is any bit in SUB operation of two bitsets. </p>
245
 
<dl><dt><b>Parameters:</b></dt><dd>
246
 
  <table border="0" cellspacing="2" cellpadding="0">
247
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
248
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
249
 
  </table>
250
 
  </dd>
251
 
</dl>
252
 
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
253
 
 
254
 
<p>Definition at line <a class="el" href="a00086_source.html#l01028">1028</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
255
 
 
256
 
<p>References <a class="el" href="a00086_source.html#l00058">bm::COUNT_SUB_AB</a>, <a class="el" href="a00086_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
257
 
 
258
 
</div>
259
 
</div>
260
 
<a class="anchor" id="ga2d63f41244b82d233acb53d88b326b82"></a><!-- doxytag: member="bm::any_xor" ref="ga2d63f41244b82d233acb53d88b326b82" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
261
 
<div class="memitem">
262
 
<div class="memproto">
263
 
<div class="memtemplate">
264
 
template&lt;class BV &gt; </div>
265
 
      <table class="memname">
266
 
        <tr>
267
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_xor </td>
268
 
          <td>(</td>
269
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
270
 
          <td class="paramname"> <em>bv1</em>, </td>
271
 
        </tr>
272
 
        <tr>
273
 
          <td class="paramkey"></td>
274
 
          <td></td>
275
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
276
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
277
 
        </tr>
278
 
        <tr>
279
 
          <td></td>
280
 
          <td>)</td>
281
 
          <td></td><td></td><td><code> [inline]</code></td>
282
 
        </tr>
283
 
      </table>
284
 
</div>
285
 
<div class="memdoc">
286
 
 
287
 
<p>Computes if there is any bit in XOR operation of two bitsets. </p>
288
 
<dl><dt><b>Parameters:</b></dt><dd>
289
 
  <table border="0" cellspacing="2" cellpadding="0">
290
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
291
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
292
 
  </table>
293
 
  </dd>
294
 
</dl>
295
 
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
296
 
 
297
 
<p>Definition at line <a class="el" href="a00086_source.html#l00993">993</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
298
 
 
299
 
<p>References <a class="el" href="a00086_source.html#l00056">bm::COUNT_XOR</a>, <a class="el" href="a00086_source.html#l00807">bm::distance_operation_any()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
300
 
 
301
 
</div>
302
 
</div>
303
 
<a class="anchor" id="gae451cb4b87e8c0859b0614d2ffb99737"></a><!-- doxytag: member="bm::count_and" ref="gae451cb4b87e8c0859b0614d2ffb99737" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
304
 
<div class="memitem">
305
 
<div class="memproto">
306
 
<div class="memtemplate">
307
 
template&lt;class BV &gt; </div>
308
 
      <table class="memname">
309
 
        <tr>
310
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_and </td>
311
 
          <td>(</td>
312
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
313
 
          <td class="paramname"> <em>bv1</em>, </td>
314
 
        </tr>
315
 
        <tr>
316
 
          <td class="paramkey"></td>
317
 
          <td></td>
318
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
319
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
320
 
        </tr>
321
 
        <tr>
322
 
          <td></td>
323
 
          <td>)</td>
324
 
          <td></td><td></td><td><code> [inline]</code></td>
325
 
        </tr>
326
 
      </table>
327
 
</div>
328
 
<div class="memdoc">
329
 
 
330
 
<p>Computes bitcount of AND operation of two bitsets. </p>
331
 
<dl><dt><b>Parameters:</b></dt><dd>
332
 
  <table border="0" cellspacing="2" cellpadding="0">
333
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
334
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
335
 
  </table>
336
 
  </dd>
337
 
</dl>
338
 
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
339
 
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a3">sample9.cpp</a>.</dd>
340
 
</dl>
341
 
<p>Definition at line <a class="el" href="a00086_source.html#l00943">943</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
342
 
 
343
 
<p>References <a class="el" href="a00086_source.html#l00055">bm::COUNT_AND</a>, <a class="el" href="a00086_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
344
 
 
345
 
<p>Referenced by <a class="el" href="a00109_source.html#l00047">main()</a>.</p>
346
 
 
347
 
</div>
348
 
</div>
349
 
<a class="anchor" id="ga803c564668703fc3bf80067570c2c905"></a><!-- doxytag: member="bm::count_or" ref="ga803c564668703fc3bf80067570c2c905" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
350
 
<div class="memitem">
351
 
<div class="memproto">
352
 
<div class="memtemplate">
353
 
template&lt;class BV &gt; </div>
354
 
      <table class="memname">
355
 
        <tr>
356
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_or </td>
357
 
          <td>(</td>
358
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
359
 
          <td class="paramname"> <em>bv1</em>, </td>
360
 
        </tr>
361
 
        <tr>
362
 
          <td class="paramkey"></td>
363
 
          <td></td>
364
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
365
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
366
 
        </tr>
367
 
        <tr>
368
 
          <td></td>
369
 
          <td>)</td>
370
 
          <td></td><td></td><td><code> [inline]</code></td>
371
 
        </tr>
372
 
      </table>
373
 
</div>
374
 
<div class="memdoc">
375
 
 
376
 
<p>Computes bitcount of OR operation of two bitsets. </p>
377
 
<dl><dt><b>Parameters:</b></dt><dd>
378
 
  <table border="0" cellspacing="2" cellpadding="0">
379
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
380
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
381
 
  </table>
382
 
  </dd>
383
 
</dl>
384
 
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
385
 
 
386
 
<p>Definition at line <a class="el" href="a00086_source.html#l01045">1045</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
387
 
 
388
 
<p>References <a class="el" href="a00086_source.html#l00057">bm::COUNT_OR</a>, <a class="el" href="a00086_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
389
 
 
390
 
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>.</p>
391
 
 
392
 
</div>
393
 
</div>
394
 
<a class="anchor" id="ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><!-- doxytag: member="bm::count_sub" ref="ga902d8c1cd1f8a2538cd47d47f5d8d605" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
395
 
<div class="memitem">
396
 
<div class="memproto">
397
 
<div class="memtemplate">
398
 
template&lt;class BV &gt; </div>
399
 
      <table class="memname">
400
 
        <tr>
401
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_sub </td>
402
 
          <td>(</td>
403
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
404
 
          <td class="paramname"> <em>bv1</em>, </td>
405
 
        </tr>
406
 
        <tr>
407
 
          <td class="paramkey"></td>
408
 
          <td></td>
409
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
410
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
411
 
        </tr>
412
 
        <tr>
413
 
          <td></td>
414
 
          <td>)</td>
415
 
          <td></td><td></td><td><code> [inline]</code></td>
416
 
        </tr>
417
 
      </table>
418
 
</div>
419
 
<div class="memdoc">
420
 
 
421
 
<p>Computes bitcount of SUB operation of two bitsets. </p>
422
 
<dl><dt><b>Parameters:</b></dt><dd>
423
 
  <table border="0" cellspacing="2" cellpadding="0">
424
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
425
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
426
 
  </table>
427
 
  </dd>
428
 
</dl>
429
 
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
430
 
 
431
 
<p>Definition at line <a class="el" href="a00086_source.html#l01011">1011</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
432
 
 
433
 
<p>References <a class="el" href="a00086_source.html#l00058">bm::COUNT_SUB_AB</a>, <a class="el" href="a00086_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
434
 
 
435
 
</div>
436
 
</div>
437
 
<a class="anchor" id="gafc64a082dcaee07f70f7faf3e24f844e"></a><!-- doxytag: member="bm::count_xor" ref="gafc64a082dcaee07f70f7faf3e24f844e" args="(const BV &amp;bv1, const BV &amp;bv2)" -->
438
 
<div class="memitem">
439
 
<div class="memproto">
440
 
<div class="memtemplate">
441
 
template&lt;class BV &gt; </div>
442
 
      <table class="memname">
443
 
        <tr>
444
 
          <td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_xor </td>
445
 
          <td>(</td>
446
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
447
 
          <td class="paramname"> <em>bv1</em>, </td>
448
 
        </tr>
449
 
        <tr>
450
 
          <td class="paramkey"></td>
451
 
          <td></td>
452
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
453
 
          <td class="paramname"> <em>bv2</em></td><td>&nbsp;</td>
454
 
        </tr>
455
 
        <tr>
456
 
          <td></td>
457
 
          <td>)</td>
458
 
          <td></td><td></td><td><code> [inline]</code></td>
459
 
        </tr>
460
 
      </table>
461
 
</div>
462
 
<div class="memdoc">
463
 
 
464
 
<p>Computes bitcount of XOR operation of two bitsets. </p>
465
 
<dl><dt><b>Parameters:</b></dt><dd>
466
 
  <table border="0" cellspacing="2" cellpadding="0">
467
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
468
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- Argument bit-vector. </td></tr>
469
 
  </table>
470
 
  </dd>
471
 
</dl>
472
 
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
473
 
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a2">sample9.cpp</a>.</dd>
474
 
</dl>
475
 
<p>Definition at line <a class="el" href="a00086_source.html#l00977">977</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
476
 
 
477
 
<p>References <a class="el" href="a00086_source.html#l00056">bm::COUNT_XOR</a>, <a class="el" href="a00086_source.html#l00688">bm::distance_operation()</a>, and <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>.</p>
478
 
 
479
 
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>, and <a class="el" href="a00109_source.html#l00047">main()</a>.</p>
480
 
 
481
 
</div>
482
 
</div>
483
 
<a class="anchor" id="ga815fef76f02576ab9ab58de0a45d8a4b"></a><!-- doxytag: member="bm::distance_operation" ref="ga815fef76f02576ab9ab58de0a45d8a4b" args="(const BV &amp;bv1, const BV &amp;bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
484
 
<div class="memitem">
485
 
<div class="memproto">
486
 
<div class="memtemplate">
487
 
template&lt;class BV &gt; </div>
488
 
      <table class="memname">
489
 
        <tr>
490
 
          <td class="memname">void bm::distance_operation </td>
491
 
          <td>(</td>
492
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
493
 
          <td class="paramname"> <em>bv1</em>, </td>
494
 
        </tr>
495
 
        <tr>
496
 
          <td class="paramkey"></td>
497
 
          <td></td>
498
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
499
 
          <td class="paramname"> <em>bv2</em>, </td>
500
 
        </tr>
501
 
        <tr>
502
 
          <td class="paramkey"></td>
503
 
          <td></td>
504
 
          <td class="paramtype">distance_metric_descriptor *&nbsp;</td>
505
 
          <td class="paramname"> <em>dmit</em>, </td>
506
 
        </tr>
507
 
        <tr>
508
 
          <td class="paramkey"></td>
509
 
          <td></td>
510
 
          <td class="paramtype">distance_metric_descriptor *&nbsp;</td>
511
 
          <td class="paramname"> <em>dmit_end</em></td><td>&nbsp;</td>
512
 
        </tr>
513
 
        <tr>
514
 
          <td></td>
515
 
          <td>)</td>
516
 
          <td></td><td></td><td><code> [inline]</code></td>
517
 
        </tr>
518
 
      </table>
519
 
</div>
520
 
<div class="memdoc">
521
 
 
522
 
<p>Distance computing template function. </p>
523
 
<p>Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes all metrics saves result into corresponding pipeline results (<a class="el" href="a00060.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
524
 
<dl><dt><b>Parameters:</b></dt><dd>
525
 
  <table border="0" cellspacing="2" cellpadding="0">
526
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- argument bitvector 1 (A) </td></tr>
527
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- argument bitvector 2 (B) </td></tr>
528
 
    <tr><td valign="top"></td><td valign="top"><em>dmit</em>&nbsp;</td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
529
 
    <tr><td valign="top"></td><td valign="top"><em>dmit_end</em>&nbsp;</td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
530
 
  </table>
531
 
  </dd>
532
 
</dl>
533
 
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a10">sample9.cpp</a>.</dd>
534
 
</dl>
535
 
<p>Definition at line <a class="el" href="a00086_source.html#l00688">688</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
536
 
 
537
 
<p>References <a class="el" href="a00089_source.html#l00094">BM_IS_GAP</a>, <a class="el" href="a00089_source.html#l00136">BM_SET_MMX_GUARD</a>, <a class="el" href="a00086_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00086_source.html#l00642">bm::distance_stage()</a>, and <a class="el" href="a00088_source.html#l00080">bm::set_array_size</a>.</p>
538
 
 
539
 
<p>Referenced by <a class="el" href="a00086_source.html#l00943">bm::count_and()</a>, <a class="el" href="a00086_source.html#l01045">bm::count_or()</a>, <a class="el" href="a00086_source.html#l01011">bm::count_sub()</a>, <a class="el" href="a00086_source.html#l00977">bm::count_xor()</a>, and <a class="el" href="a00109_source.html#l00047">main()</a>.</p>
540
 
 
541
 
</div>
542
 
</div>
543
 
<a class="anchor" id="gaa66525fd7a3f823d73678252a235982e"></a><!-- doxytag: member="bm::distance_operation_any" ref="gaa66525fd7a3f823d73678252a235982e" args="(const BV &amp;bv1, const BV &amp;bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
544
 
<div class="memitem">
545
 
<div class="memproto">
546
 
<div class="memtemplate">
547
 
template&lt;class BV &gt; </div>
548
 
      <table class="memname">
549
 
        <tr>
550
 
          <td class="memname">void bm::distance_operation_any </td>
551
 
          <td>(</td>
552
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
553
 
          <td class="paramname"> <em>bv1</em>, </td>
554
 
        </tr>
555
 
        <tr>
556
 
          <td class="paramkey"></td>
557
 
          <td></td>
558
 
          <td class="paramtype">const BV &amp;&nbsp;</td>
559
 
          <td class="paramname"> <em>bv2</em>, </td>
560
 
        </tr>
561
 
        <tr>
562
 
          <td class="paramkey"></td>
563
 
          <td></td>
564
 
          <td class="paramtype">distance_metric_descriptor *&nbsp;</td>
565
 
          <td class="paramname"> <em>dmit</em>, </td>
566
 
        </tr>
567
 
        <tr>
568
 
          <td class="paramkey"></td>
569
 
          <td></td>
570
 
          <td class="paramtype">distance_metric_descriptor *&nbsp;</td>
571
 
          <td class="paramname"> <em>dmit_end</em></td><td>&nbsp;</td>
572
 
        </tr>
573
 
        <tr>
574
 
          <td></td>
575
 
          <td>)</td>
576
 
          <td></td><td></td><td><code> [inline]</code></td>
577
 
        </tr>
578
 
      </table>
579
 
</div>
580
 
<div class="memdoc">
581
 
 
582
 
<p>Distance screening template function. </p>
583
 
<p>Function receives two bitvectors and an array of distance metrics (metrics pipeline). Function computes possybility of a metric(any bit) saves result into corresponding pipeline results (<a class="el" href="a00060.html#a94c955fe1ac46589d6edc8df7fd35cf6">distance_metric_descriptor::result</a>) An important detail is that function reuses metric descriptors, incrementing received values. It allows you to accumulate results from different calls in the pipeline.</p>
584
 
<dl><dt><b>Parameters:</b></dt><dd>
585
 
  <table border="0" cellspacing="2" cellpadding="0">
586
 
    <tr><td valign="top"></td><td valign="top"><em>bv1</em>&nbsp;</td><td>- argument bitvector 1 (A) </td></tr>
587
 
    <tr><td valign="top"></td><td valign="top"><em>bv2</em>&nbsp;</td><td>- argument bitvector 2 (B) </td></tr>
588
 
    <tr><td valign="top"></td><td valign="top"><em>dmit</em>&nbsp;</td><td>- pointer to first element of metric descriptors array Input-Output parameter, receives metric code as input, computation is added to "result" field </td></tr>
589
 
    <tr><td valign="top"></td><td valign="top"><em>dmit_end</em>&nbsp;</td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
590
 
  </table>
591
 
  </dd>
592
 
</dl>
593
 
 
594
 
<p>Definition at line <a class="el" href="a00086_source.html#l00807">807</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
595
 
 
596
 
<p>References <a class="el" href="a00089_source.html#l00094">BM_IS_GAP</a>, <a class="el" href="a00089_source.html#l00136">BM_SET_MMX_GUARD</a>, <a class="el" href="a00086_source.html#l00343">bm::combine_any_operation_with_block()</a>, <a class="el" href="a00086_source.html#l00642">bm::distance_stage()</a>, <a class="el" href="a00086_source.html#l00086">bm::distance_metric_descriptor::result</a>, and <a class="el" href="a00088_source.html#l00080">bm::set_array_size</a>.</p>
597
 
 
598
 
<p>Referenced by <a class="el" href="a00086_source.html#l00959">bm::any_and()</a>, <a class="el" href="a00086_source.html#l01061">bm::any_or()</a>, <a class="el" href="a00086_source.html#l01028">bm::any_sub()</a>, and <a class="el" href="a00086_source.html#l00993">bm::any_xor()</a>.</p>
599
 
 
600
 
</div>
601
 
</div>
602
 
<a class="anchor" id="ga158946ea41ca66c3e1bca62c92684788"></a><!-- doxytag: member="bm::operation2metric" ref="ga158946ea41ca66c3e1bca62c92684788" args="(set_operation op)" -->
603
 
<div class="memitem">
604
 
<div class="memproto">
605
 
      <table class="memname">
606
 
        <tr>
607
 
          <td class="memname">distance_metric bm::operation2metric </td>
608
 
          <td>(</td>
609
 
          <td class="paramtype">set_operation&nbsp;</td>
610
 
          <td class="paramname"> <em>op</em></td>
 
220
<a class="anchor" id="ga20610fae6b0de84957b74ed17429667f"></a><!-- doxytag: member="bm::best_representation" ref="ga20610fae6b0de84957b74ed17429667f" args="(unsigned bit_count, unsigned total_possible_bitcount, unsigned gap_count, unsigned block_size)" -->
 
221
<div class="memitem">
 
222
<div class="memproto">
 
223
      <table class="memname">
 
224
        <tr>
 
225
          <td class="memname"><a class="el" href="a00115.html#a593916a103395805070a3200720c6416">bm::set_representation</a> bm::best_representation </td>
 
226
          <td>(</td>
 
227
          <td class="paramtype">unsigned&nbsp;</td>
 
228
          <td class="paramname"> <em>bit_count</em>, </td>
 
229
        </tr>
 
230
        <tr>
 
231
          <td class="paramkey"></td>
 
232
          <td></td>
 
233
          <td class="paramtype">unsigned&nbsp;</td>
 
234
          <td class="paramname"> <em>total_possible_bitcount</em>, </td>
 
235
        </tr>
 
236
        <tr>
 
237
          <td class="paramkey"></td>
 
238
          <td></td>
 
239
          <td class="paramtype">unsigned&nbsp;</td>
 
240
          <td class="paramname"> <em>gap_count</em>, </td>
 
241
        </tr>
 
242
        <tr>
 
243
          <td class="paramkey"></td>
 
244
          <td></td>
 
245
          <td class="paramtype">unsigned&nbsp;</td>
 
246
          <td class="paramname"> <em>block_size</em></td><td>&nbsp;</td>
 
247
        </tr>
 
248
        <tr>
 
249
          <td></td>
 
250
          <td>)</td>
 
251
          <td></td><td></td><td><code> [inline]</code></td>
 
252
        </tr>
 
253
      </table>
 
254
</div>
 
255
<div class="memdoc">
 
256
 
 
257
<p>Choose best representation for a bit-block. </p>
 
258
 
 
259
<p>Definition at line <a class="el" href="a00093_source.html#l04429">4429</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
260
 
 
261
<p>References <a class="el" href="a00091_source.html#l00130">bm::set_array0</a>, <a class="el" href="a00091_source.html#l00129">bm::set_array1</a>, <a class="el" href="a00091_source.html#l00127">bm::set_bitset</a>, and <a class="el" href="a00091_source.html#l00128">bm::set_gap</a>.</p>
 
262
 
 
263
<p>Referenced by <a class="el" href="a00100_source.html#l00683">bm::compute_tmatrix_rstat()</a>.</p>
 
264
 
 
265
</div>
 
266
</div>
 
267
<a class="anchor" id="ga882f79df0a0175ad4ddf483c5f1eeb0e"></a><!-- doxytag: member="bm::bit_block_and" ref="ga882f79df0a0175ad4ddf483c5f1eeb0e" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
268
<div class="memitem">
 
269
<div class="memproto">
 
270
      <table class="memname">
 
271
        <tr>
 
272
          <td class="memname">void bm::bit_block_and </td>
 
273
          <td>(</td>
 
274
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
275
          <td class="paramname"> <em>dst</em>, </td>
 
276
        </tr>
 
277
        <tr>
 
278
          <td class="paramkey"></td>
 
279
          <td></td>
 
280
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
281
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
282
        </tr>
 
283
        <tr>
 
284
          <td></td>
 
285
          <td>)</td>
 
286
          <td></td><td></td><td><code> [inline]</code></td>
 
287
        </tr>
 
288
      </table>
 
289
</div>
 
290
<div class="memdoc">
 
291
 
 
292
<p>Plain bitblock AND operation. Function does not analyse availability of source and destination blocks. </p>
 
293
<dl><dt><b>Parameters:</b></dt><dd>
 
294
  <table border="0" cellspacing="2" cellpadding="0">
 
295
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
296
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block. </td></tr>
 
297
  </table>
 
298
  </dd>
 
299
</dl>
 
300
 
 
301
<p>Definition at line <a class="el" href="a00093_source.html#l03145">3145</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
302
 
 
303
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00098_source.html#l00213">VECT_AND_ARR</a>.</p>
 
304
 
 
305
<p>Referenced by <a class="el" href="a00093_source.html#l03501">bm::bit_operation_and()</a>, and <a class="el" href="a00096_source.html#l02059">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_AND()</a>.</p>
 
306
 
 
307
</div>
 
308
</div>
 
309
<a class="anchor" id="ga9fe2d12ddac5293fe53038c687c732f3"></a><!-- doxytag: member="bm::bit_block_and_any" ref="ga9fe2d12ddac5293fe53038c687c732f3" args="(const bm::word_t *src1, const bm::word_t *src1_end, const bm::word_t *src2)" -->
 
310
<div class="memitem">
 
311
<div class="memproto">
 
312
      <table class="memname">
 
313
        <tr>
 
314
          <td class="memname">unsigned bm::bit_block_and_any </td>
 
315
          <td>(</td>
 
316
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
317
          <td class="paramname"> <em>src1</em>, </td>
 
318
        </tr>
 
319
        <tr>
 
320
          <td class="paramkey"></td>
 
321
          <td></td>
 
322
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
323
          <td class="paramname"> <em>src1_end</em>, </td>
 
324
        </tr>
 
325
        <tr>
 
326
          <td class="paramkey"></td>
 
327
          <td></td>
 
328
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
329
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
330
        </tr>
 
331
        <tr>
 
332
          <td></td>
 
333
          <td>)</td>
 
334
          <td></td><td></td><td><code> [inline]</code></td>
 
335
        </tr>
 
336
      </table>
 
337
</div>
 
338
<div class="memdoc">
 
339
 
 
340
<p>Function ANDs two bitblocks and tests for any bit. Function does not analyse availability of source blocks. </p>
 
341
<dl><dt><b>Parameters:</b></dt><dd>
 
342
  <table border="0" cellspacing="2" cellpadding="0">
 
343
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block </td></tr>
 
344
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
345
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block </td></tr>
 
346
  </table>
 
347
  </dd>
 
348
</dl>
 
349
 
 
350
<p>Definition at line <a class="el" href="a00093_source.html#l03229">3229</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
351
 
 
352
<p>Referenced by <a class="el" href="a00093_source.html#l03589">bm::bit_operation_and_any()</a>.</p>
 
353
 
 
354
</div>
 
355
</div>
 
356
<a class="anchor" id="ga0070984bb1d332610150a9106ab8eb0a"></a><!-- doxytag: member="bm::bit_block_and_count" ref="ga0070984bb1d332610150a9106ab8eb0a" args="(const bm::word_t *src1, const bm::word_t *src1_end, const bm::word_t *src2)" -->
 
357
<div class="memitem">
 
358
<div class="memproto">
 
359
      <table class="memname">
 
360
        <tr>
 
361
          <td class="memname">unsigned bm::bit_block_and_count </td>
 
362
          <td>(</td>
 
363
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
364
          <td class="paramname"> <em>src1</em>, </td>
 
365
        </tr>
 
366
        <tr>
 
367
          <td class="paramkey"></td>
 
368
          <td></td>
 
369
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
370
          <td class="paramname"> <em>src1_end</em>, </td>
 
371
        </tr>
 
372
        <tr>
 
373
          <td class="paramkey"></td>
 
374
          <td></td>
 
375
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
376
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
377
        </tr>
 
378
        <tr>
 
379
          <td></td>
 
380
          <td>)</td>
 
381
          <td></td><td></td><td><code> [inline]</code></td>
 
382
        </tr>
 
383
      </table>
 
384
</div>
 
385
<div class="memdoc">
 
386
 
 
387
<p>Function ANDs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. </p>
 
388
<dl><dt><b>Parameters:</b></dt><dd>
 
389
  <table border="0" cellspacing="2" cellpadding="0">
 
390
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block </td></tr>
 
391
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
392
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block </td></tr>
 
393
  </table>
 
394
  </dd>
 
395
</dl>
 
396
 
 
397
<p>Definition at line <a class="el" href="a00093_source.html#l03179">3179</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
398
 
 
399
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, and <a class="el" href="a00098_source.html#l00198">VECT_BITCOUNT_AND</a>.</p>
 
400
 
 
401
<p>Referenced by <a class="el" href="a00093_source.html#l03566">bm::bit_operation_and_count()</a>.</p>
 
402
 
 
403
</div>
 
404
</div>
 
405
<a class="anchor" id="ga503e0f3e79f819d9b58e4b0e905be116"></a><!-- doxytag: member="bm::bit_block_any_range" ref="ga503e0f3e79f819d9b58e4b0e905be116" args="(const bm::word_t *block, bm::word_t left, bm::word_t right)" -->
 
406
<div class="memitem">
 
407
<div class="memproto">
 
408
      <table class="memname">
 
409
        <tr>
 
410
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_any_range </td>
 
411
          <td>(</td>
 
412
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
413
          <td class="paramname"> <em>block</em>, </td>
 
414
        </tr>
 
415
        <tr>
 
416
          <td class="paramkey"></td>
 
417
          <td></td>
 
418
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
419
          <td class="paramname"> <em>left</em>, </td>
 
420
        </tr>
 
421
        <tr>
 
422
          <td class="paramkey"></td>
 
423
          <td></td>
 
424
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
425
          <td class="paramname"> <em>right</em></td><td>&nbsp;</td>
 
426
        </tr>
 
427
        <tr>
 
428
          <td></td>
 
429
          <td>)</td>
 
430
          <td></td><td></td><td><code> [inline]</code></td>
 
431
        </tr>
 
432
      </table>
 
433
</div>
 
434
<div class="memdoc">
 
435
<p>Function calculates if there is any number of 1 bits in the given array of words in the range between left anf right bits (borders included). Make sure the addresses are aligned. </p>
 
436
 
 
437
<p>Definition at line <a class="el" href="a00093_source.html#l02798">2798</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
438
 
 
439
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
440
 
 
441
<p>Referenced by <a class="el" href="a00093_source.html#l01631">bm::gap_bitset_and_any()</a>, <a class="el" href="a00093_source.html#l01869">bm::gap_bitset_or_any()</a>, <a class="el" href="a00093_source.html#l01703">bm::gap_bitset_sub_any()</a>, and <a class="el" href="a00093_source.html#l01779">bm::gap_bitset_xor_any()</a>.</p>
 
442
 
 
443
</div>
 
444
</div>
 
445
<a class="anchor" id="gab30df14a61f036d690c091878feaff1c"></a><!-- doxytag: member="bm::bit_block_calc_count" ref="gab30df14a61f036d690c091878feaff1c" args="(const bm::word_t *block, const bm::word_t *block_end)" -->
 
446
<div class="memitem">
 
447
<div class="memproto">
 
448
      <table class="memname">
 
449
        <tr>
 
450
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count </td>
 
451
          <td>(</td>
 
452
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
453
          <td class="paramname"> <em>block</em>, </td>
 
454
        </tr>
 
455
        <tr>
 
456
          <td class="paramkey"></td>
 
457
          <td></td>
 
458
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
459
          <td class="paramname"> <em>block_end</em></td><td>&nbsp;</td>
 
460
        </tr>
 
461
        <tr>
 
462
          <td></td>
 
463
          <td>)</td>
 
464
          <td></td><td></td><td><code> [inline]</code></td>
 
465
        </tr>
 
466
      </table>
 
467
</div>
 
468
<div class="memdoc">
 
469
 
 
470
<p>Bitcount for bit string. </p>
 
471
<p>Function calculates number of 1 bits in the given array of words. Make sure the addresses are aligned. </p>
 
472
 
 
473
<p>Definition at line <a class="el" href="a00093_source.html#l02505">2505</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
474
 
 
475
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, and <a class="el" href="a00098_source.html#l00195">VECT_BITCOUNT</a>.</p>
 
476
 
 
477
<p>Referenced by <a class="el" href="a00093_source.html#l03695">bm::bit_operation_or_count()</a>, <a class="el" href="a00093_source.html#l03614">bm::bit_operation_sub_count()</a>, <a class="el" href="a00093_source.html#l04029">bm::bit_operation_xor_count()</a>, <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00096_source.html#l02302">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_A()</a>, and <a class="el" href="a00100_source.html#l00348">bm::tmatrix_distance()</a>.</p>
 
478
 
 
479
</div>
 
480
</div>
 
481
<a class="anchor" id="gaca91016aeb08ae1b610d6d407aae0e4c"></a><!-- doxytag: member="bm::bit_block_calc_count_change" ref="gaca91016aeb08ae1b610d6d407aae0e4c" args="(const bm::word_t *block, const bm::word_t *block_end, unsigned *bit_count)" -->
 
482
<div class="memitem">
 
483
<div class="memproto">
 
484
      <table class="memname">
 
485
        <tr>
 
486
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count_change </td>
 
487
          <td>(</td>
 
488
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
489
          <td class="paramname"> <em>block</em>, </td>
 
490
        </tr>
 
491
        <tr>
 
492
          <td class="paramkey"></td>
 
493
          <td></td>
 
494
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
495
          <td class="paramname"> <em>block_end</em>, </td>
 
496
        </tr>
 
497
        <tr>
 
498
          <td class="paramkey"></td>
 
499
          <td></td>
 
500
          <td class="paramtype">unsigned *&nbsp;</td>
 
501
          <td class="paramname"> <em>bit_count</em></td><td>&nbsp;</td>
 
502
        </tr>
 
503
        <tr>
 
504
          <td></td>
 
505
          <td>)</td>
 
506
          <td></td><td></td><td><code> [inline]</code></td>
 
507
        </tr>
 
508
      </table>
 
509
</div>
 
510
<div class="memdoc">
 
511
<p>Function calculates number of times when bit value changed (1-0 or 0-1) in the bit block. Also calulates number of bits ON.</p>
 
512
<dl><dt><b>Parameters:</b></dt><dd>
 
513
  <table border="0" cellspacing="2" cellpadding="0">
 
514
    <tr><td valign="top"></td><td valign="top"><em>bit_count</em>&nbsp;</td><td>- OUT total number of bits ON</td></tr>
 
515
  </table>
 
516
  </dd>
 
517
</dl>
 
518
<dl class="return"><dt><b>Returns:</b></dt><dd>number of 1-0, 0-1 transitions </dd></dl>
 
519
 
 
520
<p>Definition at line <a class="el" href="a00093_source.html#l02643">2643</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
521
 
 
522
<p>References <a class="el" href="a00093_source.html#l02581">bm::bit_count_change32()</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00097_source.html#l00237">bm::sse2_bit_block_calc_count_change()</a>, and <a class="el" href="a00098_source.html#l00242">bm::sse4_bit_block_calc_count_change()</a>.</p>
 
523
 
 
524
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>.</p>
 
525
 
 
526
</div>
 
527
</div>
 
528
<a class="anchor" id="ga2485f707b2629c5ce7681cf9fe385b91"></a><!-- doxytag: member="bm::bit_block_calc_count_range" ref="ga2485f707b2629c5ce7681cf9fe385b91" args="(const bm::word_t *block, bm::word_t left, bm::word_t right)" -->
 
529
<div class="memitem">
 
530
<div class="memproto">
 
531
      <table class="memname">
 
532
        <tr>
 
533
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count_range </td>
 
534
          <td>(</td>
 
535
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
536
          <td class="paramname"> <em>block</em>, </td>
 
537
        </tr>
 
538
        <tr>
 
539
          <td class="paramkey"></td>
 
540
          <td></td>
 
541
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
542
          <td class="paramname"> <em>left</em>, </td>
 
543
        </tr>
 
544
        <tr>
 
545
          <td class="paramkey"></td>
 
546
          <td></td>
 
547
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
548
          <td class="paramname"> <em>right</em></td><td>&nbsp;</td>
 
549
        </tr>
 
550
        <tr>
 
551
          <td></td>
 
552
          <td>)</td>
 
553
          <td></td><td></td><td><code> [inline]</code></td>
 
554
        </tr>
 
555
      </table>
 
556
</div>
 
557
<div class="memdoc">
 
558
<p>Function calculates number of 1 bits in the given array of words in the range between left anf right bits (borders included) Make sure the addresses are aligned. </p>
 
559
 
 
560
<p>Definition at line <a class="el" href="a00093_source.html#l02729">2729</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
561
 
 
562
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
563
 
 
564
<p>Referenced by <a class="el" href="a00087_source.html#l01690">bm::bvector&lt; Alloc, MS &gt;::count_range()</a>, <a class="el" href="a00093_source.html#l01595">bm::gap_bitset_and_count()</a>, <a class="el" href="a00093_source.html#l01822">bm::gap_bitset_or_count()</a>, <a class="el" href="a00093_source.html#l01670">bm::gap_bitset_sub_count()</a>, and <a class="el" href="a00093_source.html#l01741">bm::gap_bitset_xor_count()</a>.</p>
 
565
 
 
566
</div>
 
567
</div>
 
568
<a class="anchor" id="ga9090de87d53e7f25eff96c8259b3485c"></a><!-- doxytag: member="bm::bit_block_copy" ref="ga9090de87d53e7f25eff96c8259b3485c" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
569
<div class="memitem">
 
570
<div class="memproto">
 
571
      <table class="memname">
 
572
        <tr>
 
573
          <td class="memname">void bm::bit_block_copy </td>
 
574
          <td>(</td>
 
575
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
576
          <td class="paramname"> <em>dst</em>, </td>
 
577
        </tr>
 
578
        <tr>
 
579
          <td class="paramkey"></td>
 
580
          <td></td>
 
581
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
582
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
583
        </tr>
 
584
        <tr>
 
585
          <td></td>
 
586
          <td>)</td>
 
587
          <td></td><td></td><td><code> [inline]</code></td>
 
588
        </tr>
 
589
      </table>
 
590
</div>
 
591
<div class="memdoc">
 
592
 
 
593
<p>Bitblock copy operation. </p>
 
594
<dl><dt><b>Parameters:</b></dt><dd>
 
595
  <table border="0" cellspacing="2" cellpadding="0">
 
596
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
597
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block. </td></tr>
 
598
  </table>
 
599
  </dd>
 
600
</dl>
 
601
 
 
602
<p>Definition at line <a class="el" href="a00093_source.html#l03125">3125</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
603
 
 
604
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00098_source.html#l00225">VECT_COPY_BLOCK</a>.</p>
 
605
 
 
606
</div>
 
607
</div>
 
608
<a class="anchor" id="ga3515d8eb5da7f9d41d63dc90ad9523a4"></a><!-- doxytag: member="bm::bit_block_or" ref="ga3515d8eb5da7f9d41d63dc90ad9523a4" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
609
<div class="memitem">
 
610
<div class="memproto">
 
611
      <table class="memname">
 
612
        <tr>
 
613
          <td class="memname">void bm::bit_block_or </td>
 
614
          <td>(</td>
 
615
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
616
          <td class="paramname"> <em>dst</em>, </td>
 
617
        </tr>
 
618
        <tr>
 
619
          <td class="paramkey"></td>
 
620
          <td></td>
 
621
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
622
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
623
        </tr>
 
624
        <tr>
 
625
          <td></td>
 
626
          <td>)</td>
 
627
          <td></td><td></td><td><code> [inline]</code></td>
 
628
        </tr>
 
629
      </table>
 
630
</div>
 
631
<div class="memdoc">
 
632
 
 
633
<p>Plain bitblock OR operation. Function does not analyse availability of source and destination blocks. </p>
 
634
<dl><dt><b>Parameters:</b></dt><dd>
 
635
  <table border="0" cellspacing="2" cellpadding="0">
 
636
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
637
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block. </td></tr>
 
638
  </table>
 
639
  </dd>
 
640
</dl>
 
641
 
 
642
<p>Definition at line <a class="el" href="a00093_source.html#l03759">3759</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
643
 
 
644
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00098_source.html#l00216">VECT_OR_ARR</a>.</p>
 
645
 
 
646
<p>Referenced by <a class="el" href="a00093_source.html#l03797">bm::bit_operation_or()</a>.</p>
 
647
 
 
648
</div>
 
649
</div>
 
650
<a class="anchor" id="gab2047495f7844d3014ff697503669d24"></a><!-- doxytag: member="bm::bit_block_or_any" ref="gab2047495f7844d3014ff697503669d24" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
651
<div class="memitem">
 
652
<div class="memproto">
 
653
      <table class="memname">
 
654
        <tr>
 
655
          <td class="memname">unsigned bm::bit_block_or_any </td>
 
656
          <td>(</td>
 
657
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
658
          <td class="paramname"> <em>src1</em>, </td>
 
659
        </tr>
 
660
        <tr>
 
661
          <td class="paramkey"></td>
 
662
          <td></td>
 
663
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
664
          <td class="paramname"> <em>src1_end</em>, </td>
 
665
        </tr>
 
666
        <tr>
 
667
          <td class="paramkey"></td>
 
668
          <td></td>
 
669
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
670
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
671
        </tr>
 
672
        <tr>
 
673
          <td></td>
 
674
          <td>)</td>
 
675
          <td></td><td></td><td><code> [inline]</code></td>
 
676
        </tr>
 
677
      </table>
 
678
</div>
 
679
<div class="memdoc">
 
680
 
 
681
<p>Function ORs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks. </p>
 
682
<dl><dt><b>Parameters:</b></dt><dd>
 
683
  <table border="0" cellspacing="2" cellpadding="0">
 
684
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
685
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
686
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
687
  </table>
 
688
  </dd>
 
689
</dl>
 
690
 
 
691
<p>Definition at line <a class="el" href="a00093_source.html#l03469">3469</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
692
 
 
693
<p>Referenced by <a class="el" href="a00093_source.html#l03727">bm::bit_operation_or_any()</a>.</p>
 
694
 
 
695
</div>
 
696
</div>
 
697
<a class="anchor" id="gacf4f8ab164277278448a541863c07517"></a><!-- doxytag: member="bm::bit_block_or_count" ref="gacf4f8ab164277278448a541863c07517" args="(const bm::word_t *src1, const bm::word_t *src1_end, const bm::word_t *src2)" -->
 
698
<div class="memitem">
 
699
<div class="memproto">
 
700
      <table class="memname">
 
701
        <tr>
 
702
          <td class="memname">unsigned bm::bit_block_or_count </td>
 
703
          <td>(</td>
 
704
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
705
          <td class="paramname"> <em>src1</em>, </td>
 
706
        </tr>
 
707
        <tr>
 
708
          <td class="paramkey"></td>
 
709
          <td></td>
 
710
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
711
          <td class="paramname"> <em>src1_end</em>, </td>
 
712
        </tr>
 
713
        <tr>
 
714
          <td class="paramkey"></td>
 
715
          <td></td>
 
716
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
717
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
718
        </tr>
 
719
        <tr>
 
720
          <td></td>
 
721
          <td>)</td>
 
722
          <td></td><td></td><td><code> [inline]</code></td>
 
723
        </tr>
 
724
      </table>
 
725
</div>
 
726
<div class="memdoc">
 
727
 
 
728
<p>Function ORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. </p>
 
729
<dl><dt><b>Parameters:</b></dt><dd>
 
730
  <table border="0" cellspacing="2" cellpadding="0">
 
731
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block </td></tr>
 
732
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first block end </td></tr>
 
733
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
734
  </table>
 
735
  </dd>
 
736
</dl>
 
737
 
 
738
<p>Definition at line <a class="el" href="a00093_source.html#l03420">3420</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
739
 
 
740
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, and <a class="el" href="a00098_source.html#l00201">VECT_BITCOUNT_OR</a>.</p>
 
741
 
 
742
<p>Referenced by <a class="el" href="a00093_source.html#l03695">bm::bit_operation_or_count()</a>.</p>
 
743
 
 
744
</div>
 
745
</div>
 
746
<a class="anchor" id="gaada8b13c35acd8df90129b45edcfc5de"></a><!-- doxytag: member="bm::bit_block_set" ref="gaada8b13c35acd8df90129b45edcfc5de" args="(bm::word_t *BMRESTRICT dst, bm::word_t value)" -->
 
747
<div class="memitem">
 
748
<div class="memproto">
 
749
      <table class="memname">
 
750
        <tr>
 
751
          <td class="memname">void bm::bit_block_set </td>
 
752
          <td>(</td>
 
753
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
754
          <td class="paramname"> <em>dst</em>, </td>
 
755
        </tr>
 
756
        <tr>
 
757
          <td class="paramkey"></td>
 
758
          <td></td>
 
759
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
760
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
 
761
        </tr>
 
762
        <tr>
 
763
          <td></td>
 
764
          <td>)</td>
 
765
          <td></td><td></td><td><code> [inline]</code></td>
 
766
        </tr>
 
767
      </table>
 
768
</div>
 
769
<div class="memdoc">
 
770
 
 
771
<p>Bitblock memset operation. </p>
 
772
<dl><dt><b>Parameters:</b></dt><dd>
 
773
  <table border="0" cellspacing="2" cellpadding="0">
 
774
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
775
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>- value to set. </td></tr>
 
776
  </table>
 
777
  </dd>
 
778
</dl>
 
779
 
 
780
<p>Definition at line <a class="el" href="a00093_source.html#l01920">1920</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
781
 
 
782
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>.</p>
 
783
 
 
784
<p>Referenced by <a class="el" href="a00096_source.html#l01453">bm::deserializer&lt; BV, DEC &gt;::deserialize()</a>, <a class="el" href="a00093_source.html#l01938">bm::gap_convert_to_bitset()</a>, <a class="el" href="a00096_source.html#l02732">bm::serial_stream_iterator&lt; DEC &gt;::get_arr_bit()</a>, and <a class="el" href="a00096_source.html#l01916">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_ASSIGN()</a>.</p>
 
785
 
 
786
</div>
 
787
</div>
 
788
<a class="anchor" id="gafed81435f74c0542857842d4461686e4"></a><!-- doxytag: member="bm::bit_block_sub" ref="gafed81435f74c0542857842d4461686e4" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
789
<div class="memitem">
 
790
<div class="memproto">
 
791
      <table class="memname">
 
792
        <tr>
 
793
          <td class="memname">void bm::bit_block_sub </td>
 
794
          <td>(</td>
 
795
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
796
          <td class="paramname"> <em>dst</em>, </td>
 
797
        </tr>
 
798
        <tr>
 
799
          <td class="paramkey"></td>
 
800
          <td></td>
 
801
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
802
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
803
        </tr>
 
804
        <tr>
 
805
          <td></td>
 
806
          <td>)</td>
 
807
          <td></td><td></td><td><code> [inline]</code></td>
 
808
        </tr>
 
809
      </table>
 
810
</div>
 
811
<div class="memdoc">
 
812
 
 
813
<p>Plain bitblock SUB (AND NOT) operation. Function does not analyse availability of source and destination blocks. </p>
 
814
<dl><dt><b>Parameters:</b></dt><dd>
 
815
  <table border="0" cellspacing="2" cellpadding="0">
 
816
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
817
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block. </td></tr>
 
818
  </table>
 
819
  </dd>
 
820
</dl>
 
821
 
 
822
<p>Definition at line <a class="el" href="a00093_source.html#l03855">3855</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
823
 
 
824
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00098_source.html#l00219">VECT_SUB_ARR</a>.</p>
 
825
 
 
826
<p>Referenced by <a class="el" href="a00093_source.html#l03895">bm::bit_operation_sub()</a>, and <a class="el" href="a00096_source.html#l02186">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_SUB()</a>.</p>
 
827
 
 
828
</div>
 
829
</div>
 
830
<a class="anchor" id="ga3f51735d2ca08e5a9fae2c9c49138c5c"></a><!-- doxytag: member="bm::bit_block_sub_any" ref="ga3f51735d2ca08e5a9fae2c9c49138c5c" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
831
<div class="memitem">
 
832
<div class="memproto">
 
833
      <table class="memname">
 
834
        <tr>
 
835
          <td class="memname">unsigned bm::bit_block_sub_any </td>
 
836
          <td>(</td>
 
837
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
838
          <td class="paramname"> <em>src1</em>, </td>
 
839
        </tr>
 
840
        <tr>
 
841
          <td class="paramkey"></td>
 
842
          <td></td>
 
843
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
844
          <td class="paramname"> <em>src1_end</em>, </td>
 
845
        </tr>
 
846
        <tr>
 
847
          <td class="paramkey"></td>
 
848
          <td></td>
 
849
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
850
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
851
        </tr>
 
852
        <tr>
 
853
          <td></td>
 
854
          <td>)</td>
 
855
          <td></td><td></td><td><code> [inline]</code></td>
 
856
        </tr>
 
857
      </table>
 
858
</div>
 
859
<div class="memdoc">
 
860
 
 
861
<p>Function SUBs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks. </p>
 
862
<dl><dt><b>Parameters:</b></dt><dd>
 
863
  <table border="0" cellspacing="2" cellpadding="0">
 
864
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
865
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
866
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
867
  </table>
 
868
  </dd>
 
869
</dl>
 
870
 
 
871
<p>Definition at line <a class="el" href="a00093_source.html#l03390">3390</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
872
 
 
873
<p>Referenced by <a class="el" href="a00093_source.html#l03665">bm::bit_operation_sub_any()</a>.</p>
 
874
 
 
875
</div>
 
876
</div>
 
877
<a class="anchor" id="gad34175255e9860a572fcf2e664a6de8e"></a><!-- doxytag: member="bm::bit_block_sub_count" ref="gad34175255e9860a572fcf2e664a6de8e" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
878
<div class="memitem">
 
879
<div class="memproto">
 
880
      <table class="memname">
 
881
        <tr>
 
882
          <td class="memname">unsigned bm::bit_block_sub_count </td>
 
883
          <td>(</td>
 
884
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
885
          <td class="paramname"> <em>src1</em>, </td>
 
886
        </tr>
 
887
        <tr>
 
888
          <td class="paramkey"></td>
 
889
          <td></td>
 
890
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
891
          <td class="paramname"> <em>src1_end</em>, </td>
 
892
        </tr>
 
893
        <tr>
 
894
          <td class="paramkey"></td>
 
895
          <td></td>
 
896
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
897
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
898
        </tr>
 
899
        <tr>
 
900
          <td></td>
 
901
          <td>)</td>
 
902
          <td></td><td></td><td><code> [inline]</code></td>
 
903
        </tr>
 
904
      </table>
 
905
</div>
 
906
<div class="memdoc">
 
907
 
 
908
<p>Function SUBs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. </p>
 
909
<dl><dt><b>Parameters:</b></dt><dd>
 
910
  <table border="0" cellspacing="2" cellpadding="0">
 
911
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
912
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
913
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
914
  </table>
 
915
  </dd>
 
916
</dl>
 
917
 
 
918
<p>Definition at line <a class="el" href="a00093_source.html#l03341">3341</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
919
 
 
920
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, and <a class="el" href="a00098_source.html#l00207">VECT_BITCOUNT_SUB</a>.</p>
 
921
 
 
922
<p>Referenced by <a class="el" href="a00093_source.html#l03614">bm::bit_operation_sub_count()</a>.</p>
 
923
 
 
924
</div>
 
925
</div>
 
926
<a class="anchor" id="gae6a46c5e671ea1c9312219ceb41025ef"></a><!-- doxytag: member="bm::bit_block_xor" ref="gae6a46c5e671ea1c9312219ceb41025ef" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
927
<div class="memitem">
 
928
<div class="memproto">
 
929
      <table class="memname">
 
930
        <tr>
 
931
          <td class="memname">void bm::bit_block_xor </td>
 
932
          <td>(</td>
 
933
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
934
          <td class="paramname"> <em>dst</em>, </td>
 
935
        </tr>
 
936
        <tr>
 
937
          <td class="paramkey"></td>
 
938
          <td></td>
 
939
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
940
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
941
        </tr>
 
942
        <tr>
 
943
          <td></td>
 
944
          <td>)</td>
 
945
          <td></td><td></td><td><code> [inline]</code></td>
 
946
        </tr>
 
947
      </table>
 
948
</div>
 
949
<div class="memdoc">
 
950
 
 
951
<p>Plain bitblock XOR operation. Function does not analyse availability of source and destination blocks. </p>
 
952
<dl><dt><b>Parameters:</b></dt><dd>
 
953
  <table border="0" cellspacing="2" cellpadding="0">
 
954
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
955
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block. </td></tr>
 
956
  </table>
 
957
  </dd>
 
958
</dl>
 
959
 
 
960
<p>Definition at line <a class="el" href="a00093_source.html#l03951">3951</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
961
 
 
962
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, and <a class="el" href="a00098_source.html#l00222">VECT_XOR_ARR</a>.</p>
 
963
 
 
964
<p>Referenced by <a class="el" href="a00093_source.html#l03991">bm::bit_operation_xor()</a>, <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#l02126">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_XOR()</a>.</p>
 
965
 
 
966
</div>
 
967
</div>
 
968
<a class="anchor" id="gafbc3ffafc859a503fdd2fc96e7fb60ce"></a><!-- doxytag: member="bm::bit_block_xor_any" ref="gafbc3ffafc859a503fdd2fc96e7fb60ce" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
969
<div class="memitem">
 
970
<div class="memproto">
 
971
      <table class="memname">
 
972
        <tr>
 
973
          <td class="memname">unsigned bm::bit_block_xor_any </td>
 
974
          <td>(</td>
 
975
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
976
          <td class="paramname"> <em>src1</em>, </td>
 
977
        </tr>
 
978
        <tr>
 
979
          <td class="paramkey"></td>
 
980
          <td></td>
 
981
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
982
          <td class="paramname"> <em>src1_end</em>, </td>
 
983
        </tr>
 
984
        <tr>
 
985
          <td class="paramkey"></td>
 
986
          <td></td>
 
987
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
988
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
989
        </tr>
 
990
        <tr>
 
991
          <td></td>
 
992
          <td>)</td>
 
993
          <td></td><td></td><td><code> [inline]</code></td>
 
994
        </tr>
 
995
      </table>
 
996
</div>
 
997
<div class="memdoc">
 
998
 
 
999
<p>Function XORs two bitblocks and and tests for any bit. Function does not analyse availability of source blocks. </p>
 
1000
<dl><dt><b>Parameters:</b></dt><dd>
 
1001
  <table border="0" cellspacing="2" cellpadding="0">
 
1002
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1003
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1004
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
1005
  </table>
 
1006
  </dd>
 
1007
</dl>
 
1008
 
 
1009
<p>Definition at line <a class="el" href="a00093_source.html#l03310">3310</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1010
 
 
1011
<p>Referenced by <a class="el" href="a00093_source.html#l04054">bm::bit_operation_xor_any()</a>.</p>
 
1012
 
 
1013
</div>
 
1014
</div>
 
1015
<a class="anchor" id="gaf8af8cfe8b49407be1af7398da28c939"></a><!-- doxytag: member="bm::bit_block_xor_count" ref="gaf8af8cfe8b49407be1af7398da28c939" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1016
<div class="memitem">
 
1017
<div class="memproto">
 
1018
      <table class="memname">
 
1019
        <tr>
 
1020
          <td class="memname">unsigned bm::bit_block_xor_count </td>
 
1021
          <td>(</td>
 
1022
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1023
          <td class="paramname"> <em>src1</em>, </td>
 
1024
        </tr>
 
1025
        <tr>
 
1026
          <td class="paramkey"></td>
 
1027
          <td></td>
 
1028
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1029
          <td class="paramname"> <em>src1_end</em>, </td>
 
1030
        </tr>
 
1031
        <tr>
 
1032
          <td class="paramkey"></td>
 
1033
          <td></td>
 
1034
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1035
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1036
        </tr>
 
1037
        <tr>
 
1038
          <td></td>
 
1039
          <td>)</td>
 
1040
          <td></td><td></td><td><code> [inline]</code></td>
 
1041
        </tr>
 
1042
      </table>
 
1043
</div>
 
1044
<div class="memdoc">
 
1045
 
 
1046
<p>Function XORs two bitblocks and computes the bitcount. Function does not analyse availability of source blocks. </p>
 
1047
<dl><dt><b>Parameters:</b></dt><dd>
 
1048
  <table border="0" cellspacing="2" cellpadding="0">
 
1049
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1050
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1051
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block. </td></tr>
 
1052
  </table>
 
1053
  </dd>
 
1054
</dl>
 
1055
 
 
1056
<p>Definition at line <a class="el" href="a00093_source.html#l03260">3260</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1057
 
 
1058
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>, and <a class="el" href="a00098_source.html#l00204">VECT_BITCOUNT_XOR</a>.</p>
 
1059
 
 
1060
<p>Referenced by <a class="el" href="a00093_source.html#l04029">bm::bit_operation_xor_count()</a>.</p>
 
1061
 
 
1062
</div>
 
1063
</div>
 
1064
<a class="anchor" id="gaf24d85761f60877c2260f8160593f732"></a><!-- doxytag: member="bm::bit_convert_to_arr" ref="gaf24d85761f60877c2260f8160593f732" args="(T *BMRESTRICT dest, const unsigned *BMRESTRICT src, bm::id_t bits, unsigned dest_len, unsigned mask=0)" -->
 
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">T bm::bit_convert_to_arr </td>
 
1072
          <td>(</td>
 
1073
          <td class="paramtype">T *BMRESTRICT&nbsp;</td>
 
1074
          <td class="paramname"> <em>dest</em>, </td>
 
1075
        </tr>
 
1076
        <tr>
 
1077
          <td class="paramkey"></td>
 
1078
          <td></td>
 
1079
          <td class="paramtype">const unsigned *BMRESTRICT&nbsp;</td>
 
1080
          <td class="paramname"> <em>src</em>, </td>
 
1081
        </tr>
 
1082
        <tr>
 
1083
          <td class="paramkey"></td>
 
1084
          <td></td>
 
1085
          <td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td>
 
1086
          <td class="paramname"> <em>bits</em>, </td>
 
1087
        </tr>
 
1088
        <tr>
 
1089
          <td class="paramkey"></td>
 
1090
          <td></td>
 
1091
          <td class="paramtype">unsigned&nbsp;</td>
 
1092
          <td class="paramname"> <em>dest_len</em>, </td>
 
1093
        </tr>
 
1094
        <tr>
 
1095
          <td class="paramkey"></td>
 
1096
          <td></td>
 
1097
          <td class="paramtype">unsigned&nbsp;</td>
 
1098
          <td class="paramname"> <em>mask</em> = <code>0</code></td><td>&nbsp;</td>
 
1099
        </tr>
 
1100
        <tr>
 
1101
          <td></td>
 
1102
          <td>)</td>
 
1103
          <td></td><td></td><td><code> [inline]</code></td>
 
1104
        </tr>
 
1105
      </table>
 
1106
</div>
 
1107
<div class="memdoc">
 
1108
 
 
1109
<p>Convert bit block into an array of ints corresponding to 1 bits. </p>
 
1110
 
 
1111
<p>Definition at line <a class="el" href="a00093_source.html#l04464">4464</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1112
 
 
1113
<p>References <a class="el" href="a00093_source.html#l04208">bm::bit_for_each_4()</a>, and <a class="el" href="a00093_source.html#l04350">bm::copy_to_array_functor_inc&lt; B &gt;::ptr()</a>.</p>
 
1114
 
 
1115
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>.</p>
 
1116
 
 
1117
</div>
 
1118
</div>
 
1119
<a class="anchor" id="gaafc87c4764bb30d95ba4088064a404e3"></a><!-- doxytag: member="bm::bit_count_change" ref="gaafc87c4764bb30d95ba4088064a404e3" args="(bm::word_t w)" -->
 
1120
<div class="memitem">
 
1121
<div class="memproto">
 
1122
      <table class="memname">
 
1123
        <tr>
 
1124
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_count_change </td>
 
1125
          <td>(</td>
 
1126
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
 
1127
          <td class="paramname"> <em>w</em></td>
611
1128
          <td>&nbsp;)&nbsp;</td>
612
1129
          <td><code> [inline]</code></td>
613
1130
        </tr>
614
1131
      </table>
615
1132
</div>
616
1133
<div class="memdoc">
617
 
 
618
 
<p>Convert set operation into compatible distance metric. </p>
619
 
 
620
 
<p>Definition at line <a class="el" href="a00086_source.html#l00069">69</a> of file <a class="el" href="a00086_source.html">bmalgo_impl.h</a>.</p>
621
 
 
622
 
<p>References <a class="el" href="a00089_source.html#l00047">BM_ASSERT</a>, <a class="el" href="a00090_source.html#l00231">bm::is_const_set_operation()</a>, <a class="el" href="a00090_source.html#l00217">bm::set_COUNT</a>, and <a class="el" href="a00090_source.html#l00224">bm::set_COUNT_B</a>.</p>
623
 
 
624
 
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer&lt; BV, SerialIterator &gt;::deserialize()</a>.</p>
625
 
 
626
 
</div>
627
 
</div>
628
 
</div>
629
 
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Nov 22 10:49:42 2009 for BitMagic by&nbsp;
 
1134
<p>Function calculates number of times when bit value changed (1-0 or 0-1).</p>
 
1135
<p>For 001 result is 2 010 - 3 011 - 2 111 - 1 </p>
 
1136
 
 
1137
<p>Definition at line <a class="el" href="a00093_source.html#l02565">2565</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1138
 
 
1139
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>.</p>
 
1140
 
 
1141
</div>
 
1142
</div>
 
1143
<a class="anchor" id="ga0ff158706f2e194be67fb8267641c30a"></a><!-- doxytag: member="bm::bit_count_nonzero_size" ref="ga0ff158706f2e194be67fb8267641c30a" args="(const T *blk, unsigned data_size)" -->
 
1144
<div class="memitem">
 
1145
<div class="memproto">
 
1146
<div class="memtemplate">
 
1147
template&lt;class T &gt; </div>
 
1148
      <table class="memname">
 
1149
        <tr>
 
1150
          <td class="memname">unsigned bm::bit_count_nonzero_size </td>
 
1151
          <td>(</td>
 
1152
          <td class="paramtype">const T *&nbsp;</td>
 
1153
          <td class="paramname"> <em>blk</em>, </td>
 
1154
        </tr>
 
1155
        <tr>
 
1156
          <td class="paramkey"></td>
 
1157
          <td></td>
 
1158
          <td class="paramtype">unsigned&nbsp;</td>
 
1159
          <td class="paramname"> <em>data_size</em></td><td>&nbsp;</td>
 
1160
        </tr>
 
1161
        <tr>
 
1162
          <td></td>
 
1163
          <td>)</td>
 
1164
          <td></td><td></td><td><code> [inline]</code></td>
 
1165
        </tr>
 
1166
      </table>
 
1167
</div>
 
1168
<div class="memdoc">
 
1169
 
 
1170
<p>Inspects block for full zero words. </p>
 
1171
<dl><dt><b>Parameters:</b></dt><dd>
 
1172
  <table border="0" cellspacing="2" cellpadding="0">
 
1173
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>- bit block pointer </td></tr>
 
1174
    <tr><td valign="top"></td><td valign="top"><em>data_size</em>&nbsp;</td><td>- data size</td></tr>
 
1175
  </table>
 
1176
  </dd>
 
1177
</dl>
 
1178
<dl class="return"><dt><b>Returns:</b></dt><dd>size of all non-zero words </dd></dl>
 
1179
 
 
1180
<p>Definition at line <a class="el" href="a00093_source.html#l04083">4083</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1181
 
 
1182
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
1183
 
 
1184
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>.</p>
 
1185
 
 
1186
</div>
 
1187
</div>
 
1188
<a class="anchor" id="gad6a7c549a625df7aa7d68d43a57238c7"></a><!-- doxytag: member="bm::bit_find_in_block" ref="gad6a7c549a625df7aa7d68d43a57238c7" args="(const bm::word_t *data, unsigned nbit, bm::id_t *prev)" -->
 
1189
<div class="memitem">
 
1190
<div class="memproto">
 
1191
      <table class="memname">
 
1192
        <tr>
 
1193
          <td class="memname">int bm::bit_find_in_block </td>
 
1194
          <td>(</td>
 
1195
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
 
1196
          <td class="paramname"> <em>data</em>, </td>
 
1197
        </tr>
 
1198
        <tr>
 
1199
          <td class="paramkey"></td>
 
1200
          <td></td>
 
1201
          <td class="paramtype">unsigned&nbsp;</td>
 
1202
          <td class="paramname"> <em>nbit</em>, </td>
 
1203
        </tr>
 
1204
        <tr>
 
1205
          <td class="paramkey"></td>
 
1206
          <td></td>
 
1207
          <td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> *&nbsp;</td>
 
1208
          <td class="paramname"> <em>prev</em></td><td>&nbsp;</td>
 
1209
        </tr>
 
1210
        <tr>
 
1211
          <td></td>
 
1212
          <td>)</td>
 
1213
          <td></td><td></td><td><code> [inline]</code></td>
 
1214
        </tr>
 
1215
      </table>
 
1216
</div>
 
1217
<div class="memdoc">
 
1218
 
 
1219
<p>Searches for the next 1 bit in the BIT block. </p>
 
1220
<dl><dt><b>Parameters:</b></dt><dd>
 
1221
  <table border="0" cellspacing="2" cellpadding="0">
 
1222
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>- BIT buffer </td></tr>
 
1223
    <tr><td valign="top"></td><td valign="top"><em>nbit</em>&nbsp;</td><td>- bit index to start checking from </td></tr>
 
1224
    <tr><td valign="top"></td><td valign="top"><em>prev</em>&nbsp;</td><td>- returns previously checked value </td></tr>
 
1225
  </table>
 
1226
  </dd>
 
1227
</dl>
 
1228
 
 
1229
<p>Definition at line <a class="el" href="a00093_source.html#l04161">4161</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1230
 
 
1231
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
1232
 
 
1233
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer&lt; BV &gt;::serialize()</a>.</p>
 
1234
 
 
1235
</div>
 
1236
</div>
 
1237
<a class="anchor" id="ga24be2ad5d8c2a8f18fdad142452aaae8"></a><!-- doxytag: member="bm::bit_for_each" ref="ga24be2ad5d8c2a8f18fdad142452aaae8" args="(T w, F &amp;func)" -->
 
1238
<div class="memitem">
 
1239
<div class="memproto">
 
1240
<div class="memtemplate">
 
1241
template&lt;typename T , typename F &gt; </div>
 
1242
      <table class="memname">
 
1243
        <tr>
 
1244
          <td class="memname">void bm::bit_for_each </td>
 
1245
          <td>(</td>
 
1246
          <td class="paramtype">T&nbsp;</td>
 
1247
          <td class="paramname"> <em>w</em>, </td>
 
1248
        </tr>
 
1249
        <tr>
 
1250
          <td class="paramkey"></td>
 
1251
          <td></td>
 
1252
          <td class="paramtype">F &amp;&nbsp;</td>
 
1253
          <td class="paramname"> <em>func</em></td><td>&nbsp;</td>
 
1254
        </tr>
 
1255
        <tr>
 
1256
          <td></td>
 
1257
          <td>)</td>
 
1258
          <td></td><td></td><td><code> [inline]</code></td>
 
1259
        </tr>
 
1260
      </table>
 
1261
</div>
 
1262
<div class="memdoc">
 
1263
 
 
1264
<p>Templated algorithm to unpacks word into list of ON bit indexes. </p>
 
1265
<dl><dt><b>Parameters:</b></dt><dd>
 
1266
  <table border="0" cellspacing="2" cellpadding="0">
 
1267
    <tr><td valign="top"></td><td valign="top"><em>w</em>&nbsp;</td><td>- value </td></tr>
 
1268
    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>- bit functor </td></tr>
 
1269
  </table>
 
1270
  </dd>
 
1271
</dl>
 
1272
 
 
1273
<p>Definition at line <a class="el" href="a00093_source.html#l04278">4278</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1274
 
 
1275
<p>Referenced by <a class="el" href="a00093_source.html#l04416">bm::bit_list()</a>.</p>
 
1276
 
 
1277
</div>
 
1278
</div>
 
1279
<a class="anchor" id="gab9f80b3c898323ce77beb915e4c861f3"></a><!-- doxytag: member="bm::bit_for_each_4" ref="gab9f80b3c898323ce77beb915e4c861f3" args="(T w, F &amp;func)" -->
 
1280
<div class="memitem">
 
1281
<div class="memproto">
 
1282
<div class="memtemplate">
 
1283
template&lt;typename T , typename F &gt; </div>
 
1284
      <table class="memname">
 
1285
        <tr>
 
1286
          <td class="memname">void bm::bit_for_each_4 </td>
 
1287
          <td>(</td>
 
1288
          <td class="paramtype">T&nbsp;</td>
 
1289
          <td class="paramname"> <em>w</em>, </td>
 
1290
        </tr>
 
1291
        <tr>
 
1292
          <td class="paramkey"></td>
 
1293
          <td></td>
 
1294
          <td class="paramtype">F &amp;&nbsp;</td>
 
1295
          <td class="paramname"> <em>func</em></td><td>&nbsp;</td>
 
1296
        </tr>
 
1297
        <tr>
 
1298
          <td></td>
 
1299
          <td>)</td>
 
1300
          <td></td><td></td><td><code> [inline]</code></td>
 
1301
        </tr>
 
1302
      </table>
 
1303
</div>
 
1304
<div class="memdoc">
 
1305
 
 
1306
<p>Templated algorithm to unpacks octet based word into list of ON bit indexes. </p>
 
1307
<dl><dt><b>Parameters:</b></dt><dd>
 
1308
  <table border="0" cellspacing="2" cellpadding="0">
 
1309
    <tr><td valign="top"></td><td valign="top"><em>w</em>&nbsp;</td><td>- value </td></tr>
 
1310
    <tr><td valign="top"></td><td valign="top"><em>func</em>&nbsp;</td><td>- bit functor </td></tr>
 
1311
  </table>
 
1312
  </dd>
 
1313
</dl>
 
1314
 
 
1315
<p>Definition at line <a class="el" href="a00093_source.html#l04208">4208</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1316
 
 
1317
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
1318
 
 
1319
<p>Referenced by <a class="el" href="a00093_source.html#l04464">bm::bit_convert_to_arr()</a>, and <a class="el" href="a00093_source.html#l04401">bm::bit_list_4()</a>.</p>
 
1320
 
 
1321
</div>
 
1322
</div>
 
1323
<a class="anchor" id="gabdc11d48fda6a69873eefd219c4b7e75"></a><!-- doxytag: member="bm::bit_iblock_make_pcv" ref="gabdc11d48fda6a69873eefd219c4b7e75" args="(const unsigned distance[BPC][BPC], unsigned char *pc_vector)" -->
 
1324
<div class="memitem">
 
1325
<div class="memproto">
 
1326
<div class="memtemplate">
 
1327
template&lt;typename T , unsigned BPC, unsigned BPS&gt; </div>
 
1328
      <table class="memname">
 
1329
        <tr>
 
1330
          <td class="memname">void bm::bit_iblock_make_pcv </td>
 
1331
          <td>(</td>
 
1332
          <td class="paramtype">const unsigned&nbsp;</td>
 
1333
          <td class="paramname"> <em>distance</em>[BPC][BPC], </td>
 
1334
        </tr>
 
1335
        <tr>
 
1336
          <td class="paramkey"></td>
 
1337
          <td></td>
 
1338
          <td class="paramtype">unsigned char *&nbsp;</td>
 
1339
          <td class="paramname"> <em>pc_vector</em></td><td>&nbsp;</td>
 
1340
        </tr>
 
1341
        <tr>
 
1342
          <td></td>
 
1343
          <td>)</td>
 
1344
          <td></td><td></td><td><code> [inline]</code></td>
 
1345
        </tr>
 
1346
      </table>
 
1347
</div>
 
1348
<div class="memdoc">
 
1349
 
 
1350
<p>!&lt; ibpc limiter </p>
 
1351
<p>Make a compression descriptor vector for bit-plains </p>
 
1352
<dl><dt><b>Parameters:</b></dt><dd>
 
1353
  <table border="0" cellspacing="2" cellpadding="0">
 
1354
    <tr><td valign="top"></td><td valign="top"><em>distance</em>&nbsp;</td><td>- pairwise distance matrix </td></tr>
 
1355
    <tr><td valign="top"></td><td valign="top"><em>pc_vector</em>&nbsp;</td><td>- OUT compression descriptor vector </p>
 
1356
<pre>
 
1357
        pc_vector[] format:
 
1358
            each element (pc_vector[i]) describes the plain compression:
 
1359
                first 3 bits - compression code:
 
1360
                    0 - plain uncompressed
 
1361
                    1 - plain is ALL ZERO (000000...)
 
1362
                    2 - plain is ALL ONE  (111111...)
 
1363
                    3 - plain is equal to another plain J (5 high bits (max 31))
 
1364
                    4 - plain is close (but not equal) to plain J
 
1365
                next 5 bits - number of plain used as a XOR expression
 
1366
                 ( compression codes: 3,4 )
 
1367
    </pre> </td></tr>
 
1368
  </table>
 
1369
  </dd>
 
1370
</dl>
 
1371
 
 
1372
<p>Definition at line <a class="el" href="a00100_source.html#l00414">414</a> of file <a class="el" href="a00100_source.html">bmtrans.h</a>.</p>
 
1373
 
 
1374
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00100_source.html#l00386">bm::ibpc_all_one</a>, <a class="el" href="a00100_source.html#l00385">bm::ibpc_all_zero</a>, <a class="el" href="a00100_source.html#l00388">bm::ibpc_close</a>, <a class="el" href="a00100_source.html#l00387">bm::ibpc_equiv</a>, and <a class="el" href="a00100_source.html#l00384">bm::ibpc_uncompr</a>.</p>
 
1375
 
 
1376
<p>Referenced by <a class="el" href="a00100_source.html#l00806">bm::gap_transpose_engine&lt; GT, BT, BLOCK_SIZE &gt;::compute_distance_matrix()</a>.</p>
 
1377
 
 
1378
</div>
 
1379
</div>
 
1380
<a class="anchor" id="ga95854f9969985254a0f58b928da0eec6"></a><!-- doxytag: member="bm::bit_invert" ref="ga95854f9969985254a0f58b928da0eec6" args="(T *start, T *end)" -->
 
1381
<div class="memitem">
 
1382
<div class="memproto">
 
1383
<div class="memtemplate">
 
1384
template&lt;typename T &gt; </div>
 
1385
      <table class="memname">
 
1386
        <tr>
 
1387
          <td class="memname">void bm::bit_invert </td>
 
1388
          <td>(</td>
 
1389
          <td class="paramtype">T *&nbsp;</td>
 
1390
          <td class="paramname"> <em>start</em>, </td>
 
1391
        </tr>
 
1392
        <tr>
 
1393
          <td class="paramkey"></td>
 
1394
          <td></td>
 
1395
          <td class="paramtype">T *&nbsp;</td>
 
1396
          <td class="paramname"> <em>end</em></td><td>&nbsp;</td>
 
1397
        </tr>
 
1398
        <tr>
 
1399
          <td></td>
 
1400
          <td>)</td>
 
1401
          <td></td><td></td><td><code> [inline]</code></td>
 
1402
        </tr>
 
1403
      </table>
 
1404
</div>
 
1405
<div class="memdoc">
 
1406
<p>Function inverts block of bits </p>
 
1407
 
 
1408
<p>Definition at line <a class="el" href="a00093_source.html#l02863">2863</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1409
 
 
1410
<p>References <a class="el" href="a00098_source.html#l00210">VECT_INVERT_ARR</a>.</p>
 
1411
 
 
1412
</div>
 
1413
</div>
 
1414
<a class="anchor" id="gac6cfb9f92e4df6bb4c76f6efb2382860"></a><!-- doxytag: member="bm::bit_is_all_zero" ref="gac6cfb9f92e4df6bb4c76f6efb2382860" args="(const bm::wordop_t *start, const bm::wordop_t *end)" -->
 
1415
<div class="memitem">
 
1416
<div class="memproto">
 
1417
      <table class="memname">
 
1418
        <tr>
 
1419
          <td class="memname">bool bm::bit_is_all_zero </td>
 
1420
          <td>(</td>
 
1421
          <td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *&nbsp;</td>
 
1422
          <td class="paramname"> <em>start</em>, </td>
 
1423
        </tr>
 
1424
        <tr>
 
1425
          <td class="paramkey"></td>
 
1426
          <td></td>
 
1427
          <td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *&nbsp;</td>
 
1428
          <td class="paramname"> <em>end</em></td><td>&nbsp;</td>
 
1429
        </tr>
 
1430
        <tr>
 
1431
          <td></td>
 
1432
          <td>)</td>
 
1433
          <td></td><td></td><td><code> [inline]</code></td>
 
1434
        </tr>
 
1435
      </table>
 
1436
</div>
 
1437
<div class="memdoc">
 
1438
 
 
1439
<p>Returns "true" if all bits in the block are 0. </p>
 
1440
 
 
1441
<p>Definition at line <a class="el" href="a00093_source.html#l02905">2905</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1442
 
 
1443
<p>Referenced by <a class="el" href="a00093_source.html#l03727">bm::bit_operation_or_any()</a>, <a class="el" href="a00093_source.html#l03665">bm::bit_operation_sub_any()</a>, <a class="el" href="a00093_source.html#l04054">bm::bit_operation_xor_any()</a>, <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>
 
1444
 
 
1445
</div>
 
1446
</div>
 
1447
<a class="anchor" id="gaae3ae537760044543f842363e4614e82"></a><!-- doxytag: member="bm::bit_list" ref="gaae3ae537760044543f842363e4614e82" args="(T w, B *bits)" -->
 
1448
<div class="memitem">
 
1449
<div class="memproto">
 
1450
<div class="memtemplate">
 
1451
template&lt;typename T , typename B &gt; </div>
 
1452
      <table class="memname">
 
1453
        <tr>
 
1454
          <td class="memname">unsigned bm::bit_list </td>
 
1455
          <td>(</td>
 
1456
          <td class="paramtype">T&nbsp;</td>
 
1457
          <td class="paramname"> <em>w</em>, </td>
 
1458
        </tr>
 
1459
        <tr>
 
1460
          <td class="paramkey"></td>
 
1461
          <td></td>
 
1462
          <td class="paramtype">B *&nbsp;</td>
 
1463
          <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
 
1464
        </tr>
 
1465
        <tr>
 
1466
          <td></td>
 
1467
          <td>)</td>
 
1468
          <td></td><td></td><td><code> [inline]</code></td>
 
1469
        </tr>
 
1470
      </table>
 
1471
</div>
 
1472
<div class="memdoc">
 
1473
 
 
1474
<p>Unpacks word into list of ON bit indexes. </p>
 
1475
<dl><dt><b>Parameters:</b></dt><dd>
 
1476
  <table border="0" cellspacing="2" cellpadding="0">
 
1477
    <tr><td valign="top"></td><td valign="top"><em>w</em>&nbsp;</td><td>- value </td></tr>
 
1478
    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>- pointer on the result array </td></tr>
 
1479
  </table>
 
1480
  </dd>
 
1481
</dl>
 
1482
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bits in the list </dd></dl>
 
1483
 
 
1484
<p>Definition at line <a class="el" href="a00093_source.html#l04416">4416</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1485
 
 
1486
<p>References <a class="el" href="a00093_source.html#l04278">bm::bit_for_each()</a>, and <a class="el" href="a00093_source.html#l04304">bm::copy_to_array_functor&lt; B &gt;::ptr()</a>.</p>
 
1487
 
 
1488
</div>
 
1489
</div>
 
1490
<a class="anchor" id="ga3c81f6bff8866ec3ed0a94903eee96b7"></a><!-- doxytag: member="bm::bit_list_4" ref="ga3c81f6bff8866ec3ed0a94903eee96b7" args="(T w, B *bits)" -->
 
1491
<div class="memitem">
 
1492
<div class="memproto">
 
1493
<div class="memtemplate">
 
1494
template&lt;typename T , typename B &gt; </div>
 
1495
      <table class="memname">
 
1496
        <tr>
 
1497
          <td class="memname">unsigned bm::bit_list_4 </td>
 
1498
          <td>(</td>
 
1499
          <td class="paramtype">T&nbsp;</td>
 
1500
          <td class="paramname"> <em>w</em>, </td>
 
1501
        </tr>
 
1502
        <tr>
 
1503
          <td class="paramkey"></td>
 
1504
          <td></td>
 
1505
          <td class="paramtype">B *&nbsp;</td>
 
1506
          <td class="paramname"> <em>bits</em></td><td>&nbsp;</td>
 
1507
        </tr>
 
1508
        <tr>
 
1509
          <td></td>
 
1510
          <td>)</td>
 
1511
          <td></td><td></td><td><code> [inline]</code></td>
 
1512
        </tr>
 
1513
      </table>
 
1514
</div>
 
1515
<div class="memdoc">
 
1516
 
 
1517
<p>Unpacks word into list of ON bit indexes (quad-bit based). </p>
 
1518
<dl><dt><b>Parameters:</b></dt><dd>
 
1519
  <table border="0" cellspacing="2" cellpadding="0">
 
1520
    <tr><td valign="top"></td><td valign="top"><em>w</em>&nbsp;</td><td>- value </td></tr>
 
1521
    <tr><td valign="top"></td><td valign="top"><em>bits</em>&nbsp;</td><td>- pointer on the result array </td></tr>
 
1522
  </table>
 
1523
  </dd>
 
1524
</dl>
 
1525
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bits in the list </dd></dl>
 
1526
 
 
1527
<p>Definition at line <a class="el" href="a00093_source.html#l04401">4401</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1528
 
 
1529
<p>References <a class="el" href="a00093_source.html#l04208">bm::bit_for_each_4()</a>, and <a class="el" href="a00093_source.html#l04304">bm::copy_to_array_functor&lt; B &gt;::ptr()</a>.</p>
 
1530
 
 
1531
<p>Referenced by <a class="el" href="a00087_source.html#l00500">bm::bvector&lt; Alloc, MS &gt;::enumerator::go_up()</a>.</p>
 
1532
 
 
1533
</div>
 
1534
</div>
 
1535
<a class="anchor" id="ga869fce5348076d4c7b92adcc2f1a49ab"></a><!-- doxytag: member="bm::bit_operation_and" ref="ga869fce5348076d4c7b92adcc2f1a49ab" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
1536
<div class="memitem">
 
1537
<div class="memproto">
 
1538
      <table class="memname">
 
1539
        <tr>
 
1540
          <td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_and </td>
 
1541
          <td>(</td>
 
1542
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1543
          <td class="paramname"> <em>dst</em>, </td>
 
1544
        </tr>
 
1545
        <tr>
 
1546
          <td class="paramkey"></td>
 
1547
          <td></td>
 
1548
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1549
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
1550
        </tr>
 
1551
        <tr>
 
1552
          <td></td>
 
1553
          <td>)</td>
 
1554
          <td></td><td></td><td><code> [inline]</code></td>
 
1555
        </tr>
 
1556
      </table>
 
1557
</div>
 
1558
<div class="memdoc">
 
1559
 
 
1560
<p>bitblock AND operation. </p>
 
1561
<dl><dt><b>Parameters:</b></dt><dd>
 
1562
  <table border="0" cellspacing="2" cellpadding="0">
 
1563
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
1564
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block.</td></tr>
 
1565
  </table>
 
1566
  </dd>
 
1567
</dl>
 
1568
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer on destination block. If returned value equal to src means that block mutation requested. NULL is valid return value. </dd></dl>
 
1569
 
 
1570
<p>Definition at line <a class="el" href="a00093_source.html#l03501">3501</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1571
 
 
1572
<p>References <a class="el" href="a00093_source.html#l03145">bm::bit_block_and()</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>, <a class="el" href="a00092_source.html#l00062">IS_FULL_BLOCK</a>, and <a class="el" href="a00092_source.html#l00061">IS_VALID_ADDR</a>.</p>
 
1573
 
 
1574
</div>
 
1575
</div>
 
1576
<a class="anchor" id="ga0e7995f7d6c791f6ff27a8dd21d324e5"></a><!-- doxytag: member="bm::bit_operation_and_any" ref="ga0e7995f7d6c791f6ff27a8dd21d324e5" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1577
<div class="memitem">
 
1578
<div class="memproto">
 
1579
      <table class="memname">
 
1580
        <tr>
 
1581
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_and_any </td>
 
1582
          <td>(</td>
 
1583
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1584
          <td class="paramname"> <em>src1</em>, </td>
 
1585
        </tr>
 
1586
        <tr>
 
1587
          <td class="paramkey"></td>
 
1588
          <td></td>
 
1589
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1590
          <td class="paramname"> <em>src1_end</em>, </td>
 
1591
        </tr>
 
1592
        <tr>
 
1593
          <td class="paramkey"></td>
 
1594
          <td></td>
 
1595
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1596
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1597
        </tr>
 
1598
        <tr>
 
1599
          <td></td>
 
1600
          <td>)</td>
 
1601
          <td></td><td></td><td><code> [inline]</code></td>
 
1602
        </tr>
 
1603
      </table>
 
1604
</div>
 
1605
<div class="memdoc">
 
1606
 
 
1607
<p>Performs bitblock AND operation test. </p>
 
1608
<dl><dt><b>Parameters:</b></dt><dd>
 
1609
  <table border="0" cellspacing="2" cellpadding="0">
 
1610
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1611
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1612
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
1613
  </table>
 
1614
  </dd>
 
1615
</dl>
 
1616
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero if there is any value </dd></dl>
 
1617
 
 
1618
<p>Definition at line <a class="el" href="a00093_source.html#l03589">3589</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1619
 
 
1620
<p>References <a class="el" href="a00093_source.html#l03229">bm::bit_block_and_any()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1621
 
 
1622
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1623
 
 
1624
</div>
 
1625
</div>
 
1626
<a class="anchor" id="ga9765914087df2fc22ec18db8128f2a12"></a><!-- doxytag: member="bm::bit_operation_and_count" ref="ga9765914087df2fc22ec18db8128f2a12" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1627
<div class="memitem">
 
1628
<div class="memproto">
 
1629
      <table class="memname">
 
1630
        <tr>
 
1631
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_and_count </td>
 
1632
          <td>(</td>
 
1633
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1634
          <td class="paramname"> <em>src1</em>, </td>
 
1635
        </tr>
 
1636
        <tr>
 
1637
          <td class="paramkey"></td>
 
1638
          <td></td>
 
1639
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1640
          <td class="paramname"> <em>src1_end</em>, </td>
 
1641
        </tr>
 
1642
        <tr>
 
1643
          <td class="paramkey"></td>
 
1644
          <td></td>
 
1645
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1646
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1647
        </tr>
 
1648
        <tr>
 
1649
          <td></td>
 
1650
          <td>)</td>
 
1651
          <td></td><td></td><td><code> [inline]</code></td>
 
1652
        </tr>
 
1653
      </table>
 
1654
</div>
 
1655
<div class="memdoc">
 
1656
 
 
1657
<p>Performs bitblock AND operation and calculates bitcount of the result. </p>
 
1658
<dl><dt><b>Parameters:</b></dt><dd>
 
1659
  <table border="0" cellspacing="2" cellpadding="0">
 
1660
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1661
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1662
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
1663
  </table>
 
1664
  </dd>
 
1665
</dl>
 
1666
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
 
1667
 
 
1668
<p>Definition at line <a class="el" href="a00093_source.html#l03566">3566</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1669
 
 
1670
<p>References <a class="el" href="a00093_source.html#l03179">bm::bit_block_and_count()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1671
 
 
1672
<p>Referenced by <a class="el" href="a00096_source.html#l02365">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_AND()</a>.</p>
 
1673
 
 
1674
</div>
 
1675
</div>
 
1676
<a class="anchor" id="ga0e945a9eaae699ad40f63b3f0632e6f9"></a><!-- doxytag: member="bm::bit_operation_or" ref="ga0e945a9eaae699ad40f63b3f0632e6f9" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
1677
<div class="memitem">
 
1678
<div class="memproto">
 
1679
      <table class="memname">
 
1680
        <tr>
 
1681
          <td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_or </td>
 
1682
          <td>(</td>
 
1683
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1684
          <td class="paramname"> <em>dst</em>, </td>
 
1685
        </tr>
 
1686
        <tr>
 
1687
          <td class="paramkey"></td>
 
1688
          <td></td>
 
1689
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1690
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
1691
        </tr>
 
1692
        <tr>
 
1693
          <td></td>
 
1694
          <td>)</td>
 
1695
          <td></td><td></td><td><code> [inline]</code></td>
 
1696
        </tr>
 
1697
      </table>
 
1698
</div>
 
1699
<div class="memdoc">
 
1700
 
 
1701
<p>Block OR operation. Makes analysis if block is 0 or FULL. </p>
 
1702
<dl><dt><b>Parameters:</b></dt><dd>
 
1703
  <table border="0" cellspacing="2" cellpadding="0">
 
1704
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
1705
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block.</td></tr>
 
1706
  </table>
 
1707
  </dd>
 
1708
</dl>
 
1709
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer on destination block. If returned value equal to src means that block mutation requested. NULL is valid return value. </dd></dl>
 
1710
 
 
1711
<p>Definition at line <a class="el" href="a00093_source.html#l03797">3797</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1712
 
 
1713
<p>References <a class="el" href="a00093_source.html#l03759">bm::bit_block_or()</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00060">FULL_BLOCK_ADDR</a>, <a class="el" href="a00092_source.html#l00062">IS_FULL_BLOCK</a>, <a class="el" href="a00092_source.html#l00061">IS_VALID_ADDR</a>, and <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>.</p>
 
1714
 
 
1715
</div>
 
1716
</div>
 
1717
<a class="anchor" id="ga6d26742bdc373074474a6932eab4f388"></a><!-- doxytag: member="bm::bit_operation_or_any" ref="ga6d26742bdc373074474a6932eab4f388" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1718
<div class="memitem">
 
1719
<div class="memproto">
 
1720
      <table class="memname">
 
1721
        <tr>
 
1722
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_or_any </td>
 
1723
          <td>(</td>
 
1724
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1725
          <td class="paramname"> <em>src1</em>, </td>
 
1726
        </tr>
 
1727
        <tr>
 
1728
          <td class="paramkey"></td>
 
1729
          <td></td>
 
1730
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1731
          <td class="paramname"> <em>src1_end</em>, </td>
 
1732
        </tr>
 
1733
        <tr>
 
1734
          <td class="paramkey"></td>
 
1735
          <td></td>
 
1736
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1737
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1738
        </tr>
 
1739
        <tr>
 
1740
          <td></td>
 
1741
          <td>)</td>
 
1742
          <td></td><td></td><td><code> [inline]</code></td>
 
1743
        </tr>
 
1744
      </table>
 
1745
</div>
 
1746
<div class="memdoc">
 
1747
 
 
1748
<p>Performs bitblock OR operation test. </p>
 
1749
<dl><dt><b>Parameters:</b></dt><dd>
 
1750
  <table border="0" cellspacing="2" cellpadding="0">
 
1751
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1752
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1753
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
1754
  </table>
 
1755
  </dd>
 
1756
</dl>
 
1757
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are any bits </dd></dl>
 
1758
 
 
1759
<p>Definition at line <a class="el" href="a00093_source.html#l03727">3727</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1760
 
 
1761
<p>References <a class="el" href="a00093_source.html#l03469">bm::bit_block_or_any()</a>, <a class="el" href="a00093_source.html#l02905">bm::bit_is_all_zero()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1762
 
 
1763
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1764
 
 
1765
</div>
 
1766
</div>
 
1767
<a class="anchor" id="ga5a267aff3b56cc6dadf5a3a338e00a1d"></a><!-- doxytag: member="bm::bit_operation_or_count" ref="ga5a267aff3b56cc6dadf5a3a338e00a1d" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1768
<div class="memitem">
 
1769
<div class="memproto">
 
1770
      <table class="memname">
 
1771
        <tr>
 
1772
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_or_count </td>
 
1773
          <td>(</td>
 
1774
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1775
          <td class="paramname"> <em>src1</em>, </td>
 
1776
        </tr>
 
1777
        <tr>
 
1778
          <td class="paramkey"></td>
 
1779
          <td></td>
 
1780
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1781
          <td class="paramname"> <em>src1_end</em>, </td>
 
1782
        </tr>
 
1783
        <tr>
 
1784
          <td class="paramkey"></td>
 
1785
          <td></td>
 
1786
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1787
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1788
        </tr>
 
1789
        <tr>
 
1790
          <td></td>
 
1791
          <td>)</td>
 
1792
          <td></td><td></td><td><code> [inline]</code></td>
 
1793
        </tr>
 
1794
      </table>
 
1795
</div>
 
1796
<div class="memdoc">
 
1797
 
 
1798
<p>Performs bitblock OR operation and calculates bitcount of the result. </p>
 
1799
<dl><dt><b>Parameters:</b></dt><dd>
 
1800
  <table border="0" cellspacing="2" cellpadding="0">
 
1801
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1802
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1803
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
1804
  </table>
 
1805
  </dd>
 
1806
</dl>
 
1807
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
 
1808
 
 
1809
<p>Definition at line <a class="el" href="a00093_source.html#l03695">3695</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1810
 
 
1811
<p>References <a class="el" href="a00093_source.html#l02505">bm::bit_block_calc_count()</a>, <a class="el" href="a00093_source.html#l03420">bm::bit_block_or_count()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1812
 
 
1813
<p>Referenced by <a class="el" href="a00096_source.html#l02424">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_OR()</a>.</p>
 
1814
 
 
1815
</div>
 
1816
</div>
 
1817
<a class="anchor" id="gad7afa9bce28a376360ca4826960d669f"></a><!-- doxytag: member="bm::bit_operation_sub" ref="gad7afa9bce28a376360ca4826960d669f" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
1818
<div class="memitem">
 
1819
<div class="memproto">
 
1820
      <table class="memname">
 
1821
        <tr>
 
1822
          <td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_sub </td>
 
1823
          <td>(</td>
 
1824
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1825
          <td class="paramname"> <em>dst</em>, </td>
 
1826
        </tr>
 
1827
        <tr>
 
1828
          <td class="paramkey"></td>
 
1829
          <td></td>
 
1830
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1831
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
1832
        </tr>
 
1833
        <tr>
 
1834
          <td></td>
 
1835
          <td>)</td>
 
1836
          <td></td><td></td><td><code> [inline]</code></td>
 
1837
        </tr>
 
1838
      </table>
 
1839
</div>
 
1840
<div class="memdoc">
 
1841
 
 
1842
<p>bitblock SUB operation. </p>
 
1843
<dl><dt><b>Parameters:</b></dt><dd>
 
1844
  <table border="0" cellspacing="2" cellpadding="0">
 
1845
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
1846
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block.</td></tr>
 
1847
  </table>
 
1848
  </dd>
 
1849
</dl>
 
1850
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer on destination block. If returned value equal to src means that block mutation requested. NULL is valid return value. </dd></dl>
 
1851
 
 
1852
<p>Definition at line <a class="el" href="a00093_source.html#l03895">3895</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1853
 
 
1854
<p>References <a class="el" href="a00093_source.html#l03855">bm::bit_block_sub()</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, <a class="el" href="a00092_source.html#l00062">IS_FULL_BLOCK</a>, and <a class="el" href="a00092_source.html#l00061">IS_VALID_ADDR</a>.</p>
 
1855
 
 
1856
</div>
 
1857
</div>
 
1858
<a class="anchor" id="ga847d5a84673b284be984f0db583e2723"></a><!-- doxytag: member="bm::bit_operation_sub_any" ref="ga847d5a84673b284be984f0db583e2723" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1859
<div class="memitem">
 
1860
<div class="memproto">
 
1861
      <table class="memname">
 
1862
        <tr>
 
1863
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_any </td>
 
1864
          <td>(</td>
 
1865
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1866
          <td class="paramname"> <em>src1</em>, </td>
 
1867
        </tr>
 
1868
        <tr>
 
1869
          <td class="paramkey"></td>
 
1870
          <td></td>
 
1871
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1872
          <td class="paramname"> <em>src1_end</em>, </td>
 
1873
        </tr>
 
1874
        <tr>
 
1875
          <td class="paramkey"></td>
 
1876
          <td></td>
 
1877
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1878
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1879
        </tr>
 
1880
        <tr>
 
1881
          <td></td>
 
1882
          <td>)</td>
 
1883
          <td></td><td></td><td><code> [inline]</code></td>
 
1884
        </tr>
 
1885
      </table>
 
1886
</div>
 
1887
<div class="memdoc">
 
1888
 
 
1889
<p>Performs bitblock test of SUB operation. </p>
 
1890
<dl><dt><b>Parameters:</b></dt><dd>
 
1891
  <table border="0" cellspacing="2" cellpadding="0">
 
1892
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1893
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1894
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block</td></tr>
 
1895
  </table>
 
1896
  </dd>
 
1897
</dl>
 
1898
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are any bits </dd></dl>
 
1899
 
 
1900
<p>Definition at line <a class="el" href="a00093_source.html#l03665">3665</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1901
 
 
1902
<p>References <a class="el" href="a00093_source.html#l03390">bm::bit_block_sub_any()</a>, <a class="el" href="a00093_source.html#l02905">bm::bit_is_all_zero()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1903
 
 
1904
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
1905
 
 
1906
</div>
 
1907
</div>
 
1908
<a class="anchor" id="gaabb39bf01bf973cb7bf3648873921ab7"></a><!-- doxytag: member="bm::bit_operation_sub_count" ref="gaabb39bf01bf973cb7bf3648873921ab7" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1909
<div class="memitem">
 
1910
<div class="memproto">
 
1911
      <table class="memname">
 
1912
        <tr>
 
1913
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_count </td>
 
1914
          <td>(</td>
 
1915
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1916
          <td class="paramname"> <em>src1</em>, </td>
 
1917
        </tr>
 
1918
        <tr>
 
1919
          <td class="paramkey"></td>
 
1920
          <td></td>
 
1921
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1922
          <td class="paramname"> <em>src1_end</em>, </td>
 
1923
        </tr>
 
1924
        <tr>
 
1925
          <td class="paramkey"></td>
 
1926
          <td></td>
 
1927
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1928
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1929
        </tr>
 
1930
        <tr>
 
1931
          <td></td>
 
1932
          <td>)</td>
 
1933
          <td></td><td></td><td><code> [inline]</code></td>
 
1934
        </tr>
 
1935
      </table>
 
1936
</div>
 
1937
<div class="memdoc">
 
1938
 
 
1939
<p>Performs bitblock SUB operation and calculates bitcount of the result. </p>
 
1940
<dl><dt><b>Parameters:</b></dt><dd>
 
1941
  <table border="0" cellspacing="2" cellpadding="0">
 
1942
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1943
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1944
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block</td></tr>
 
1945
  </table>
 
1946
  </dd>
 
1947
</dl>
 
1948
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
 
1949
 
 
1950
<p>Definition at line <a class="el" href="a00093_source.html#l03614">3614</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
1951
 
 
1952
<p>References <a class="el" href="a00093_source.html#l02505">bm::bit_block_calc_count()</a>, <a class="el" href="a00093_source.html#l03341">bm::bit_block_sub_count()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
1953
 
 
1954
<p>Referenced by <a class="el" href="a00093_source.html#l03644">bm::bit_operation_sub_count_inv()</a>, <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>, <a class="el" href="a00096_source.html#l02580">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_SUB_AB()</a>, and <a class="el" href="a00096_source.html#l02659">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_SUB_BA()</a>.</p>
 
1955
 
 
1956
</div>
 
1957
</div>
 
1958
<a class="anchor" id="ga53867faf377db72324b858a37063c0b8"></a><!-- doxytag: member="bm::bit_operation_sub_count_inv" ref="ga53867faf377db72324b858a37063c0b8" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
1959
<div class="memitem">
 
1960
<div class="memproto">
 
1961
      <table class="memname">
 
1962
        <tr>
 
1963
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_count_inv </td>
 
1964
          <td>(</td>
 
1965
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1966
          <td class="paramname"> <em>src1</em>, </td>
 
1967
        </tr>
 
1968
        <tr>
 
1969
          <td class="paramkey"></td>
 
1970
          <td></td>
 
1971
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1972
          <td class="paramname"> <em>src1_end</em>, </td>
 
1973
        </tr>
 
1974
        <tr>
 
1975
          <td class="paramkey"></td>
 
1976
          <td></td>
 
1977
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
1978
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
1979
        </tr>
 
1980
        <tr>
 
1981
          <td></td>
 
1982
          <td>)</td>
 
1983
          <td></td><td></td><td><code> [inline]</code></td>
 
1984
        </tr>
 
1985
      </table>
 
1986
</div>
 
1987
<div class="memdoc">
 
1988
 
 
1989
<p>Performs inverted bitblock SUB operation and calculates bitcount of the result. </p>
 
1990
<dl><dt><b>Parameters:</b></dt><dd>
 
1991
  <table border="0" cellspacing="2" cellpadding="0">
 
1992
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
1993
    <tr><td valign="top"></td><td valign="top"><em>src1_end</em>&nbsp;</td><td>- first bit block end </td></tr>
 
1994
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block</td></tr>
 
1995
  </table>
 
1996
  </dd>
 
1997
</dl>
 
1998
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
 
1999
 
 
2000
<p>Definition at line <a class="el" href="a00093_source.html#l03644">3644</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2001
 
 
2002
<p>References <a class="el" href="a00093_source.html#l03614">bm::bit_operation_sub_count()</a>.</p>
 
2003
 
 
2004
</div>
 
2005
</div>
 
2006
<a class="anchor" id="ga179de722e87ccf8189d975ca6beed025"></a><!-- doxytag: member="bm::bit_operation_xor" ref="ga179de722e87ccf8189d975ca6beed025" args="(bm::word_t *BMRESTRICT dst, const bm::word_t *BMRESTRICT src)" -->
 
2007
<div class="memitem">
 
2008
<div class="memproto">
 
2009
      <table class="memname">
 
2010
        <tr>
 
2011
          <td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_xor </td>
 
2012
          <td>(</td>
 
2013
          <td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2014
          <td class="paramname"> <em>dst</em>, </td>
 
2015
        </tr>
 
2016
        <tr>
 
2017
          <td class="paramkey"></td>
 
2018
          <td></td>
 
2019
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2020
          <td class="paramname"> <em>src</em></td><td>&nbsp;</td>
 
2021
        </tr>
 
2022
        <tr>
 
2023
          <td></td>
 
2024
          <td>)</td>
 
2025
          <td></td><td></td><td><code> [inline]</code></td>
 
2026
        </tr>
 
2027
      </table>
 
2028
</div>
 
2029
<div class="memdoc">
 
2030
 
 
2031
<p>bitblock XOR operation. </p>
 
2032
<dl><dt><b>Parameters:</b></dt><dd>
 
2033
  <table border="0" cellspacing="2" cellpadding="0">
 
2034
    <tr><td valign="top"></td><td valign="top"><em>dst</em>&nbsp;</td><td>- destination block. </td></tr>
 
2035
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>- source block.</td></tr>
 
2036
  </table>
 
2037
  </dd>
 
2038
</dl>
 
2039
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer on destination block. If returned value equal to src means that block mutation requested. NULL is valid return value. </dd></dl>
 
2040
 
 
2041
<p>Definition at line <a class="el" href="a00093_source.html#l03991">3991</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2042
 
 
2043
<p>References <a class="el" href="a00093_source.html#l03951">bm::bit_block_xor()</a>, <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>, and <a class="el" href="a00092_source.html#l00061">IS_VALID_ADDR</a>.</p>
 
2044
 
 
2045
</div>
 
2046
</div>
 
2047
<a class="anchor" id="gaa86561b6d11c3f01dd772563c692f732"></a><!-- doxytag: member="bm::bit_operation_xor_any" ref="gaa86561b6d11c3f01dd772563c692f732" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
2048
<div class="memitem">
 
2049
<div class="memproto">
 
2050
      <table class="memname">
 
2051
        <tr>
 
2052
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_xor_any </td>
 
2053
          <td>(</td>
 
2054
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2055
          <td class="paramname"> <em>src1</em>, </td>
 
2056
        </tr>
 
2057
        <tr>
 
2058
          <td class="paramkey"></td>
 
2059
          <td></td>
 
2060
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2061
          <td class="paramname"> <em>src1_end</em>, </td>
 
2062
        </tr>
 
2063
        <tr>
 
2064
          <td class="paramkey"></td>
 
2065
          <td></td>
 
2066
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2067
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
2068
        </tr>
 
2069
        <tr>
 
2070
          <td></td>
 
2071
          <td>)</td>
 
2072
          <td></td><td></td><td><code> [inline]</code></td>
 
2073
        </tr>
 
2074
      </table>
 
2075
</div>
 
2076
<div class="memdoc">
 
2077
 
 
2078
<p>Performs bitblock XOR operation test. </p>
 
2079
<dl><dt><b>Parameters:</b></dt><dd>
 
2080
  <table border="0" cellspacing="2" cellpadding="0">
 
2081
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
2082
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
2083
  </table>
 
2084
  </dd>
 
2085
</dl>
 
2086
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are bits </dd></dl>
 
2087
 
 
2088
<p>Definition at line <a class="el" href="a00093_source.html#l04054">4054</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2089
 
 
2090
<p>References <a class="el" href="a00093_source.html#l03310">bm::bit_block_xor_any()</a>, <a class="el" href="a00093_source.html#l02905">bm::bit_is_all_zero()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
2091
 
 
2092
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
2093
 
 
2094
</div>
 
2095
</div>
 
2096
<a class="anchor" id="gace08ab77feefb638daee164ee83118bc"></a><!-- doxytag: member="bm::bit_operation_xor_count" ref="gace08ab77feefb638daee164ee83118bc" args="(const bm::word_t *BMRESTRICT src1, const bm::word_t *BMRESTRICT src1_end, const bm::word_t *BMRESTRICT src2)" -->
 
2097
<div class="memitem">
 
2098
<div class="memproto">
 
2099
      <table class="memname">
 
2100
        <tr>
 
2101
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_xor_count </td>
 
2102
          <td>(</td>
 
2103
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2104
          <td class="paramname"> <em>src1</em>, </td>
 
2105
        </tr>
 
2106
        <tr>
 
2107
          <td class="paramkey"></td>
 
2108
          <td></td>
 
2109
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2110
          <td class="paramname"> <em>src1_end</em>, </td>
 
2111
        </tr>
 
2112
        <tr>
 
2113
          <td class="paramkey"></td>
 
2114
          <td></td>
 
2115
          <td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT&nbsp;</td>
 
2116
          <td class="paramname"> <em>src2</em></td><td>&nbsp;</td>
 
2117
        </tr>
 
2118
        <tr>
 
2119
          <td></td>
 
2120
          <td>)</td>
 
2121
          <td></td><td></td><td><code> [inline]</code></td>
 
2122
        </tr>
 
2123
      </table>
 
2124
</div>
 
2125
<div class="memdoc">
 
2126
 
 
2127
<p>Performs bitblock XOR operation and calculates bitcount of the result. </p>
 
2128
<dl><dt><b>Parameters:</b></dt><dd>
 
2129
  <table border="0" cellspacing="2" cellpadding="0">
 
2130
    <tr><td valign="top"></td><td valign="top"><em>src1</em>&nbsp;</td><td>- first bit block. </td></tr>
 
2131
    <tr><td valign="top"></td><td valign="top"><em>src2</em>&nbsp;</td><td>- second bit block.</td></tr>
 
2132
  </table>
 
2133
  </dd>
 
2134
</dl>
 
2135
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
 
2136
 
 
2137
<p>Definition at line <a class="el" href="a00093_source.html#l04029">4029</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2138
 
 
2139
<p>References <a class="el" href="a00093_source.html#l02505">bm::bit_block_calc_count()</a>, <a class="el" href="a00093_source.html#l03260">bm::bit_block_xor_count()</a>, and <a class="el" href="a00092_source.html#l00063">IS_EMPTY_BLOCK</a>.</p>
 
2140
 
 
2141
<p>Referenced by <a class="el" href="a00096_source.html#l02502">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_XOR()</a>.</p>
 
2142
 
 
2143
</div>
 
2144
</div>
 
2145
<a class="anchor" id="ga91fe9566575d9d66e1bb9d030b3d29a0"></a><!-- doxytag: member="bm::bitcmp" ref="ga91fe9566575d9d66e1bb9d030b3d29a0" args="(const T *buf1, const T *buf2, unsigned len)" -->
 
2146
<div class="memitem">
 
2147
<div class="memproto">
 
2148
<div class="memtemplate">
 
2149
template&lt;typename T &gt; </div>
 
2150
      <table class="memname">
 
2151
        <tr>
 
2152
          <td class="memname">int bm::bitcmp </td>
 
2153
          <td>(</td>
 
2154
          <td class="paramtype">const T *&nbsp;</td>
 
2155
          <td class="paramname"> <em>buf1</em>, </td>
 
2156
        </tr>
 
2157
        <tr>
 
2158
          <td class="paramkey"></td>
 
2159
          <td></td>
 
2160
          <td class="paramtype">const T *&nbsp;</td>
 
2161
          <td class="paramname"> <em>buf2</em>, </td>
 
2162
        </tr>
 
2163
        <tr>
 
2164
          <td class="paramkey"></td>
 
2165
          <td></td>
 
2166
          <td class="paramtype">unsigned&nbsp;</td>
 
2167
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
 
2168
        </tr>
 
2169
        <tr>
 
2170
          <td></td>
 
2171
          <td>)</td>
 
2172
          <td></td><td></td><td><code> [inline]</code></td>
 
2173
        </tr>
 
2174
      </table>
 
2175
</div>
 
2176
<div class="memdoc">
 
2177
 
 
2178
<p>Lexicographical comparison of BIT buffers. </p>
 
2179
<dl><dt><b>Parameters:</b></dt><dd>
 
2180
  <table border="0" cellspacing="2" cellpadding="0">
 
2181
    <tr><td valign="top"></td><td valign="top"><em>buf1</em>&nbsp;</td><td>- First buffer pointer. </td></tr>
 
2182
    <tr><td valign="top"></td><td valign="top"><em>buf2</em>&nbsp;</td><td>- Second buffer pointer. </td></tr>
 
2183
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>- Buffer length in elements (T). </td></tr>
 
2184
  </table>
 
2185
  </dd>
 
2186
</dl>
 
2187
<dl class="return"><dt><b>Returns:</b></dt><dd>&lt;0 - less, =0 - equal, &gt;0 - greater. </dd></dl>
 
2188
 
 
2189
<p>Definition at line <a class="el" href="a00093_source.html#l02268">2268</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2190
 
 
2191
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2192
 
 
2193
<p>Referenced by <a class="el" href="a00087_source.html#l01921">bm::bvector&lt; Alloc, MS &gt;::compare()</a>.</p>
 
2194
 
 
2195
</div>
 
2196
</div>
 
2197
<a class="anchor" id="gad6e40898b8836ae1923b06a3d028fcaa"></a><!-- doxytag: member="bm::gap_bitset_and_any" ref="gad6e40898b8836ae1923b06a3d028fcaa" args="(const unsigned *block, const T *buf)" -->
 
2198
<div class="memitem">
 
2199
<div class="memproto">
 
2200
<div class="memtemplate">
 
2201
template&lt;typename T &gt; </div>
 
2202
      <table class="memname">
 
2203
        <tr>
 
2204
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_and_any </td>
 
2205
          <td>(</td>
 
2206
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2207
          <td class="paramname"> <em>block</em>, </td>
 
2208
        </tr>
 
2209
        <tr>
 
2210
          <td class="paramkey"></td>
 
2211
          <td></td>
 
2212
          <td class="paramtype">const T *&nbsp;</td>
 
2213
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2214
        </tr>
 
2215
        <tr>
 
2216
          <td></td>
 
2217
          <td>)</td>
 
2218
          <td></td><td></td><td><code> [inline]</code></td>
 
2219
        </tr>
 
2220
      </table>
 
2221
</div>
 
2222
<div class="memdoc">
 
2223
 
 
2224
<p>Bitcount test of bit block AND masked by GAP block. </p>
 
2225
<dl><dt><b>Parameters:</b></dt><dd>
 
2226
  <table border="0" cellspacing="2" cellpadding="0">
 
2227
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2228
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2229
  </table>
 
2230
  </dd>
 
2231
</dl>
 
2232
 
 
2233
<p>Definition at line <a class="el" href="a00093_source.html#l01631">1631</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2234
 
 
2235
<p>References <a class="el" href="a00093_source.html#l02798">bm::bit_block_any_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2236
 
 
2237
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
2238
 
 
2239
</div>
 
2240
</div>
 
2241
<a class="anchor" id="gab87384cbf46a04d86c008ab2463d02cc"></a><!-- doxytag: member="bm::gap_bitset_and_count" ref="gab87384cbf46a04d86c008ab2463d02cc" args="(const unsigned *block, const T *buf)" -->
 
2242
<div class="memitem">
 
2243
<div class="memproto">
 
2244
<div class="memtemplate">
 
2245
template&lt;typename T &gt; </div>
 
2246
      <table class="memname">
 
2247
        <tr>
 
2248
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_and_count </td>
 
2249
          <td>(</td>
 
2250
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2251
          <td class="paramname"> <em>block</em>, </td>
 
2252
        </tr>
 
2253
        <tr>
 
2254
          <td class="paramkey"></td>
 
2255
          <td></td>
 
2256
          <td class="paramtype">const T *&nbsp;</td>
 
2257
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2258
        </tr>
 
2259
        <tr>
 
2260
          <td></td>
 
2261
          <td>)</td>
 
2262
          <td></td><td></td><td><code> [inline]</code></td>
 
2263
        </tr>
 
2264
      </table>
 
2265
</div>
 
2266
<div class="memdoc">
 
2267
 
 
2268
<p>Compute bitcount of bit block AND masked by GAP block. </p>
 
2269
<dl><dt><b>Parameters:</b></dt><dd>
 
2270
  <table border="0" cellspacing="2" cellpadding="0">
 
2271
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2272
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2273
  </table>
 
2274
  </dd>
 
2275
</dl>
 
2276
 
 
2277
<p>Definition at line <a class="el" href="a00093_source.html#l01595">1595</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2278
 
 
2279
<p>References <a class="el" href="a00093_source.html#l02729">bm::bit_block_calc_count_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2280
 
 
2281
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
2282
 
 
2283
</div>
 
2284
</div>
 
2285
<a class="anchor" id="gad15f1b92c70752cd3b97fa9e0c585f00"></a><!-- doxytag: member="bm::gap_bitset_or_any" ref="gad15f1b92c70752cd3b97fa9e0c585f00" args="(const unsigned *block, const T *buf)" -->
 
2286
<div class="memitem">
 
2287
<div class="memproto">
 
2288
<div class="memtemplate">
 
2289
template&lt;typename T &gt; </div>
 
2290
      <table class="memname">
 
2291
        <tr>
 
2292
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_or_any </td>
 
2293
          <td>(</td>
 
2294
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2295
          <td class="paramname"> <em>block</em>, </td>
 
2296
        </tr>
 
2297
        <tr>
 
2298
          <td class="paramkey"></td>
 
2299
          <td></td>
 
2300
          <td class="paramtype">const T *&nbsp;</td>
 
2301
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2302
        </tr>
 
2303
        <tr>
 
2304
          <td></td>
 
2305
          <td>)</td>
 
2306
          <td></td><td></td><td><code> [inline]</code></td>
 
2307
        </tr>
 
2308
      </table>
 
2309
</div>
 
2310
<div class="memdoc">
 
2311
 
 
2312
<p>Compute bitcount test of bit block OR masked by GAP block. </p>
 
2313
<dl><dt><b>Parameters:</b></dt><dd>
 
2314
  <table border="0" cellspacing="2" cellpadding="0">
 
2315
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2316
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2317
  </table>
 
2318
  </dd>
 
2319
</dl>
 
2320
 
 
2321
<p>Definition at line <a class="el" href="a00093_source.html#l01869">1869</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2322
 
 
2323
<p>References <a class="el" href="a00093_source.html#l02798">bm::bit_block_any_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2324
 
 
2325
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
2326
 
 
2327
</div>
 
2328
</div>
 
2329
<a class="anchor" id="ga23733890861063a59f787e26763a734a"></a><!-- doxytag: member="bm::gap_bitset_or_count" ref="ga23733890861063a59f787e26763a734a" args="(const unsigned *block, const T *buf)" -->
 
2330
<div class="memitem">
 
2331
<div class="memproto">
 
2332
<div class="memtemplate">
 
2333
template&lt;typename T &gt; </div>
 
2334
      <table class="memname">
 
2335
        <tr>
 
2336
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_or_count </td>
 
2337
          <td>(</td>
 
2338
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2339
          <td class="paramname"> <em>block</em>, </td>
 
2340
        </tr>
 
2341
        <tr>
 
2342
          <td class="paramkey"></td>
 
2343
          <td></td>
 
2344
          <td class="paramtype">const T *&nbsp;</td>
 
2345
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2346
        </tr>
 
2347
        <tr>
 
2348
          <td></td>
 
2349
          <td>)</td>
 
2350
          <td></td><td></td><td><code> [inline]</code></td>
 
2351
        </tr>
 
2352
      </table>
 
2353
</div>
 
2354
<div class="memdoc">
 
2355
 
 
2356
<p>Compute bitcount of bit block OR masked by GAP block. </p>
 
2357
<dl><dt><b>Parameters:</b></dt><dd>
 
2358
  <table border="0" cellspacing="2" cellpadding="0">
 
2359
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2360
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2361
  </table>
 
2362
  </dd>
 
2363
</dl>
 
2364
 
 
2365
<p>Definition at line <a class="el" href="a00093_source.html#l01822">1822</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2366
 
 
2367
<p>References <a class="el" href="a00093_source.html#l02729">bm::bit_block_calc_count_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2368
 
 
2369
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
2370
 
 
2371
</div>
 
2372
</div>
 
2373
<a class="anchor" id="gaab7c711122e8f189555dffd83a21111c"></a><!-- doxytag: member="bm::gap_bitset_sub_any" ref="gaab7c711122e8f189555dffd83a21111c" args="(const unsigned *block, const T *buf)" -->
 
2374
<div class="memitem">
 
2375
<div class="memproto">
 
2376
<div class="memtemplate">
 
2377
template&lt;typename T &gt; </div>
 
2378
      <table class="memname">
 
2379
        <tr>
 
2380
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_sub_any </td>
 
2381
          <td>(</td>
 
2382
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2383
          <td class="paramname"> <em>block</em>, </td>
 
2384
        </tr>
 
2385
        <tr>
 
2386
          <td class="paramkey"></td>
 
2387
          <td></td>
 
2388
          <td class="paramtype">const T *&nbsp;</td>
 
2389
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2390
        </tr>
 
2391
        <tr>
 
2392
          <td></td>
 
2393
          <td>)</td>
 
2394
          <td></td><td></td><td><code> [inline]</code></td>
 
2395
        </tr>
 
2396
      </table>
 
2397
</div>
 
2398
<div class="memdoc">
 
2399
 
 
2400
<p>Compute bitcount test of bit block SUB masked by GAP block. </p>
 
2401
<dl><dt><b>Parameters:</b></dt><dd>
 
2402
  <table border="0" cellspacing="2" cellpadding="0">
 
2403
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2404
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2405
  </table>
 
2406
  </dd>
 
2407
</dl>
 
2408
 
 
2409
<p>Definition at line <a class="el" href="a00093_source.html#l01703">1703</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2410
 
 
2411
<p>References <a class="el" href="a00093_source.html#l02798">bm::bit_block_any_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2412
 
 
2413
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
2414
 
 
2415
</div>
 
2416
</div>
 
2417
<a class="anchor" id="ga15a780da58d5aeb67ffc51c84fa6152e"></a><!-- doxytag: member="bm::gap_bitset_sub_count" ref="ga15a780da58d5aeb67ffc51c84fa6152e" args="(const unsigned *block, const T *buf)" -->
 
2418
<div class="memitem">
 
2419
<div class="memproto">
 
2420
<div class="memtemplate">
 
2421
template&lt;typename T &gt; </div>
 
2422
      <table class="memname">
 
2423
        <tr>
 
2424
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_sub_count </td>
 
2425
          <td>(</td>
 
2426
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2427
          <td class="paramname"> <em>block</em>, </td>
 
2428
        </tr>
 
2429
        <tr>
 
2430
          <td class="paramkey"></td>
 
2431
          <td></td>
 
2432
          <td class="paramtype">const T *&nbsp;</td>
 
2433
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2434
        </tr>
 
2435
        <tr>
 
2436
          <td></td>
 
2437
          <td>)</td>
 
2438
          <td></td><td></td><td><code> [inline]</code></td>
 
2439
        </tr>
 
2440
      </table>
 
2441
</div>
 
2442
<div class="memdoc">
 
2443
 
 
2444
<p>Compute bitcount of bit block SUB masked by GAP block. </p>
 
2445
<dl><dt><b>Parameters:</b></dt><dd>
 
2446
  <table border="0" cellspacing="2" cellpadding="0">
 
2447
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2448
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2449
  </table>
 
2450
  </dd>
 
2451
</dl>
 
2452
 
 
2453
<p>Definition at line <a class="el" href="a00093_source.html#l01670">1670</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2454
 
 
2455
<p>References <a class="el" href="a00093_source.html#l02729">bm::bit_block_calc_count_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2456
 
 
2457
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
2458
 
 
2459
</div>
 
2460
</div>
 
2461
<a class="anchor" id="gad0f7ee00f84ea357d55e6a2f507c8918"></a><!-- doxytag: member="bm::gap_bitset_xor_any" ref="gad0f7ee00f84ea357d55e6a2f507c8918" args="(const unsigned *block, const T *buf)" -->
 
2462
<div class="memitem">
 
2463
<div class="memproto">
 
2464
<div class="memtemplate">
 
2465
template&lt;typename T &gt; </div>
 
2466
      <table class="memname">
 
2467
        <tr>
 
2468
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_xor_any </td>
 
2469
          <td>(</td>
 
2470
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2471
          <td class="paramname"> <em>block</em>, </td>
 
2472
        </tr>
 
2473
        <tr>
 
2474
          <td class="paramkey"></td>
 
2475
          <td></td>
 
2476
          <td class="paramtype">const T *&nbsp;</td>
 
2477
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2478
        </tr>
 
2479
        <tr>
 
2480
          <td></td>
 
2481
          <td>)</td>
 
2482
          <td></td><td></td><td><code> [inline]</code></td>
 
2483
        </tr>
 
2484
      </table>
 
2485
</div>
 
2486
<div class="memdoc">
 
2487
 
 
2488
<p>Compute bitcount test of bit block XOR masked by GAP block. </p>
 
2489
<dl><dt><b>Parameters:</b></dt><dd>
 
2490
  <table border="0" cellspacing="2" cellpadding="0">
 
2491
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2492
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2493
  </table>
 
2494
  </dd>
 
2495
</dl>
 
2496
 
 
2497
<p>Definition at line <a class="el" href="a00093_source.html#l01779">1779</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2498
 
 
2499
<p>References <a class="el" href="a00093_source.html#l02798">bm::bit_block_any_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2500
 
 
2501
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
 
2502
 
 
2503
</div>
 
2504
</div>
 
2505
<a class="anchor" id="ga803fbc7c790f07b14175303e524bd2d8"></a><!-- doxytag: member="bm::gap_bitset_xor_count" ref="ga803fbc7c790f07b14175303e524bd2d8" args="(const unsigned *block, const T *buf)" -->
 
2506
<div class="memitem">
 
2507
<div class="memproto">
 
2508
<div class="memtemplate">
 
2509
template&lt;typename T &gt; </div>
 
2510
      <table class="memname">
 
2511
        <tr>
 
2512
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_xor_count </td>
 
2513
          <td>(</td>
 
2514
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2515
          <td class="paramname"> <em>block</em>, </td>
 
2516
        </tr>
 
2517
        <tr>
 
2518
          <td class="paramkey"></td>
 
2519
          <td></td>
 
2520
          <td class="paramtype">const T *&nbsp;</td>
 
2521
          <td class="paramname"> <em>buf</em></td><td>&nbsp;</td>
 
2522
        </tr>
 
2523
        <tr>
 
2524
          <td></td>
 
2525
          <td>)</td>
 
2526
          <td></td><td></td><td><code> [inline]</code></td>
 
2527
        </tr>
 
2528
      </table>
 
2529
</div>
 
2530
<div class="memdoc">
 
2531
 
 
2532
<p>Compute bitcount of bit block XOR masked by GAP block. </p>
 
2533
<dl><dt><b>Parameters:</b></dt><dd>
 
2534
  <table border="0" cellspacing="2" cellpadding="0">
 
2535
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- bitblock buffer pointer. </td></tr>
 
2536
    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>- GAP buffer pointer. </td></tr>
 
2537
  </table>
 
2538
  </dd>
 
2539
</dl>
 
2540
 
 
2541
<p>Definition at line <a class="el" href="a00093_source.html#l01741">1741</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2542
 
 
2543
<p>References <a class="el" href="a00093_source.html#l02729">bm::bit_block_calc_count_range()</a>, and <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
 
2544
 
 
2545
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
 
2546
 
 
2547
</div>
 
2548
</div>
 
2549
<a class="anchor" id="ga97b1075250d4bf10f596ff2fbc334ceb"></a><!-- doxytag: member="bm::is_bits_one" ref="ga97b1075250d4bf10f596ff2fbc334ceb" args="(const bm::wordop_t *start, const bm::wordop_t *end)" -->
 
2550
<div class="memitem">
 
2551
<div class="memproto">
 
2552
      <table class="memname">
 
2553
        <tr>
 
2554
          <td class="memname">bool bm::is_bits_one </td>
 
2555
          <td>(</td>
 
2556
          <td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *&nbsp;</td>
 
2557
          <td class="paramname"> <em>start</em>, </td>
 
2558
        </tr>
 
2559
        <tr>
 
2560
          <td class="paramkey"></td>
 
2561
          <td></td>
 
2562
          <td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> *&nbsp;</td>
 
2563
          <td class="paramname"> <em>end</em></td><td>&nbsp;</td>
 
2564
        </tr>
 
2565
        <tr>
 
2566
          <td></td>
 
2567
          <td>)</td>
 
2568
          <td></td><td></td><td><code> [inline]</code></td>
 
2569
        </tr>
 
2570
      </table>
 
2571
</div>
 
2572
<div class="memdoc">
 
2573
 
 
2574
<p>Returns "true" if all bits in the block are 1. </p>
 
2575
 
 
2576
<p>Definition at line <a class="el" href="a00093_source.html#l02884">2884</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2577
 
 
2578
<p>References <a class="el" href="a00091_source.html#l00101">bm::all_bits_mask</a>.</p>
 
2579
 
 
2580
</div>
 
2581
</div>
 
2582
<a class="anchor" id="gad698b5242f5b629aa28e7338b7150497"></a><!-- doxytag: member="bm::or_bit_block" ref="gad698b5242f5b629aa28e7338b7150497" args="(unsigned *dest, unsigned bitpos, unsigned bitcount)" -->
 
2583
<div class="memitem">
 
2584
<div class="memproto">
 
2585
      <table class="memname">
 
2586
        <tr>
 
2587
          <td class="memname">void bm::or_bit_block </td>
 
2588
          <td>(</td>
 
2589
          <td class="paramtype">unsigned *&nbsp;</td>
 
2590
          <td class="paramname"> <em>dest</em>, </td>
 
2591
        </tr>
 
2592
        <tr>
 
2593
          <td class="paramkey"></td>
 
2594
          <td></td>
 
2595
          <td class="paramtype">unsigned&nbsp;</td>
 
2596
          <td class="paramname"> <em>bitpos</em>, </td>
 
2597
        </tr>
 
2598
        <tr>
 
2599
          <td class="paramkey"></td>
 
2600
          <td></td>
 
2601
          <td class="paramtype">unsigned&nbsp;</td>
 
2602
          <td class="paramname"> <em>bitcount</em></td><td>&nbsp;</td>
 
2603
        </tr>
 
2604
        <tr>
 
2605
          <td></td>
 
2606
          <td>)</td>
 
2607
          <td></td><td></td><td><code> [inline]</code></td>
 
2608
        </tr>
 
2609
      </table>
 
2610
</div>
 
2611
<div class="memdoc">
 
2612
 
 
2613
<p>Sets bits to 1 in the bitblock. </p>
 
2614
<dl><dt><b>Parameters:</b></dt><dd>
 
2615
  <table border="0" cellspacing="2" cellpadding="0">
 
2616
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- Bitset buffer. </td></tr>
 
2617
    <tr><td valign="top"></td><td valign="top"><em>bitpos</em>&nbsp;</td><td>- Offset of the start bit. </td></tr>
 
2618
    <tr><td valign="top"></td><td valign="top"><em>bitcount</em>&nbsp;</td><td>- number of bits to set. </td></tr>
 
2619
  </table>
 
2620
  </dd>
 
2621
</dl>
 
2622
 
 
2623
<p>Definition at line <a class="el" href="a00093_source.html#l01280">1280</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2624
 
 
2625
<p>References <a class="el" href="a00091_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
2626
 
 
2627
<p>Referenced by <a class="el" href="a00096_source.html#l01453">bm::deserializer&lt; BV, DEC &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#l01530">bm::gap_add_to_bitset()</a>.</p>
 
2628
 
 
2629
</div>
 
2630
</div>
 
2631
<a class="anchor" id="ga2becf9a16ec20ab124ca8938e34b4aa8"></a><!-- doxytag: member="bm::set_bit" ref="ga2becf9a16ec20ab124ca8938e34b4aa8" args="(unsigned *dest, unsigned bitpos)" -->
 
2632
<div class="memitem">
 
2633
<div class="memproto">
 
2634
      <table class="memname">
 
2635
        <tr>
 
2636
          <td class="memname">BMFORCEINLINE void bm::set_bit </td>
 
2637
          <td>(</td>
 
2638
          <td class="paramtype">unsigned *&nbsp;</td>
 
2639
          <td class="paramname"> <em>dest</em>, </td>
 
2640
        </tr>
 
2641
        <tr>
 
2642
          <td class="paramkey"></td>
 
2643
          <td></td>
 
2644
          <td class="paramtype">unsigned&nbsp;</td>
 
2645
          <td class="paramname"> <em>bitpos</em></td><td>&nbsp;</td>
 
2646
        </tr>
 
2647
        <tr>
 
2648
          <td></td>
 
2649
          <td>)</td>
 
2650
          <td></td><td></td><td></td>
 
2651
        </tr>
 
2652
      </table>
 
2653
</div>
 
2654
<div class="memdoc">
 
2655
 
 
2656
<p>Set 1 bit in a block. </p>
 
2657
 
 
2658
<p>Definition at line <a class="el" href="a00093_source.html#l01250">1250</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2659
 
 
2660
<p>References <a class="el" href="a00091_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
2661
 
 
2662
<p>Referenced by <a class="el" href="a00096_source.html#l02732">bm::serial_stream_iterator&lt; DEC &gt;::get_arr_bit()</a>.</p>
 
2663
 
 
2664
</div>
 
2665
</div>
 
2666
<a class="anchor" id="gaceaa54aa59b16299f5a87b925715e5e8"></a><!-- doxytag: member="bm::sub_bit_block" ref="gaceaa54aa59b16299f5a87b925715e5e8" args="(unsigned *dest, unsigned bitpos, unsigned bitcount)" -->
 
2667
<div class="memitem">
 
2668
<div class="memproto">
 
2669
      <table class="memname">
 
2670
        <tr>
 
2671
          <td class="memname">void bm::sub_bit_block </td>
 
2672
          <td>(</td>
 
2673
          <td class="paramtype">unsigned *&nbsp;</td>
 
2674
          <td class="paramname"> <em>dest</em>, </td>
 
2675
        </tr>
 
2676
        <tr>
 
2677
          <td class="paramkey"></td>
 
2678
          <td></td>
 
2679
          <td class="paramtype">unsigned&nbsp;</td>
 
2680
          <td class="paramname"> <em>bitpos</em>, </td>
 
2681
        </tr>
 
2682
        <tr>
 
2683
          <td class="paramkey"></td>
 
2684
          <td></td>
 
2685
          <td class="paramtype">unsigned&nbsp;</td>
 
2686
          <td class="paramname"> <em>bitcount</em></td><td>&nbsp;</td>
 
2687
        </tr>
 
2688
        <tr>
 
2689
          <td></td>
 
2690
          <td>)</td>
 
2691
          <td></td><td></td><td><code> [inline]</code></td>
 
2692
        </tr>
 
2693
      </table>
 
2694
</div>
 
2695
<div class="memdoc">
 
2696
 
 
2697
<p>SUB (AND NOT) bit interval to 1 in the bitblock. </p>
 
2698
<dl><dt><b>Parameters:</b></dt><dd>
 
2699
  <table border="0" cellspacing="2" cellpadding="0">
 
2700
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- Bitset buffer. </td></tr>
 
2701
    <tr><td valign="top"></td><td valign="top"><em>bitpos</em>&nbsp;</td><td>- Offset of the start bit. </td></tr>
 
2702
    <tr><td valign="top"></td><td valign="top"><em>bitcount</em>&nbsp;</td><td>- number of bits to set. </td></tr>
 
2703
  </table>
 
2704
  </dd>
 
2705
</dl>
 
2706
 
 
2707
<p>Definition at line <a class="el" href="a00093_source.html#l01342">1342</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2708
 
 
2709
<p>References <a class="el" href="a00091_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
2710
 
 
2711
<p>Referenced by <a class="el" href="a00093_source.html#l01562">bm::gap_and_to_bitset()</a>, and <a class="el" href="a00093_source.html#l01466">bm::gap_sub_to_bitset()</a>.</p>
 
2712
 
 
2713
</div>
 
2714
</div>
 
2715
<a class="anchor" id="ga9bccc586aa791f98f1bec284b799102c"></a><!-- doxytag: member="bm::test_bit" ref="ga9bccc586aa791f98f1bec284b799102c" args="(const unsigned *block, unsigned bitpos)" -->
 
2716
<div class="memitem">
 
2717
<div class="memproto">
 
2718
      <table class="memname">
 
2719
        <tr>
 
2720
          <td class="memname">BMFORCEINLINE unsigned bm::test_bit </td>
 
2721
          <td>(</td>
 
2722
          <td class="paramtype">const unsigned *&nbsp;</td>
 
2723
          <td class="paramname"> <em>block</em>, </td>
 
2724
        </tr>
 
2725
        <tr>
 
2726
          <td class="paramkey"></td>
 
2727
          <td></td>
 
2728
          <td class="paramtype">unsigned&nbsp;</td>
 
2729
          <td class="paramname"> <em>bitpos</em></td><td>&nbsp;</td>
 
2730
        </tr>
 
2731
        <tr>
 
2732
          <td></td>
 
2733
          <td>)</td>
 
2734
          <td></td><td></td><td></td>
 
2735
        </tr>
 
2736
      </table>
 
2737
</div>
 
2738
<div class="memdoc">
 
2739
 
 
2740
<p>Test 1 bit in a block. </p>
 
2741
 
 
2742
<p>Definition at line <a class="el" href="a00093_source.html#l01263">1263</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2743
 
 
2744
<p>References <a class="el" href="a00091_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
2745
 
 
2746
</div>
 
2747
</div>
 
2748
<a class="anchor" id="ga3fe02492f64cd8a9dfbb1a00ec71c0ae"></a><!-- doxytag: member="bm::tmatrix_distance" ref="ga3fe02492f64cd8a9dfbb1a00ec71c0ae" args="(const T tmatrix[BPC][BPS], unsigned distance[BPC][BPC])" -->
 
2749
<div class="memitem">
 
2750
<div class="memproto">
 
2751
<div class="memtemplate">
 
2752
template&lt;typename T , unsigned BPC, unsigned BPS&gt; </div>
 
2753
      <table class="memname">
 
2754
        <tr>
 
2755
          <td class="memname">void bm::tmatrix_distance </td>
 
2756
          <td>(</td>
 
2757
          <td class="paramtype">const T&nbsp;</td>
 
2758
          <td class="paramname"> <em>tmatrix</em>[BPC][BPS], </td>
 
2759
        </tr>
 
2760
        <tr>
 
2761
          <td class="paramkey"></td>
 
2762
          <td></td>
 
2763
          <td class="paramtype">unsigned&nbsp;</td>
 
2764
          <td class="paramname"> <em>distance</em>[BPC][BPC]</td><td>&nbsp;</td>
 
2765
        </tr>
 
2766
        <tr>
 
2767
          <td></td>
 
2768
          <td>)</td>
 
2769
          <td></td><td></td><td><code> [inline]</code></td>
 
2770
        </tr>
 
2771
      </table>
 
2772
</div>
 
2773
<div class="memdoc">
 
2774
 
 
2775
<p>Compute pairwise Row x Row Humming distances on plains(rows) of the transposed bit block. </p>
 
2776
<dl><dt><b>Parameters:</b></dt><dd>
 
2777
  <table border="0" cellspacing="2" cellpadding="0">
 
2778
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="a00086.html" title="Mini-matrix for bit transposition purposes.">tmatrix</a></em>&nbsp;</td><td>- bit-block transposition matrix (bit-plains) </td></tr>
 
2779
    <tr><td valign="top"></td><td valign="top"><em>distance</em>&nbsp;</td><td>- pairwise NxN Humming distance matrix (diagonal is popcnt) </td></tr>
 
2780
  </table>
 
2781
  </dd>
 
2782
</dl>
 
2783
 
 
2784
<p>Definition at line <a class="el" href="a00100_source.html#l00348">348</a> of file <a class="el" href="a00100_source.html">bmtrans.h</a>.</p>
 
2785
 
 
2786
<p>References <a class="el" href="a00093_source.html#l02505">bm::bit_block_calc_count()</a>, and <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>.</p>
 
2787
 
 
2788
<p>Referenced by <a class="el" href="a00100_source.html#l00806">bm::gap_transpose_engine&lt; GT, BT, BLOCK_SIZE &gt;::compute_distance_matrix()</a>.</p>
 
2789
 
 
2790
</div>
 
2791
</div>
 
2792
<a class="anchor" id="gaef40342b0c318391df3db2b891acf7c1"></a><!-- doxytag: member="bm::word_bitcount" ref="gaef40342b0c318391df3db2b891acf7c1" args="(bm::id_t w)" -->
 
2793
<div class="memitem">
 
2794
<div class="memproto">
 
2795
      <table class="memname">
 
2796
        <tr>
 
2797
          <td class="memname">BMFORCEINLINE <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::word_bitcount </td>
 
2798
          <td>(</td>
 
2799
          <td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td>
 
2800
          <td class="paramname"> <em>w</em></td>
 
2801
          <td>&nbsp;)&nbsp;</td>
 
2802
          <td></td>
 
2803
        </tr>
 
2804
      </table>
 
2805
</div>
 
2806
<div class="memdoc">
 
2807
<p>Returns bit count </p>
 
2808
 
 
2809
<p>Definition at line <a class="el" href="a00093_source.html#l00165">165</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2810
 
 
2811
<p>Referenced by <a class="el" href="a00096_source.html#l02245">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT()</a>, <a class="el" href="a00096_source.html#l02365">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_AND()</a>, <a class="el" href="a00096_source.html#l02424">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_OR()</a>, <a class="el" href="a00096_source.html#l02580">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_SUB_AB()</a>, <a class="el" href="a00096_source.html#l02659">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_SUB_BA()</a>, and <a class="el" href="a00096_source.html#l02502">bm::serial_stream_iterator&lt; DEC &gt;::get_bit_block_COUNT_XOR()</a>.</p>
 
2812
 
 
2813
</div>
 
2814
</div>
 
2815
<a class="anchor" id="ga5847533a73b7a5125fe5c2888ec827bd"></a><!-- doxytag: member="bm::wordcmp" ref="ga5847533a73b7a5125fe5c2888ec827bd" args="(T a, T b)" -->
 
2816
<div class="memitem">
 
2817
<div class="memproto">
 
2818
<div class="memtemplate">
 
2819
template&lt;typename T &gt; </div>
 
2820
      <table class="memname">
 
2821
        <tr>
 
2822
          <td class="memname">int bm::wordcmp </td>
 
2823
          <td>(</td>
 
2824
          <td class="paramtype">T&nbsp;</td>
 
2825
          <td class="paramname"> <em>a</em>, </td>
 
2826
        </tr>
 
2827
        <tr>
 
2828
          <td class="paramkey"></td>
 
2829
          <td></td>
 
2830
          <td class="paramtype">T&nbsp;</td>
 
2831
          <td class="paramname"> <em>b</em></td><td>&nbsp;</td>
 
2832
        </tr>
 
2833
        <tr>
 
2834
          <td></td>
 
2835
          <td>)</td>
 
2836
          <td></td><td></td><td><code> [inline]</code></td>
 
2837
        </tr>
 
2838
      </table>
 
2839
</div>
 
2840
<div class="memdoc">
 
2841
 
 
2842
<p>Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes. </p>
 
2843
<dl><dt><b>Parameters:</b></dt><dd>
 
2844
  <table border="0" cellspacing="2" cellpadding="0">
 
2845
    <tr><td valign="top"></td><td valign="top"><em>buf1</em>&nbsp;</td><td>- First word. </td></tr>
 
2846
    <tr><td valign="top"></td><td valign="top"><em>buf2</em>&nbsp;</td><td>- Second word. </td></tr>
 
2847
  </table>
 
2848
  </dd>
 
2849
</dl>
 
2850
<dl class="return"><dt><b>Returns:</b></dt><dd>&lt;0 - less, =0 - equal, &gt;0 - greater. </dd></dl>
 
2851
 
 
2852
<p>Definition at line <a class="el" href="a00093_source.html#l00371">371</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2853
 
 
2854
</div>
 
2855
</div>
 
2856
<a class="anchor" id="gafee2e8361c2e90a67dbaf9c7559d50e4"></a><!-- doxytag: member="bm::wordcmp0" ref="gafee2e8361c2e90a67dbaf9c7559d50e4" args="(T w1, T w2)" -->
 
2857
<div class="memitem">
 
2858
<div class="memproto">
 
2859
<div class="memtemplate">
 
2860
template&lt;typename T &gt; </div>
 
2861
      <table class="memname">
 
2862
        <tr>
 
2863
          <td class="memname">int bm::wordcmp0 </td>
 
2864
          <td>(</td>
 
2865
          <td class="paramtype">T&nbsp;</td>
 
2866
          <td class="paramname"> <em>w1</em>, </td>
 
2867
        </tr>
 
2868
        <tr>
 
2869
          <td class="paramkey"></td>
 
2870
          <td></td>
 
2871
          <td class="paramtype">T&nbsp;</td>
 
2872
          <td class="paramname"> <em>w2</em></td><td>&nbsp;</td>
 
2873
        </tr>
 
2874
        <tr>
 
2875
          <td></td>
 
2876
          <td>)</td>
 
2877
          <td></td><td></td><td><code> [inline]</code></td>
 
2878
        </tr>
 
2879
      </table>
 
2880
</div>
 
2881
<div class="memdoc">
 
2882
 
 
2883
<p>Lexicographical comparison of two words as bit strings. Auxiliary implementation for testing and reference purposes. </p>
 
2884
<dl><dt><b>Parameters:</b></dt><dd>
 
2885
  <table border="0" cellspacing="2" cellpadding="0">
 
2886
    <tr><td valign="top"></td><td valign="top"><em>buf1</em>&nbsp;</td><td>- First word. </td></tr>
 
2887
    <tr><td valign="top"></td><td valign="top"><em>buf2</em>&nbsp;</td><td>- Second word. </td></tr>
 
2888
  </table>
 
2889
  </dd>
 
2890
</dl>
 
2891
<dl class="return"><dt><b>Returns:</b></dt><dd>&lt;0 - less, =0 - equal, &gt;0 - greater. </dd></dl>
 
2892
 
 
2893
<p>Definition at line <a class="el" href="a00093_source.html#l00341">341</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2894
 
 
2895
</div>
 
2896
</div>
 
2897
<a class="anchor" id="ga6191abb017003b633fab24e0c6357521"></a><!-- doxytag: member="bm::xor_bit_block" ref="ga6191abb017003b633fab24e0c6357521" args="(unsigned *dest, unsigned bitpos, unsigned bitcount)" -->
 
2898
<div class="memitem">
 
2899
<div class="memproto">
 
2900
      <table class="memname">
 
2901
        <tr>
 
2902
          <td class="memname">void bm::xor_bit_block </td>
 
2903
          <td>(</td>
 
2904
          <td class="paramtype">unsigned *&nbsp;</td>
 
2905
          <td class="paramname"> <em>dest</em>, </td>
 
2906
        </tr>
 
2907
        <tr>
 
2908
          <td class="paramkey"></td>
 
2909
          <td></td>
 
2910
          <td class="paramtype">unsigned&nbsp;</td>
 
2911
          <td class="paramname"> <em>bitpos</em>, </td>
 
2912
        </tr>
 
2913
        <tr>
 
2914
          <td class="paramkey"></td>
 
2915
          <td></td>
 
2916
          <td class="paramtype">unsigned&nbsp;</td>
 
2917
          <td class="paramname"> <em>bitcount</em></td><td>&nbsp;</td>
 
2918
        </tr>
 
2919
        <tr>
 
2920
          <td></td>
 
2921
          <td>)</td>
 
2922
          <td></td><td></td><td><code> [inline]</code></td>
 
2923
        </tr>
 
2924
      </table>
 
2925
</div>
 
2926
<div class="memdoc">
 
2927
 
 
2928
<p>XOR bit interval to 1 in the bitblock. </p>
 
2929
<dl><dt><b>Parameters:</b></dt><dd>
 
2930
  <table border="0" cellspacing="2" cellpadding="0">
 
2931
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>- Bitset buffer. </td></tr>
 
2932
    <tr><td valign="top"></td><td valign="top"><em>bitpos</em>&nbsp;</td><td>- Offset of the start bit. </td></tr>
 
2933
    <tr><td valign="top"></td><td valign="top"><em>bitcount</em>&nbsp;</td><td>- number of bits to set. </td></tr>
 
2934
  </table>
 
2935
  </dd>
 
2936
</dl>
 
2937
 
 
2938
<p>Definition at line <a class="el" href="a00093_source.html#l01404">1404</a> of file <a class="el" href="a00093_source.html">bmfunc.h</a>.</p>
 
2939
 
 
2940
<p>References <a class="el" href="a00091_source.html#l00054">bm::set_block_mask</a>, <a class="el" href="a00091_source.html#l00063">bm::set_word_mask</a>, and <a class="el" href="a00091_source.html#l00062">bm::set_word_shift</a>.</p>
 
2941
 
 
2942
<p>Referenced by <a class="el" href="a00093_source.html#l01498">bm::gap_xor_to_bitset()</a>.</p>
 
2943
 
 
2944
</div>
 
2945
</div>
 
2946
</div>
 
2947
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:20 2010 for BitMagic by&nbsp;
630
2948
<a href="http://www.doxygen.org/index.html">
631
2949
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
632
2950
</body>