23
23
<div class="contents">
24
<h1>Distance metrics<br/>
24
<h1>BIT functions<br/>
26
[<a class="el" href="a00119.html">Set algorithms</a>]</small>
26
[<a class="el" href="a00117.html">BitMagic C++ Library</a>]</small>
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>
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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#gac38d64c8b27b652413a664cddd4d40ab">bm::distance_metric</a> { <br/>
39
<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,
44
<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
49
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00041.html">bm::block_set_table< T ></a></td></tr>
39
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html">bm::all_set< T ></a></td></tr>
41
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">bm::first_bit_table< T ></a></td></tr>
43
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html">bm::bit_count_table< T ></a></td></tr>
45
<tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ga967f6a5264f47d8adb93f6bdf8cdc129">BM_INCWORD_BITCOUNT</a>(cnt, w) 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 </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"> </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<class BV > </td></tr>
55
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga815fef76f02576ab9ab58de0a45d8a4b">bm::distance_operation</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
56
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance computing template function. <a href="#ga815fef76f02576ab9ab58de0a45d8a4b"></a><br/></td></tr>
57
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
58
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaa66525fd7a3f823d73678252a235982e">bm::distance_operation_any</a> (const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)</td></tr>
59
<tr><td class="mdescLeft"> </td><td class="mdescRight">Distance screening template function. <a href="#gaa66525fd7a3f823d73678252a235982e"></a><br/></td></tr>
60
<tr><td class="memTemplParams" colspan="2">template<class BV > </td></tr>
61
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gae451cb4b87e8c0859b0614d2ffb99737">bm::count_and</a> (const BV &bv1, const BV &bv2)</td></tr>
62
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
64
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga2d5393e05bcfc540840a4cee67fb771f">bm::any_and</a> (const BV &bv1, const BV &bv2)</td></tr>
65
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
67
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gafc64a082dcaee07f70f7faf3e24f844e">bm::count_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
68
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
70
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga2d63f41244b82d233acb53d88b326b82">bm::any_xor</a> (const BV &bv1, const BV &bv2)</td></tr>
71
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
73
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga902d8c1cd1f8a2538cd47d47f5d8d605">bm::count_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
74
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
76
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gabde2e210b9b1edd190e1f5a9ff22344c">bm::any_sub</a> (const BV &bv1, const BV &bv2)</td></tr>
77
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
79
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga803c564668703fc3bf80067570c2c905">bm::count_or</a> (const BV &bv1, const BV &bv2)</td></tr>
80
<tr><td class="mdescLeft"> </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<class BV > </td></tr>
82
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gaeda4f0cf54aa464cec09e740100caa79">bm::any_or</a> (const BV &bv1, const BV &bv2)</td></tr>
83
<tr><td class="mdescLeft"> </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> </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<typename T > </td></tr>
51
<tr><td class="memTemplItemLeft" align="right" valign="top">int </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"> </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<typename T > </td></tr>
54
<tr><td class="memTemplItemLeft" align="right" valign="top">int </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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<typename T > </td></tr>
67
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
70
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
73
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
76
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
79
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
82
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
85
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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<typename T > </td></tr>
88
<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </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"> </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 </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"> </td><td class="mdescRight">Bitblock memset operation. <a href="#gaada8b13c35acd8df90129b45edcfc5de"></a><br/></td></tr>
92
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
93
<tr><td class="memTemplItemLeft" align="right" valign="top">int </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"> </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> </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"> </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> </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> </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> </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> </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<typename T > </td></tr>
102
<tr><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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 </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"> </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 </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"> </td><td class="mdescRight">Bitblock copy operation. <a href="#ga9090de87d53e7f25eff96c8259b3485c"></a><br/></td></tr>
109
<tr><td class="memItemLeft" align="right" valign="top">void </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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 </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"> </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> * </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"> </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> </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"> </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> </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"> </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> </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"> </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> </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"> </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> </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"> </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> </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"> </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> </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"> </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 </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"> </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> * </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"> </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 </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"> </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> * </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"> </td><td class="mdescRight">bitblock SUB operation. <a href="#gad7afa9bce28a376360ca4826960d669f"></a><br/></td></tr>
151
<tr><td class="memItemLeft" align="right" valign="top">void </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"> </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> * </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"> </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> </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"> </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> </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"> </td><td class="mdescRight">Performs bitblock XOR operation test. <a href="#gaa86561b6d11c3f01dd772563c692f732"></a><br/></td></tr>
159
<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
160
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </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"> </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 </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"> </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<typename T , typename F > </td></tr>
165
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#gab9f80b3c898323ce77beb915e4c861f3">bm::bit_for_each_4</a> (T w, F &func)</td></tr>
166
<tr><td class="mdescLeft"> </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<typename T , typename F > </td></tr>
168
<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00120.html#ga24be2ad5d8c2a8f18fdad142452aaae8">bm::bit_for_each</a> (T w, F &func)</td></tr>
169
<tr><td class="mdescLeft"> </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<typename T , typename B > </td></tr>
171
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </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"> </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<typename T , typename B > </td></tr>
174
<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned </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"> </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> </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"> </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<typename T > </td></tr>
179
<tr><td class="memTemplItemLeft" align="right" valign="top">T </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"> </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<typename T , unsigned BPC, unsigned BPS> </td></tr>
182
<tr><td class="memTemplItemLeft" align="right" valign="top">void </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"> </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<typename T , unsigned BPC, unsigned BPS> </td></tr>
185
<tr><td class="memTemplItemLeft" align="right" valign="top">void </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"> </td><td class="mdescRight">!< ibpc limiter <a href="#gabdc11d48fda6a69873eefd219c4b7e75"></a><br/></td></tr>
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">
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>
198
<td class="paramtype">cnt, </td>
201
<td class="paramkey"></td>
203
<td class="paramtype">w </td>
204
<td class="paramname"></td>
205
<td> ) </td>
206
<td> cnt += _mm_popcnt_u32(w);</td>
97
210
<div class="memdoc">
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> </td><td>
102
<p>(A & B).count() </p>
104
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061"></a><!-- doxytag: member="COUNT_XOR" ref="ggac38d64c8b27b652413a664cddd4d40aba3e4861dde6e1179457ee0d3502ae8061" args="" -->COUNT_XOR</em> </td><td>
105
<p>(A ^ B).count() </p>
107
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb"></a><!-- doxytag: member="COUNT_OR" ref="ggac38d64c8b27b652413a664cddd4d40abad0bd2d56c8ebd03f55c01b3cc6faaaeb" args="" -->COUNT_OR</em> </td><td>
108
<p>(A | B).count() </p>
110
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62"></a><!-- doxytag: member="COUNT_SUB_AB" ref="ggac38d64c8b27b652413a664cddd4d40aba9c101dab8904c0432f72ccce0a207e62" args="" -->COUNT_SUB_AB</em> </td><td>
111
<p>(A - B).count() </p>
113
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400"></a><!-- doxytag: member="COUNT_SUB_BA" ref="ggac38d64c8b27b652413a664cddd4d40abafa036fb9d54bc659ed3c9e4185ccf400" args="" -->COUNT_SUB_BA</em> </td><td>
114
<p>(B - A).count() </p>
116
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2"></a><!-- doxytag: member="COUNT_A" ref="ggac38d64c8b27b652413a664cddd4d40abaac7947d53eb3acf81251ee4130e6a4a2" args="" -->COUNT_A</em> </td><td>
119
<tr><td valign="top"><em><a class="anchor" id="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516"></a><!-- doxytag: member="COUNT_B" ref="ggac38d64c8b27b652413a664cddd4d40abac6dbadf2ab9405daa47dc0f10d082516" args="" -->COUNT_B</em> </td><td>
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>
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>
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< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04886">bm::bit_COUNT_A< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04875">bm::bit_COUNT_SUB_BA< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04864">bm::bit_COUNT_SUB_AB< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04852">bm::bit_COUNT_OR< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04841">bm::bit_COUNT_XOR< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04830">bm::bit_COUNT_AND< W >::operator()()</a>, <a class="el" href="a00093_source.html#l04819">bm::bit_COUNT< W >::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>
130
219
<hr/><h2>Function Documentation</h2>
131
<a class="anchor" id="ga2d5393e05bcfc540840a4cee67fb771f"></a><!-- doxytag: member="bm::any_and" ref="ga2d5393e05bcfc540840a4cee67fb771f" args="(const BV &bv1, const BV &bv2)" -->
132
<div class="memitem">
133
<div class="memproto">
134
<div class="memtemplate">
135
template<class BV > </div>
136
<table class="memname">
138
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_and </td>
140
<td class="paramtype">const BV & </td>
141
<td class="paramname"> <em>bv1</em>, </td>
144
<td class="paramkey"></td>
146
<td class="paramtype">const BV & </td>
147
<td class="paramname"> <em>bv2</em></td><td> </td>
152
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
162
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
166
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
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>
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>
174
<a class="anchor" id="gaeda4f0cf54aa464cec09e740100caa79"></a><!-- doxytag: member="bm::any_or" ref="gaeda4f0cf54aa464cec09e740100caa79" args="(const BV &bv1, const BV &bv2)" -->
175
<div class="memitem">
176
<div class="memproto">
177
<div class="memtemplate">
178
template<class BV > </div>
179
<table class="memname">
181
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_or </td>
183
<td class="paramtype">const BV & </td>
184
<td class="paramname"> <em>bv1</em>, </td>
187
<td class="paramkey"></td>
189
<td class="paramtype">const BV & </td>
190
<td class="paramname"> <em>bv2</em></td><td> </td>
195
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
205
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
209
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
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>
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>
217
<a class="anchor" id="gabde2e210b9b1edd190e1f5a9ff22344c"></a><!-- doxytag: member="bm::any_sub" ref="gabde2e210b9b1edd190e1f5a9ff22344c" args="(const BV &bv1, const BV &bv2)" -->
218
<div class="memitem">
219
<div class="memproto">
220
<div class="memtemplate">
221
template<class BV > </div>
222
<table class="memname">
224
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_sub </td>
226
<td class="paramtype">const BV & </td>
227
<td class="paramname"> <em>bv1</em>, </td>
230
<td class="paramkey"></td>
232
<td class="paramtype">const BV & </td>
233
<td class="paramname"> <em>bv2</em></td><td> </td>
238
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
248
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
252
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
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>
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>
260
<a class="anchor" id="ga2d63f41244b82d233acb53d88b326b82"></a><!-- doxytag: member="bm::any_xor" ref="ga2d63f41244b82d233acb53d88b326b82" args="(const BV &bv1, const BV &bv2)" -->
261
<div class="memitem">
262
<div class="memproto">
263
<div class="memtemplate">
264
template<class BV > </div>
265
<table class="memname">
267
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::any_xor </td>
269
<td class="paramtype">const BV & </td>
270
<td class="paramname"> <em>bv1</em>, </td>
273
<td class="paramkey"></td>
275
<td class="paramtype">const BV & </td>
276
<td class="paramname"> <em>bv2</em></td><td> </td>
281
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
291
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
295
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there is any bit </dd></dl>
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>
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>
303
<a class="anchor" id="gae451cb4b87e8c0859b0614d2ffb99737"></a><!-- doxytag: member="bm::count_and" ref="gae451cb4b87e8c0859b0614d2ffb99737" args="(const BV &bv1, const BV &bv2)" -->
304
<div class="memitem">
305
<div class="memproto">
306
<div class="memtemplate">
307
template<class BV > </div>
308
<table class="memname">
310
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_and </td>
312
<td class="paramtype">const BV & </td>
313
<td class="paramname"> <em>bv1</em>, </td>
316
<td class="paramkey"></td>
318
<td class="paramtype">const BV & </td>
319
<td class="paramname"> <em>bv2</em></td><td> </td>
324
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
334
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
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>
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>
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>
345
<p>Referenced by <a class="el" href="a00109_source.html#l00047">main()</a>.</p>
349
<a class="anchor" id="ga803c564668703fc3bf80067570c2c905"></a><!-- doxytag: member="bm::count_or" ref="ga803c564668703fc3bf80067570c2c905" args="(const BV &bv1, const BV &bv2)" -->
350
<div class="memitem">
351
<div class="memproto">
352
<div class="memtemplate">
353
template<class BV > </div>
354
<table class="memname">
356
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_or </td>
358
<td class="paramtype">const BV & </td>
359
<td class="paramname"> <em>bv1</em>, </td>
362
<td class="paramkey"></td>
364
<td class="paramtype">const BV & </td>
365
<td class="paramname"> <em>bv2</em></td><td> </td>
370
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
380
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
384
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
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>
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>
390
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>.</p>
394
<a class="anchor" id="ga902d8c1cd1f8a2538cd47d47f5d8d605"></a><!-- doxytag: member="bm::count_sub" ref="ga902d8c1cd1f8a2538cd47d47f5d8d605" args="(const BV &bv1, const BV &bv2)" -->
395
<div class="memitem">
396
<div class="memproto">
397
<div class="memtemplate">
398
template<class BV > </div>
399
<table class="memname">
401
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_sub </td>
403
<td class="paramtype">const BV & </td>
404
<td class="paramname"> <em>bv1</em>, </td>
407
<td class="paramkey"></td>
409
<td class="paramtype">const BV & </td>
410
<td class="paramname"> <em>bv2</em></td><td> </td>
415
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
425
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
429
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount of the result </dd></dl>
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>
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>
437
<a class="anchor" id="gafc64a082dcaee07f70f7faf3e24f844e"></a><!-- doxytag: member="bm::count_xor" ref="gafc64a082dcaee07f70f7faf3e24f844e" args="(const BV &bv1, const BV &bv2)" -->
438
<div class="memitem">
439
<div class="memproto">
440
<div class="memtemplate">
441
template<class BV > </div>
442
<table class="memname">
444
<td class="memname"><a class="el" href="a00110.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::count_xor </td>
446
<td class="paramtype">const BV & </td>
447
<td class="paramname"> <em>bv1</em>, </td>
450
<td class="paramkey"></td>
452
<td class="paramtype">const BV & </td>
453
<td class="paramname"> <em>bv2</em></td><td> </td>
458
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- Argument bit-vector. </td></tr>
468
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- Argument bit-vector. </td></tr>
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>
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>
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>
479
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>, and <a class="el" href="a00109_source.html#l00047">main()</a>.</p>
483
<a class="anchor" id="ga815fef76f02576ab9ab58de0a45d8a4b"></a><!-- doxytag: member="bm::distance_operation" ref="ga815fef76f02576ab9ab58de0a45d8a4b" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
484
<div class="memitem">
485
<div class="memproto">
486
<div class="memtemplate">
487
template<class BV > </div>
488
<table class="memname">
490
<td class="memname">void bm::distance_operation </td>
492
<td class="paramtype">const BV & </td>
493
<td class="paramname"> <em>bv1</em>, </td>
496
<td class="paramkey"></td>
498
<td class="paramtype">const BV & </td>
499
<td class="paramname"> <em>bv2</em>, </td>
502
<td class="paramkey"></td>
504
<td class="paramtype">distance_metric_descriptor * </td>
505
<td class="paramname"> <em>dmit</em>, </td>
508
<td class="paramkey"></td>
510
<td class="paramtype">distance_metric_descriptor * </td>
511
<td class="paramname"> <em>dmit_end</em></td><td> </td>
516
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- argument bitvector 1 (A) </td></tr>
527
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
528
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </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> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
533
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00009.html#a10">sample9.cpp</a>.</dd>
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>
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>
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>
543
<a class="anchor" id="gaa66525fd7a3f823d73678252a235982e"></a><!-- doxytag: member="bm::distance_operation_any" ref="gaa66525fd7a3f823d73678252a235982e" args="(const BV &bv1, const BV &bv2, distance_metric_descriptor *dmit, distance_metric_descriptor *dmit_end)" -->
544
<div class="memitem">
545
<div class="memproto">
546
<div class="memtemplate">
547
template<class BV > </div>
548
<table class="memname">
550
<td class="memname">void bm::distance_operation_any </td>
552
<td class="paramtype">const BV & </td>
553
<td class="paramname"> <em>bv1</em>, </td>
556
<td class="paramkey"></td>
558
<td class="paramtype">const BV & </td>
559
<td class="paramname"> <em>bv2</em>, </td>
562
<td class="paramkey"></td>
564
<td class="paramtype">distance_metric_descriptor * </td>
565
<td class="paramname"> <em>dmit</em>, </td>
568
<td class="paramkey"></td>
570
<td class="paramtype">distance_metric_descriptor * </td>
571
<td class="paramname"> <em>dmit_end</em></td><td> </td>
576
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- argument bitvector 1 (A) </td></tr>
587
<tr><td valign="top"></td><td valign="top"><em>bv2</em> </td><td>- argument bitvector 2 (B) </td></tr>
588
<tr><td valign="top"></td><td valign="top"><em>dmit</em> </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> </td><td>- pointer to (last+1) element of metric descriptors array </td></tr>
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>
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>
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>
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">
607
<td class="memname">distance_metric bm::operation2metric </td>
609
<td class="paramtype">set_operation </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">
225
<td class="memname"><a class="el" href="a00115.html#a593916a103395805070a3200720c6416">bm::set_representation</a> bm::best_representation </td>
227
<td class="paramtype">unsigned </td>
228
<td class="paramname"> <em>bit_count</em>, </td>
231
<td class="paramkey"></td>
233
<td class="paramtype">unsigned </td>
234
<td class="paramname"> <em>total_possible_bitcount</em>, </td>
237
<td class="paramkey"></td>
239
<td class="paramtype">unsigned </td>
240
<td class="paramname"> <em>gap_count</em>, </td>
243
<td class="paramkey"></td>
245
<td class="paramtype">unsigned </td>
246
<td class="paramname"> <em>block_size</em></td><td> </td>
251
<td></td><td></td><td><code> [inline]</code></td>
257
<p>Choose best representation for a bit-block. </p>
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>
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>
263
<p>Referenced by <a class="el" href="a00100_source.html#l00683">bm::compute_tmatrix_rstat()</a>.</p>
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">
272
<td class="memname">void bm::bit_block_and </td>
274
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
275
<td class="paramname"> <em>dst</em>, </td>
278
<td class="paramkey"></td>
280
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
281
<td class="paramname"> <em>src</em></td><td> </td>
286
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
296
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block. </td></tr>
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>
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>
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< DEC >::get_bit_block_AND()</a>.</p>
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">
314
<td class="memname">unsigned bm::bit_block_and_any </td>
316
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
317
<td class="paramname"> <em>src1</em>, </td>
320
<td class="paramkey"></td>
322
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
323
<td class="paramname"> <em>src1_end</em>, </td>
326
<td class="paramkey"></td>
328
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
329
<td class="paramname"> <em>src2</em></td><td> </td>
334
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block </td></tr>
344
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
345
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block </td></tr>
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>
352
<p>Referenced by <a class="el" href="a00093_source.html#l03589">bm::bit_operation_and_any()</a>.</p>
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">
361
<td class="memname">unsigned bm::bit_block_and_count </td>
363
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
364
<td class="paramname"> <em>src1</em>, </td>
367
<td class="paramkey"></td>
369
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
370
<td class="paramname"> <em>src1_end</em>, </td>
373
<td class="paramkey"></td>
375
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
376
<td class="paramname"> <em>src2</em></td><td> </td>
381
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block </td></tr>
391
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
392
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block </td></tr>
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>
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>
401
<p>Referenced by <a class="el" href="a00093_source.html#l03566">bm::bit_operation_and_count()</a>.</p>
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">
410
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_any_range </td>
412
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
413
<td class="paramname"> <em>block</em>, </td>
416
<td class="paramkey"></td>
418
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
419
<td class="paramname"> <em>left</em>, </td>
422
<td class="paramkey"></td>
424
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
425
<td class="paramname"> <em>right</em></td><td> </td>
430
<td></td><td></td><td><code> [inline]</code></td>
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>
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>
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>
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>
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">
450
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count </td>
452
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
453
<td class="paramname"> <em>block</em>, </td>
456
<td class="paramkey"></td>
458
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
459
<td class="paramname"> <em>block_end</em></td><td> </td>
464
<td></td><td></td><td><code> [inline]</code></td>
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>
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>
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>
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< DEC >::get_bit_block_COUNT_A()</a>, and <a class="el" href="a00100_source.html#l00348">bm::tmatrix_distance()</a>.</p>
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">
486
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count_change </td>
488
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
489
<td class="paramname"> <em>block</em>, </td>
492
<td class="paramkey"></td>
494
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
495
<td class="paramname"> <em>block_end</em>, </td>
498
<td class="paramkey"></td>
500
<td class="paramtype">unsigned * </td>
501
<td class="paramname"> <em>bit_count</em></td><td> </td>
506
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- OUT total number of bits ON</td></tr>
518
<dl class="return"><dt><b>Returns:</b></dt><dd>number of 1-0, 0-1 transitions </dd></dl>
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>
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>
524
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
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">
533
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_block_calc_count_range </td>
535
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
536
<td class="paramname"> <em>block</em>, </td>
539
<td class="paramkey"></td>
541
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
542
<td class="paramname"> <em>left</em>, </td>
545
<td class="paramkey"></td>
547
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
548
<td class="paramname"> <em>right</em></td><td> </td>
553
<td></td><td></td><td><code> [inline]</code></td>
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>
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>
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>
564
<p>Referenced by <a class="el" href="a00087_source.html#l01690">bm::bvector< Alloc, MS >::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>
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">
573
<td class="memname">void bm::bit_block_copy </td>
575
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
576
<td class="paramname"> <em>dst</em>, </td>
579
<td class="paramkey"></td>
581
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
582
<td class="paramname"> <em>src</em></td><td> </td>
587
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
597
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block. </td></tr>
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>
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>
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">
613
<td class="memname">void bm::bit_block_or </td>
615
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
616
<td class="paramname"> <em>dst</em>, </td>
619
<td class="paramkey"></td>
621
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
622
<td class="paramname"> <em>src</em></td><td> </td>
627
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
637
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block. </td></tr>
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>
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>
646
<p>Referenced by <a class="el" href="a00093_source.html#l03797">bm::bit_operation_or()</a>.</p>
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">
655
<td class="memname">unsigned bm::bit_block_or_any </td>
657
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
658
<td class="paramname"> <em>src1</em>, </td>
661
<td class="paramkey"></td>
663
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
664
<td class="paramname"> <em>src1_end</em>, </td>
667
<td class="paramkey"></td>
669
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
670
<td class="paramname"> <em>src2</em></td><td> </td>
675
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block. </td></tr>
685
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
686
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
693
<p>Referenced by <a class="el" href="a00093_source.html#l03727">bm::bit_operation_or_any()</a>.</p>
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">
702
<td class="memname">unsigned bm::bit_block_or_count </td>
704
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
705
<td class="paramname"> <em>src1</em>, </td>
708
<td class="paramkey"></td>
710
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
711
<td class="paramname"> <em>src1_end</em>, </td>
714
<td class="paramkey"></td>
716
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
717
<td class="paramname"> <em>src2</em></td><td> </td>
722
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block </td></tr>
732
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first block end </td></tr>
733
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
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>
742
<p>Referenced by <a class="el" href="a00093_source.html#l03695">bm::bit_operation_or_count()</a>.</p>
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">
751
<td class="memname">void bm::bit_block_set </td>
753
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
754
<td class="paramname"> <em>dst</em>, </td>
757
<td class="paramkey"></td>
759
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
760
<td class="paramname"> <em>value</em></td><td> </td>
765
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
775
<tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>- value to set. </td></tr>
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>
782
<p>References <a class="el" href="a00091_source.html#l00052">bm::set_block_size</a>.</p>
784
<p>Referenced by <a class="el" href="a00096_source.html#l01453">bm::deserializer< BV, DEC >::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< DEC >::get_arr_bit()</a>, and <a class="el" href="a00096_source.html#l01916">bm::serial_stream_iterator< DEC >::get_bit_block_ASSIGN()</a>.</p>
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">
793
<td class="memname">void bm::bit_block_sub </td>
795
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
796
<td class="paramname"> <em>dst</em>, </td>
799
<td class="paramkey"></td>
801
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
802
<td class="paramname"> <em>src</em></td><td> </td>
807
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
817
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block. </td></tr>
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>
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>
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< DEC >::get_bit_block_SUB()</a>.</p>
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">
835
<td class="memname">unsigned bm::bit_block_sub_any </td>
837
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
838
<td class="paramname"> <em>src1</em>, </td>
841
<td class="paramkey"></td>
843
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
844
<td class="paramname"> <em>src1_end</em>, </td>
847
<td class="paramkey"></td>
849
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
850
<td class="paramname"> <em>src2</em></td><td> </td>
855
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block. </td></tr>
865
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
866
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
873
<p>Referenced by <a class="el" href="a00093_source.html#l03665">bm::bit_operation_sub_any()</a>.</p>
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">
882
<td class="memname">unsigned bm::bit_block_sub_count </td>
884
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
885
<td class="paramname"> <em>src1</em>, </td>
888
<td class="paramkey"></td>
890
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
891
<td class="paramname"> <em>src1_end</em>, </td>
894
<td class="paramkey"></td>
896
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
897
<td class="paramname"> <em>src2</em></td><td> </td>
902
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block. </td></tr>
912
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
913
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
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>
922
<p>Referenced by <a class="el" href="a00093_source.html#l03614">bm::bit_operation_sub_count()</a>.</p>
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">
931
<td class="memname">void bm::bit_block_xor </td>
933
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
934
<td class="paramname"> <em>dst</em>, </td>
937
<td class="paramkey"></td>
939
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
940
<td class="paramname"> <em>src</em></td><td> </td>
945
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- destination block. </td></tr>
955
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block. </td></tr>
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>
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>
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< BV, SerialIterator >::deserialize()</a>, and <a class="el" href="a00096_source.html#l02126">bm::serial_stream_iterator< DEC >::get_bit_block_XOR()</a>.</p>
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">
973
<td class="memname">unsigned bm::bit_block_xor_any </td>
975
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
976
<td class="paramname"> <em>src1</em>, </td>
979
<td class="paramkey"></td>
981
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
982
<td class="paramname"> <em>src1_end</em>, </td>
985
<td class="paramkey"></td>
987
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
988
<td class="paramname"> <em>src2</em></td><td> </td>
993
<td></td><td></td><td><code> [inline]</code></td>
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> </td><td>- first bit block. </td></tr>
1003
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1004
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
1011
<p>Referenced by <a class="el" href="a00093_source.html#l04054">bm::bit_operation_xor_any()</a>.</p>
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">
1020
<td class="memname">unsigned bm::bit_block_xor_count </td>
1022
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1023
<td class="paramname"> <em>src1</em>, </td>
1026
<td class="paramkey"></td>
1028
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1029
<td class="paramname"> <em>src1_end</em>, </td>
1032
<td class="paramkey"></td>
1034
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1035
<td class="paramname"> <em>src2</em></td><td> </td>
1040
<td></td><td></td><td><code> [inline]</code></td>
1044
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1050
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1051
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block. </td></tr>
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>
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>
1060
<p>Referenced by <a class="el" href="a00093_source.html#l04029">bm::bit_operation_xor_count()</a>.</p>
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<typename T > </div>
1069
<table class="memname">
1071
<td class="memname">T bm::bit_convert_to_arr </td>
1073
<td class="paramtype">T *BMRESTRICT </td>
1074
<td class="paramname"> <em>dest</em>, </td>
1077
<td class="paramkey"></td>
1079
<td class="paramtype">const unsigned *BMRESTRICT </td>
1080
<td class="paramname"> <em>src</em>, </td>
1083
<td class="paramkey"></td>
1085
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td>
1086
<td class="paramname"> <em>bits</em>, </td>
1089
<td class="paramkey"></td>
1091
<td class="paramtype">unsigned </td>
1092
<td class="paramname"> <em>dest_len</em>, </td>
1095
<td class="paramkey"></td>
1097
<td class="paramtype">unsigned </td>
1098
<td class="paramname"> <em>mask</em> = <code>0</code></td><td> </td>
1103
<td></td><td></td><td><code> [inline]</code></td>
1107
<div class="memdoc">
1109
<p>Convert bit block into an array of ints corresponding to 1 bits. </p>
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>
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< B >::ptr()</a>.</p>
1115
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
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">
1124
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_count_change </td>
1126
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> </td>
1127
<td class="paramname"> <em>w</em></td>
611
1128
<td> ) </td>
612
1129
<td><code> [inline]</code></td>
616
1133
<div class="memdoc">
618
<p>Convert set operation into compatible distance metric. </p>
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>
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>
624
<p>Referenced by <a class="el" href="a00092_source.html#l02899">bm::iterator_deserializer< BV, SerialIterator >::deserialize()</a>.</p>
629
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Nov 22 10:49:42 2009 for BitMagic by
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>
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>
1139
<p>References <a class="el" href="a00092_source.html#l00168">BM_INCWORD_BITCOUNT</a>.</p>
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<class T > </div>
1148
<table class="memname">
1150
<td class="memname">unsigned bm::bit_count_nonzero_size </td>
1152
<td class="paramtype">const T * </td>
1153
<td class="paramname"> <em>blk</em>, </td>
1156
<td class="paramkey"></td>
1158
<td class="paramtype">unsigned </td>
1159
<td class="paramname"> <em>data_size</em></td><td> </td>
1164
<td></td><td></td><td><code> [inline]</code></td>
1168
<div class="memdoc">
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> </td><td>- bit block pointer </td></tr>
1174
<tr><td valign="top"></td><td valign="top"><em>data_size</em> </td><td>- data size</td></tr>
1178
<dl class="return"><dt><b>Returns:</b></dt><dd>size of all non-zero words </dd></dl>
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>
1182
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
1184
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
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">
1193
<td class="memname">int bm::bit_find_in_block </td>
1195
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> * </td>
1196
<td class="paramname"> <em>data</em>, </td>
1199
<td class="paramkey"></td>
1201
<td class="paramtype">unsigned </td>
1202
<td class="paramname"> <em>nbit</em>, </td>
1205
<td class="paramkey"></td>
1207
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> * </td>
1208
<td class="paramname"> <em>prev</em></td><td> </td>
1213
<td></td><td></td><td><code> [inline]</code></td>
1217
<div class="memdoc">
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> </td><td>- BIT buffer </td></tr>
1223
<tr><td valign="top"></td><td valign="top"><em>nbit</em> </td><td>- bit index to start checking from </td></tr>
1224
<tr><td valign="top"></td><td valign="top"><em>prev</em> </td><td>- returns previously checked value </td></tr>
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>
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>
1233
<p>Referenced by <a class="el" href="a00096_source.html#l00758">bm::serializer< BV >::serialize()</a>.</p>
1237
<a class="anchor" id="ga24be2ad5d8c2a8f18fdad142452aaae8"></a><!-- doxytag: member="bm::bit_for_each" ref="ga24be2ad5d8c2a8f18fdad142452aaae8" args="(T w, F &func)" -->
1238
<div class="memitem">
1239
<div class="memproto">
1240
<div class="memtemplate">
1241
template<typename T , typename F > </div>
1242
<table class="memname">
1244
<td class="memname">void bm::bit_for_each </td>
1246
<td class="paramtype">T </td>
1247
<td class="paramname"> <em>w</em>, </td>
1250
<td class="paramkey"></td>
1252
<td class="paramtype">F & </td>
1253
<td class="paramname"> <em>func</em></td><td> </td>
1258
<td></td><td></td><td><code> [inline]</code></td>
1262
<div class="memdoc">
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> </td><td>- value </td></tr>
1268
<tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>- bit functor </td></tr>
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>
1275
<p>Referenced by <a class="el" href="a00093_source.html#l04416">bm::bit_list()</a>.</p>
1279
<a class="anchor" id="gab9f80b3c898323ce77beb915e4c861f3"></a><!-- doxytag: member="bm::bit_for_each_4" ref="gab9f80b3c898323ce77beb915e4c861f3" args="(T w, F &func)" -->
1280
<div class="memitem">
1281
<div class="memproto">
1282
<div class="memtemplate">
1283
template<typename T , typename F > </div>
1284
<table class="memname">
1286
<td class="memname">void bm::bit_for_each_4 </td>
1288
<td class="paramtype">T </td>
1289
<td class="paramname"> <em>w</em>, </td>
1292
<td class="paramkey"></td>
1294
<td class="paramtype">F & </td>
1295
<td class="paramname"> <em>func</em></td><td> </td>
1300
<td></td><td></td><td><code> [inline]</code></td>
1304
<div class="memdoc">
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> </td><td>- value </td></tr>
1310
<tr><td valign="top"></td><td valign="top"><em>func</em> </td><td>- bit functor </td></tr>
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>
1317
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
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>
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<typename T , unsigned BPC, unsigned BPS> </div>
1328
<table class="memname">
1330
<td class="memname">void bm::bit_iblock_make_pcv </td>
1332
<td class="paramtype">const unsigned </td>
1333
<td class="paramname"> <em>distance</em>[BPC][BPC], </td>
1336
<td class="paramkey"></td>
1338
<td class="paramtype">unsigned char * </td>
1339
<td class="paramname"> <em>pc_vector</em></td><td> </td>
1344
<td></td><td></td><td><code> [inline]</code></td>
1348
<div class="memdoc">
1350
<p>!< 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> </td><td>- pairwise distance matrix </td></tr>
1355
<tr><td valign="top"></td><td valign="top"><em>pc_vector</em> </td><td>- OUT compression descriptor vector </p>
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 )
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>
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>
1376
<p>Referenced by <a class="el" href="a00100_source.html#l00806">bm::gap_transpose_engine< GT, BT, BLOCK_SIZE >::compute_distance_matrix()</a>.</p>
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<typename T > </div>
1385
<table class="memname">
1387
<td class="memname">void bm::bit_invert </td>
1389
<td class="paramtype">T * </td>
1390
<td class="paramname"> <em>start</em>, </td>
1393
<td class="paramkey"></td>
1395
<td class="paramtype">T * </td>
1396
<td class="paramname"> <em>end</em></td><td> </td>
1401
<td></td><td></td><td><code> [inline]</code></td>
1405
<div class="memdoc">
1406
<p>Function inverts block of bits </p>
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>
1410
<p>References <a class="el" href="a00098_source.html#l00210">VECT_INVERT_ARR</a>.</p>
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">
1419
<td class="memname">bool bm::bit_is_all_zero </td>
1421
<td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> * </td>
1422
<td class="paramname"> <em>start</em>, </td>
1425
<td class="paramkey"></td>
1427
<td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> * </td>
1428
<td class="paramname"> <em>end</em></td><td> </td>
1433
<td></td><td></td><td><code> [inline]</code></td>
1437
<div class="memdoc">
1439
<p>Returns "true" if all bits in the block are 0. </p>
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>
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< Alloc, MS >::compare()</a>.</p>
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<typename T , typename B > </div>
1452
<table class="memname">
1454
<td class="memname">unsigned bm::bit_list </td>
1456
<td class="paramtype">T </td>
1457
<td class="paramname"> <em>w</em>, </td>
1460
<td class="paramkey"></td>
1462
<td class="paramtype">B * </td>
1463
<td class="paramname"> <em>bits</em></td><td> </td>
1468
<td></td><td></td><td><code> [inline]</code></td>
1472
<div class="memdoc">
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> </td><td>- value </td></tr>
1478
<tr><td valign="top"></td><td valign="top"><em>bits</em> </td><td>- pointer on the result array </td></tr>
1482
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bits in the list </dd></dl>
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>
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< B >::ptr()</a>.</p>
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<typename T , typename B > </div>
1495
<table class="memname">
1497
<td class="memname">unsigned bm::bit_list_4 </td>
1499
<td class="paramtype">T </td>
1500
<td class="paramname"> <em>w</em>, </td>
1503
<td class="paramkey"></td>
1505
<td class="paramtype">B * </td>
1506
<td class="paramname"> <em>bits</em></td><td> </td>
1511
<td></td><td></td><td><code> [inline]</code></td>
1515
<div class="memdoc">
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> </td><td>- value </td></tr>
1521
<tr><td valign="top"></td><td valign="top"><em>bits</em> </td><td>- pointer on the result array </td></tr>
1525
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bits in the list </dd></dl>
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>
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< B >::ptr()</a>.</p>
1531
<p>Referenced by <a class="el" href="a00087_source.html#l00500">bm::bvector< Alloc, MS >::enumerator::go_up()</a>.</p>
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">
1540
<td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_and </td>
1542
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1543
<td class="paramname"> <em>dst</em>, </td>
1546
<td class="paramkey"></td>
1548
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1549
<td class="paramname"> <em>src</em></td><td> </td>
1554
<td></td><td></td><td><code> [inline]</code></td>
1558
<div class="memdoc">
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> </td><td>- destination block. </td></tr>
1564
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block.</td></tr>
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>
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>
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>
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">
1581
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_and_any </td>
1583
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1584
<td class="paramname"> <em>src1</em>, </td>
1587
<td class="paramkey"></td>
1589
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1590
<td class="paramname"> <em>src1_end</em>, </td>
1593
<td class="paramkey"></td>
1595
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1596
<td class="paramname"> <em>src2</em></td><td> </td>
1601
<td></td><td></td><td><code> [inline]</code></td>
1605
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1611
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1612
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
1616
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero if there is any value </dd></dl>
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>
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>
1622
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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">
1631
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_and_count </td>
1633
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1634
<td class="paramname"> <em>src1</em>, </td>
1637
<td class="paramkey"></td>
1639
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1640
<td class="paramname"> <em>src1_end</em>, </td>
1643
<td class="paramkey"></td>
1645
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1646
<td class="paramname"> <em>src2</em></td><td> </td>
1651
<td></td><td></td><td><code> [inline]</code></td>
1655
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1661
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1662
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
1666
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
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>
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>
1672
<p>Referenced by <a class="el" href="a00096_source.html#l02365">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_AND()</a>.</p>
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">
1681
<td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_or </td>
1683
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1684
<td class="paramname"> <em>dst</em>, </td>
1687
<td class="paramkey"></td>
1689
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1690
<td class="paramname"> <em>src</em></td><td> </td>
1695
<td></td><td></td><td><code> [inline]</code></td>
1699
<div class="memdoc">
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> </td><td>- destination block. </td></tr>
1705
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block.</td></tr>
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>
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>
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>
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">
1722
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_or_any </td>
1724
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1725
<td class="paramname"> <em>src1</em>, </td>
1728
<td class="paramkey"></td>
1730
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1731
<td class="paramname"> <em>src1_end</em>, </td>
1734
<td class="paramkey"></td>
1736
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1737
<td class="paramname"> <em>src2</em></td><td> </td>
1742
<td></td><td></td><td><code> [inline]</code></td>
1746
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1752
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1753
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
1757
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are any bits </dd></dl>
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>
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>
1763
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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">
1772
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_or_count </td>
1774
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1775
<td class="paramname"> <em>src1</em>, </td>
1778
<td class="paramkey"></td>
1780
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1781
<td class="paramname"> <em>src1_end</em>, </td>
1784
<td class="paramkey"></td>
1786
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1787
<td class="paramname"> <em>src2</em></td><td> </td>
1792
<td></td><td></td><td><code> [inline]</code></td>
1796
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1802
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1803
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
1807
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
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>
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>
1813
<p>Referenced by <a class="el" href="a00096_source.html#l02424">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_OR()</a>.</p>
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">
1822
<td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_sub </td>
1824
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1825
<td class="paramname"> <em>dst</em>, </td>
1828
<td class="paramkey"></td>
1830
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1831
<td class="paramname"> <em>src</em></td><td> </td>
1836
<td></td><td></td><td><code> [inline]</code></td>
1840
<div class="memdoc">
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> </td><td>- destination block. </td></tr>
1846
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block.</td></tr>
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>
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>
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>
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">
1863
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_any </td>
1865
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1866
<td class="paramname"> <em>src1</em>, </td>
1869
<td class="paramkey"></td>
1871
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1872
<td class="paramname"> <em>src1_end</em>, </td>
1875
<td class="paramkey"></td>
1877
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1878
<td class="paramname"> <em>src2</em></td><td> </td>
1883
<td></td><td></td><td><code> [inline]</code></td>
1887
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1893
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1894
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block</td></tr>
1898
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are any bits </dd></dl>
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>
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>
1904
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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">
1913
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_count </td>
1915
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1916
<td class="paramname"> <em>src1</em>, </td>
1919
<td class="paramkey"></td>
1921
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1922
<td class="paramname"> <em>src1_end</em>, </td>
1925
<td class="paramkey"></td>
1927
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1928
<td class="paramname"> <em>src2</em></td><td> </td>
1933
<td></td><td></td><td><code> [inline]</code></td>
1937
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1943
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1944
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block</td></tr>
1948
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
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>
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>
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< DEC >::get_bit_block_COUNT_SUB_AB()</a>, and <a class="el" href="a00096_source.html#l02659">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_BA()</a>.</p>
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">
1963
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_sub_count_inv </td>
1965
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1966
<td class="paramname"> <em>src1</em>, </td>
1969
<td class="paramkey"></td>
1971
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1972
<td class="paramname"> <em>src1_end</em>, </td>
1975
<td class="paramkey"></td>
1977
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
1978
<td class="paramname"> <em>src2</em></td><td> </td>
1983
<td></td><td></td><td><code> [inline]</code></td>
1987
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
1993
<tr><td valign="top"></td><td valign="top"><em>src1_end</em> </td><td>- first bit block end </td></tr>
1994
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block</td></tr>
1998
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
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>
2002
<p>References <a class="el" href="a00093_source.html#l03614">bm::bit_operation_sub_count()</a>.</p>
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">
2011
<td class="memname"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>* bm::bit_operation_xor </td>
2013
<td class="paramtype"><a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2014
<td class="paramname"> <em>dst</em>, </td>
2017
<td class="paramkey"></td>
2019
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2020
<td class="paramname"> <em>src</em></td><td> </td>
2025
<td></td><td></td><td><code> [inline]</code></td>
2029
<div class="memdoc">
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> </td><td>- destination block. </td></tr>
2035
<tr><td valign="top"></td><td valign="top"><em>src</em> </td><td>- source block.</td></tr>
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>
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>
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>
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">
2052
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_xor_any </td>
2054
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2055
<td class="paramname"> <em>src1</em>, </td>
2058
<td class="paramkey"></td>
2060
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2061
<td class="paramname"> <em>src1_end</em>, </td>
2064
<td class="paramkey"></td>
2066
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2067
<td class="paramname"> <em>src2</em></td><td> </td>
2072
<td></td><td></td><td><code> [inline]</code></td>
2076
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
2082
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
2086
<dl class="return"><dt><b>Returns:</b></dt><dd>non zero value if there are bits </dd></dl>
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>
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>
2092
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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">
2101
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::bit_operation_xor_count </td>
2103
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2104
<td class="paramname"> <em>src1</em>, </td>
2107
<td class="paramkey"></td>
2109
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2110
<td class="paramname"> <em>src1_end</em>, </td>
2113
<td class="paramkey"></td>
2115
<td class="paramtype">const <a class="el" href="a00115.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *BMRESTRICT </td>
2116
<td class="paramname"> <em>src2</em></td><td> </td>
2121
<td></td><td></td><td><code> [inline]</code></td>
2125
<div class="memdoc">
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> </td><td>- first bit block. </td></tr>
2131
<tr><td valign="top"></td><td valign="top"><em>src2</em> </td><td>- second bit block.</td></tr>
2135
<dl class="return"><dt><b>Returns:</b></dt><dd>bitcount value </dd></dl>
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>
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>
2141
<p>Referenced by <a class="el" href="a00096_source.html#l02502">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_XOR()</a>.</p>
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<typename T > </div>
2150
<table class="memname">
2152
<td class="memname">int bm::bitcmp </td>
2154
<td class="paramtype">const T * </td>
2155
<td class="paramname"> <em>buf1</em>, </td>
2158
<td class="paramkey"></td>
2160
<td class="paramtype">const T * </td>
2161
<td class="paramname"> <em>buf2</em>, </td>
2164
<td class="paramkey"></td>
2166
<td class="paramtype">unsigned </td>
2167
<td class="paramname"> <em>len</em></td><td> </td>
2172
<td></td><td></td><td><code> [inline]</code></td>
2176
<div class="memdoc">
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> </td><td>- First buffer pointer. </td></tr>
2182
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second buffer pointer. </td></tr>
2183
<tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>- Buffer length in elements (T). </td></tr>
2187
<dl class="return"><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
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>
2191
<p>References <a class="el" href="a00092_source.html#l00050">BM_ASSERT</a>.</p>
2193
<p>Referenced by <a class="el" href="a00087_source.html#l01921">bm::bvector< Alloc, MS >::compare()</a>.</p>
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<typename T > </div>
2202
<table class="memname">
2204
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_and_any </td>
2206
<td class="paramtype">const unsigned * </td>
2207
<td class="paramname"> <em>block</em>, </td>
2210
<td class="paramkey"></td>
2212
<td class="paramtype">const T * </td>
2213
<td class="paramname"> <em>buf</em></td><td> </td>
2218
<td></td><td></td><td><code> [inline]</code></td>
2222
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2228
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2237
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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<typename T > </div>
2246
<table class="memname">
2248
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_and_count </td>
2250
<td class="paramtype">const unsigned * </td>
2251
<td class="paramname"> <em>block</em>, </td>
2254
<td class="paramkey"></td>
2256
<td class="paramtype">const T * </td>
2257
<td class="paramname"> <em>buf</em></td><td> </td>
2262
<td></td><td></td><td><code> [inline]</code></td>
2266
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2272
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2281
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
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<typename T > </div>
2290
<table class="memname">
2292
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_or_any </td>
2294
<td class="paramtype">const unsigned * </td>
2295
<td class="paramname"> <em>block</em>, </td>
2298
<td class="paramkey"></td>
2300
<td class="paramtype">const T * </td>
2301
<td class="paramname"> <em>buf</em></td><td> </td>
2306
<td></td><td></td><td><code> [inline]</code></td>
2310
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2316
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2325
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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<typename T > </div>
2334
<table class="memname">
2336
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_or_count </td>
2338
<td class="paramtype">const unsigned * </td>
2339
<td class="paramname"> <em>block</em>, </td>
2342
<td class="paramkey"></td>
2344
<td class="paramtype">const T * </td>
2345
<td class="paramname"> <em>buf</em></td><td> </td>
2350
<td></td><td></td><td><code> [inline]</code></td>
2354
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2360
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2369
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
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<typename T > </div>
2378
<table class="memname">
2380
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_sub_any </td>
2382
<td class="paramtype">const unsigned * </td>
2383
<td class="paramname"> <em>block</em>, </td>
2386
<td class="paramkey"></td>
2388
<td class="paramtype">const T * </td>
2389
<td class="paramname"> <em>buf</em></td><td> </td>
2394
<td></td><td></td><td><code> [inline]</code></td>
2398
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2404
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2413
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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<typename T > </div>
2422
<table class="memname">
2424
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_sub_count </td>
2426
<td class="paramtype">const unsigned * </td>
2427
<td class="paramname"> <em>block</em>, </td>
2430
<td class="paramkey"></td>
2432
<td class="paramtype">const T * </td>
2433
<td class="paramname"> <em>buf</em></td><td> </td>
2438
<td></td><td></td><td><code> [inline]</code></td>
2442
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2448
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2457
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
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<typename T > </div>
2466
<table class="memname">
2468
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_xor_any </td>
2470
<td class="paramtype">const unsigned * </td>
2471
<td class="paramname"> <em>block</em>, </td>
2474
<td class="paramkey"></td>
2476
<td class="paramtype">const T * </td>
2477
<td class="paramname"> <em>buf</em></td><td> </td>
2482
<td></td><td></td><td><code> [inline]</code></td>
2486
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2492
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2501
<p>Referenced by <a class="el" href="a00089_source.html#l00343">bm::combine_any_operation_with_block()</a>.</p>
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<typename T > </div>
2510
<table class="memname">
2512
<td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::gap_bitset_xor_count </td>
2514
<td class="paramtype">const unsigned * </td>
2515
<td class="paramname"> <em>block</em>, </td>
2518
<td class="paramkey"></td>
2520
<td class="paramtype">const T * </td>
2521
<td class="paramname"> <em>buf</em></td><td> </td>
2526
<td></td><td></td><td><code> [inline]</code></td>
2530
<div class="memdoc">
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> </td><td>- bitblock buffer pointer. </td></tr>
2536
<tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>- GAP buffer pointer. </td></tr>
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>
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>
2545
<p>Referenced by <a class="el" href="a00089_source.html#l00114">bm::combine_count_operation_with_block()</a>.</p>
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">
2554
<td class="memname">bool bm::is_bits_one </td>
2556
<td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> * </td>
2557
<td class="paramname"> <em>start</em>, </td>
2560
<td class="paramkey"></td>
2562
<td class="paramtype">const <a class="el" href="a00115.html#a7176bf7817550ca24cb6612bd8d7957d">bm::wordop_t</a> * </td>
2563
<td class="paramname"> <em>end</em></td><td> </td>
2568
<td></td><td></td><td><code> [inline]</code></td>
2572
<div class="memdoc">
2574
<p>Returns "true" if all bits in the block are 1. </p>
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>
2578
<p>References <a class="el" href="a00091_source.html#l00101">bm::all_bits_mask</a>.</p>
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">
2587
<td class="memname">void bm::or_bit_block </td>
2589
<td class="paramtype">unsigned * </td>
2590
<td class="paramname"> <em>dest</em>, </td>
2593
<td class="paramkey"></td>
2595
<td class="paramtype">unsigned </td>
2596
<td class="paramname"> <em>bitpos</em>, </td>
2599
<td class="paramkey"></td>
2601
<td class="paramtype">unsigned </td>
2602
<td class="paramname"> <em>bitcount</em></td><td> </td>
2607
<td></td><td></td><td><code> [inline]</code></td>
2611
<div class="memdoc">
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> </td><td>- Bitset buffer. </td></tr>
2617
<tr><td valign="top"></td><td valign="top"><em>bitpos</em> </td><td>- Offset of the start bit. </td></tr>
2618
<tr><td valign="top"></td><td valign="top"><em>bitcount</em> </td><td>- number of bits to set. </td></tr>
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>
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>
2627
<p>Referenced by <a class="el" href="a00096_source.html#l01453">bm::deserializer< BV, DEC >::deserialize()</a>, <a class="el" href="a00096_source.html#l01232">bm::deserializer< BV, DEC >::deserialize_gap()</a>, and <a class="el" href="a00093_source.html#l01530">bm::gap_add_to_bitset()</a>.</p>
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">
2636
<td class="memname">BMFORCEINLINE void bm::set_bit </td>
2638
<td class="paramtype">unsigned * </td>
2639
<td class="paramname"> <em>dest</em>, </td>
2642
<td class="paramkey"></td>
2644
<td class="paramtype">unsigned </td>
2645
<td class="paramname"> <em>bitpos</em></td><td> </td>
2650
<td></td><td></td><td></td>
2654
<div class="memdoc">
2656
<p>Set 1 bit in a block. </p>
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>
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>
2662
<p>Referenced by <a class="el" href="a00096_source.html#l02732">bm::serial_stream_iterator< DEC >::get_arr_bit()</a>.</p>
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">
2671
<td class="memname">void bm::sub_bit_block </td>
2673
<td class="paramtype">unsigned * </td>
2674
<td class="paramname"> <em>dest</em>, </td>
2677
<td class="paramkey"></td>
2679
<td class="paramtype">unsigned </td>
2680
<td class="paramname"> <em>bitpos</em>, </td>
2683
<td class="paramkey"></td>
2685
<td class="paramtype">unsigned </td>
2686
<td class="paramname"> <em>bitcount</em></td><td> </td>
2691
<td></td><td></td><td><code> [inline]</code></td>
2695
<div class="memdoc">
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> </td><td>- Bitset buffer. </td></tr>
2701
<tr><td valign="top"></td><td valign="top"><em>bitpos</em> </td><td>- Offset of the start bit. </td></tr>
2702
<tr><td valign="top"></td><td valign="top"><em>bitcount</em> </td><td>- number of bits to set. </td></tr>
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>
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>
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>
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">
2720
<td class="memname">BMFORCEINLINE unsigned bm::test_bit </td>
2722
<td class="paramtype">const unsigned * </td>
2723
<td class="paramname"> <em>block</em>, </td>
2726
<td class="paramkey"></td>
2728
<td class="paramtype">unsigned </td>
2729
<td class="paramname"> <em>bitpos</em></td><td> </td>
2734
<td></td><td></td><td></td>
2738
<div class="memdoc">
2740
<p>Test 1 bit in a block. </p>
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>
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>
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<typename T , unsigned BPC, unsigned BPS> </div>
2753
<table class="memname">
2755
<td class="memname">void bm::tmatrix_distance </td>
2757
<td class="paramtype">const T </td>
2758
<td class="paramname"> <em>tmatrix</em>[BPC][BPS], </td>
2761
<td class="paramkey"></td>
2763
<td class="paramtype">unsigned </td>
2764
<td class="paramname"> <em>distance</em>[BPC][BPC]</td><td> </td>
2769
<td></td><td></td><td><code> [inline]</code></td>
2773
<div class="memdoc">
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> </td><td>- bit-block transposition matrix (bit-plains) </td></tr>
2779
<tr><td valign="top"></td><td valign="top"><em>distance</em> </td><td>- pairwise NxN Humming distance matrix (diagonal is popcnt) </td></tr>
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>
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>
2788
<p>Referenced by <a class="el" href="a00100_source.html#l00806">bm::gap_transpose_engine< GT, BT, BLOCK_SIZE >::compute_distance_matrix()</a>.</p>
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">
2797
<td class="memname">BMFORCEINLINE <a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::word_bitcount </td>
2799
<td class="paramtype"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> </td>
2800
<td class="paramname"> <em>w</em></td>
2801
<td> ) </td>
2806
<div class="memdoc">
2807
<p>Returns bit count </p>
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>
2811
<p>Referenced by <a class="el" href="a00096_source.html#l02245">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT()</a>, <a class="el" href="a00096_source.html#l02365">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_AND()</a>, <a class="el" href="a00096_source.html#l02424">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_OR()</a>, <a class="el" href="a00096_source.html#l02580">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_AB()</a>, <a class="el" href="a00096_source.html#l02659">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_SUB_BA()</a>, and <a class="el" href="a00096_source.html#l02502">bm::serial_stream_iterator< DEC >::get_bit_block_COUNT_XOR()</a>.</p>
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<typename T > </div>
2820
<table class="memname">
2822
<td class="memname">int bm::wordcmp </td>
2824
<td class="paramtype">T </td>
2825
<td class="paramname"> <em>a</em>, </td>
2828
<td class="paramkey"></td>
2830
<td class="paramtype">T </td>
2831
<td class="paramname"> <em>b</em></td><td> </td>
2836
<td></td><td></td><td><code> [inline]</code></td>
2840
<div class="memdoc">
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> </td><td>- First word. </td></tr>
2846
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second word. </td></tr>
2850
<dl class="return"><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
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>
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<typename T > </div>
2861
<table class="memname">
2863
<td class="memname">int bm::wordcmp0 </td>
2865
<td class="paramtype">T </td>
2866
<td class="paramname"> <em>w1</em>, </td>
2869
<td class="paramkey"></td>
2871
<td class="paramtype">T </td>
2872
<td class="paramname"> <em>w2</em></td><td> </td>
2877
<td></td><td></td><td><code> [inline]</code></td>
2881
<div class="memdoc">
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> </td><td>- First word. </td></tr>
2887
<tr><td valign="top"></td><td valign="top"><em>buf2</em> </td><td>- Second word. </td></tr>
2891
<dl class="return"><dt><b>Returns:</b></dt><dd><0 - less, =0 - equal, >0 - greater. </dd></dl>
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>
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">
2902
<td class="memname">void bm::xor_bit_block </td>
2904
<td class="paramtype">unsigned * </td>
2905
<td class="paramname"> <em>dest</em>, </td>
2908
<td class="paramkey"></td>
2910
<td class="paramtype">unsigned </td>
2911
<td class="paramname"> <em>bitpos</em>, </td>
2914
<td class="paramkey"></td>
2916
<td class="paramtype">unsigned </td>
2917
<td class="paramname"> <em>bitcount</em></td><td> </td>
2922
<td></td><td></td><td><code> [inline]</code></td>
2926
<div class="memdoc">
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> </td><td>- Bitset buffer. </td></tr>
2932
<tr><td valign="top"></td><td valign="top"><em>bitpos</em> </td><td>- Offset of the start bit. </td></tr>
2933
<tr><td valign="top"></td><td valign="top"><em>bitcount</em> </td><td>- number of bits to set. </td></tr>
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>
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>
2942
<p>Referenced by <a class="el" href="a00093_source.html#l01498">bm::gap_xor_to_bitset()</a>.</p>
2947
<hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 8 20:09:20 2010 for BitMagic by
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>