1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QBitArray Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">  </td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QBitArray Class Reference<br /><sup><sup>[<a href="qtcore.html">QtCore</a> module]</sup></sup></h1><p>The QBitArray class provides an array of bits. <a href="#details">More...</a></p>
<h3>Methods</h3><ul><li><div class="fn" /><b><a href="qbitarray.html#QBitArray">__init__</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#QBitArray-2">__init__</a></b> (<i>self</i>, int <i>size</i>, bool <i>value</i> = False)</li><li><div class="fn" /><b><a href="qbitarray.html#QBitArray-3">__init__</a></b> (<i>self</i>, QBitArray <i>other</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#at">at</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#clear">clear</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#clearBit">clearBit</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" />int <b><a href="qbitarray.html#count">count</a></b> (<i>self</i>)</li><li><div class="fn" />int <b><a href="qbitarray.html#count-2">count</a></b> (<i>self</i>, bool <i>on</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#detach">detach</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#fill">fill</a></b> (<i>self</i>, bool <i>val</i>, int <i>first</i>, int <i>last</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#fill-2">fill</a></b> (<i>self</i>, bool <i>value</i>, int <i>size</i> = -1)</li><li><div class="fn" />bool <b><a href="qbitarray.html#isDetached">isDetached</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#isEmpty">isEmpty</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#isNull">isNull</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#resize">resize</a></b> (<i>self</i>, int <i>size</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#setBit">setBit</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#setBit-2">setBit</a></b> (<i>self</i>, int <i>i</i>, bool <i>val</i>)</li><li><div class="fn" />int <b><a href="qbitarray.html#size">size</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#swap">swap</a></b> (<i>self</i>, QBitArray <i>other</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#testBit">testBit</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#toggleBit">toggleBit</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" /><b><a href="qbitarray.html#truncate">truncate</a></b> (<i>self</i>, int <i>pos</i>)</li></ul><h3>Special Methods</h3><ul><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__and__">__and__</a></b> (<i>self</i>, QBitArray)</li><li><div class="fn" />bool <b><a href="qbitarray.html#__eq__">__eq__</a></b> (<i>self</i>, QBitArray <i>a</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#__getitem__">__getitem__</a></b> (<i>self</i>, int <i>i</i>)</li><li><div class="fn" />int <b><a href="qbitarray.html#__hash__">__hash__</a></b> (<i>self</i>)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__iand__">__iand__</a></b> (<i>self</i>, QBitArray)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__invert__">__invert__</a></b> (<i>self</i>)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__ior__">__ior__</a></b> (<i>self</i>, QBitArray)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__ixor__">__ixor__</a></b> (<i>self</i>, QBitArray)</li><li><div class="fn" /> <b><a href="qbitarray.html#__len__">__len__</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qbitarray.html#__ne__">__ne__</a></b> (<i>self</i>, QBitArray <i>a</i>)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__or__">__or__</a></b> (<i>self</i>, QBitArray)</li><li><div class="fn" />QBitArray <b><a href="qbitarray.html#__xor__">__xor__</a></b> (<i>self</i>, QBitArray)</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QBitArray class provides an array of bits.</p>
<p>A QBitArray is an array that gives access to individual bits and
provides operators (<a href="qbitarray.html#operator-and">AND</a>,
<a href="qbitarray.html#operator-7c">OR</a>, <a href="qbitarray.html#operator-5e">XOR</a>, and <a href="qbitarray.html#operator-7e">NOT</a>) that work on entire arrays of
bits. It uses <a href="implicit-sharing.html">implicit sharing</a>
(copy-on-write) to reduce memory usage and to avoid the needless
copying of data.</p>
<p>The following code constructs a QBitArray containing 200 bits
initialized to false (0):</p>
<pre class="cpp">
<span class="type">QBitArray</span> ba(<span class="number">200</span>);
</pre>
<p>To initialize the bits to true, either pass <tt>true</tt> as
second argument to the constructor, or call <a href="qbitarray.html#fill">fill</a>() later on.</p>
<p>QBitArray uses 0-based indexes, just like C++ arrays. To access
the bit at a particular index position, you can use operator[]().
On non-const bit arrays, operator[]() returns a reference to a bit
that can be used on the left side of an assignment. For
example:</p>
<pre class="cpp">
<span class="type">QBitArray</span> ba;
ba<span class="operator">.</span><a href="qbitarray.html#resize">resize</a>(<span class="number">3</span>);
ba<span class="operator">[</span><span class="number">0</span><span class="operator">]</span> <span class="operator">=</span> <span class="keyword">true</span>;
ba<span class="operator">[</span><span class="number">1</span><span class="operator">]</span> <span class="operator">=</span> <span class="keyword">false</span>;
ba<span class="operator">[</span><span class="number">2</span><span class="operator">]</span> <span class="operator">=</span> <span class="keyword">true</span>;
</pre>
<p>For technical reasons, it is more efficient to use <a href="qbitarray.html#testBit">testBit</a>() and <a href="qbitarray.html#setBit">setBit</a>() to access bits in the array
than operator[](). For example:</p>
<pre class="cpp">
<span class="type">QBitArray</span> ba(<span class="number">3</span>);
ba<span class="operator">.</span><a href="qbitarray.html#setBit">setBit</a>(<span class="number">0</span><span class="operator">,</span> <span class="keyword">true</span>);
ba<span class="operator">.</span><a href="qbitarray.html#setBit">setBit</a>(<span class="number">1</span><span class="operator">,</span> <span class="keyword">false</span>);
ba<span class="operator">.</span><a href="qbitarray.html#setBit">setBit</a>(<span class="number">2</span><span class="operator">,</span> <span class="keyword">true</span>);
</pre>
<p>QBitArray supports <tt>&</tt> (<a href="qbitarray.html#operator-and">AND</a>), <tt>|</tt> (<a href="qbitarray.html#operator-7c">OR</a>), <tt>^</tt> (<a href="qbitarray.html#operator-5e">XOR</a>), <tt>~</tt> (<a href="qbitarray.html#operator-7e">NOT</a>), as well as <tt>&=</tt>,
<tt>|=</tt>, and <tt>^=</tt>. These operators work in the same way
as the built-in C++ bitwise operators of the same name. For
example:</p>
<pre class="cpp">
<span class="type">QBitArray</span> x(<span class="number">5</span>);
x<span class="operator">.</span><a href="qbitarray.html#setBit">setBit</a>(<span class="number">3</span><span class="operator">,</span> <span class="keyword">true</span>);
<span class="comment">// x: [ 0, 0, 0, 1, 0 ]</span>
<span class="type">QBitArray</span> y(<span class="number">5</span>);
y<span class="operator">.</span><a href="qbitarray.html#setBit">setBit</a>(<span class="number">4</span><span class="operator">,</span> <span class="keyword">true</span>);
<span class="comment">// y: [ 0, 0, 0, 0, 1 ]</span>
x <span class="operator">|</span><span class="operator">=</span> y;
<span class="comment">// x: [ 0, 0, 0, 1, 1 ]</span>
</pre>
<p>For historical reasons, QBitArray distinguishes between a null
bit array and an empty bit array. A <i>null</i> bit array is a bit
array that is initialized using QBitArray's default constructor. An
<i>empty</i> bit array is any bit array with size 0. A null bit
array is always empty, but an empty bit array isn't necessarily
null:</p>
<pre class="cpp">
<span class="type">QBitArray</span>()<span class="operator">.</span><a href="qbitarray.html#isNull">isNull</a>(); <span class="comment">// returns true</span>
<span class="type">QBitArray</span>()<span class="operator">.</span><a href="qbitarray.html#isEmpty">isEmpty</a>(); <span class="comment">// returns true</span>
<span class="type">QBitArray</span>(<span class="number">0</span>)<span class="operator">.</span><a href="qbitarray.html#isNull">isNull</a>(); <span class="comment">// returns false</span>
<span class="type">QBitArray</span>(<span class="number">0</span>)<span class="operator">.</span><a href="qbitarray.html#isEmpty">isEmpty</a>(); <span class="comment">// returns true</span>
<span class="type">QBitArray</span>(<span class="number">3</span>)<span class="operator">.</span><a href="qbitarray.html#isNull">isNull</a>(); <span class="comment">// returns false</span>
<span class="type">QBitArray</span>(<span class="number">3</span>)<span class="operator">.</span><a href="qbitarray.html#isEmpty">isEmpty</a>(); <span class="comment">// returns false</span>
</pre>
<p>All functions except <a href="qbitarray.html#isNull">isNull</a>() treat null bit arrays the same
as empty bit arrays; for example, <a href="qbitarray.html#QBitArray">QBitArray</a>() compares equal to
QBitArray(0). We recommend that you always use <a href="qbitarray.html#isEmpty">isEmpty</a>() and avoid <a href="qbitarray.html#isNull">isNull</a>().</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QBitArray" />QBitArray.__init__ (<i>self</i>)</h3><p>Constructs an empty bit array.</p>
<p><b>See also</b> <a href="qbitarray.html#isEmpty">isEmpty</a>().</p>
<h3 class="fn"><a name="QBitArray-2" />QBitArray.__init__ (<i>self</i>, int <i>size</i>, bool <i>value</i> = False)</h3><p>Constructs a bit array containing <i>size</i> bits. The bits are
initialized with <i>value</i>, which defaults to false (0).</p>
<h3 class="fn"><a name="QBitArray-3" />QBitArray.__init__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a> <i>other</i>)</h3><p>Constructs a copy of <i>other</i>.</p>
<p>This operation takes <a href="containers.html#constant-time">constant time</a>, because <a href="qbitarray.html">QBitArray</a> is <a href="implicit-sharing.html#implicitly-shared">implicitly shared</a>.
This makes returning a <a href="qbitarray.html">QBitArray</a> from
a function very fast. If a shared instance is modified, it will be
copied (copy-on-write), and that takes <a href="containers.html#linear-time">linear time</a>.</p>
<p><b>See also</b> <a href="qbitarray.html#operator-eq">operator=</a>().</p>
<h3 class="fn"><a name="at" />bool QBitArray.at (<i>self</i>, int <i>i</i>)</h3><p>Returns the value of the bit at index position <i>i</i>.</p>
<p><i>i</i> must be a valid index position in the bit array (i.e.,
0 <= <i>i</i> < <a href="qbitarray.html#size">size</a>()).</p>
<p><b>See also</b> <a href="qbitarray.html#operator-5b-5d">operator[]</a>().</p>
<h3 class="fn"><a name="clear" />QBitArray.clear (<i>self</i>)</h3><p>Clears the contents of the bit array and makes it empty.</p>
<p><b>See also</b> <a href="qbitarray.html#resize">resize</a>() and
<a href="qbitarray.html#isEmpty">isEmpty</a>().</p>
<h3 class="fn"><a name="clearBit" />QBitArray.clearBit (<i>self</i>, int <i>i</i>)</h3><p>Sets the bit at index position <i>i</i> to 0.</p>
<p><i>i</i> must be a valid index position in the bit array (i.e.,
0 <= <i>i</i> < <a href="qbitarray.html#size">size</a>()).</p>
<p><b>See also</b> <a href="qbitarray.html#setBit">setBit</a>() and
<a href="qbitarray.html#toggleBit">toggleBit</a>().</p>
<h3 class="fn"><a name="count" />int QBitArray.count (<i>self</i>)</h3><p>Same as <a href="qbitarray.html#size">size</a>().</p>
<h3 class="fn"><a name="count-2" />int QBitArray.count (<i>self</i>, bool <i>on</i>)</h3><p>If <i>on</i> is true, this function returns the number of 1-bits
stored in the bit array; otherwise the number of 0-bits is
returned.</p>
<h3 class="fn"><a name="detach" />QBitArray.detach (<i>self</i>)</h3><h3 class="fn"><a name="fill" />QBitArray.fill (<i>self</i>, bool <i>val</i>, int <i>first</i>, int <i>last</i>)</h3><p>Sets every bit in the bit array to <i>value</i>, returning true
if successful; otherwise returns false. If <i>size</i> is different
from -1 (the default), the bit array is resized to <i>size</i>
beforehand.</p>
<p>Example:</p>
<pre class="cpp">
<span class="type"><a href="qbitarray.html">QBitArray</a></span> ba(<span class="number">8</span>);
ba<span class="operator">.</span>fill(<span class="keyword">true</span>);
<span class="comment">// ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]</span>
ba<span class="operator">.</span>fill(<span class="keyword">false</span><span class="operator">,</span> <span class="number">2</span>);
<span class="comment">// ba: [ 0, 0 ]</span>
</pre>
<p><b>See also</b> <a href="qbitarray.html#resize">resize</a>().</p>
<h3 class="fn"><a name="fill-2" />bool QBitArray.fill (<i>self</i>, bool <i>value</i>, int <i>size</i> = -1)</h3><p>This is an overloaded function.</p>
<p>Sets bits at index positions <i>begin</i> up to and excluding
<i>end</i> to <i>value</i>.</p>
<p><i>begin</i> and <i>end</i> must be a valid index position in
the bit array (i.e., 0 <= <i>begin</i> <= <a href="qbitarray.html#size">size</a>() and 0 <= <i>end</i> <=
<a href="qbitarray.html#size">size</a>()).</p>
<h3 class="fn"><a name="isDetached" />bool QBitArray.isDetached (<i>self</i>)</h3><h3 class="fn"><a name="isEmpty" />bool QBitArray.isEmpty (<i>self</i>)</h3><p>Returns true if this bit array has size 0; otherwise returns
false.</p>
<p><b>See also</b> <a href="qbitarray.html#size">size</a>().</p>
<h3 class="fn"><a name="isNull" />bool QBitArray.isNull (<i>self</i>)</h3><p>Returns true if this bit array is null; otherwise returns
false.</p>
<p>Example:</p>
<pre class="cpp">
<span class="type"><a href="qbitarray.html">QBitArray</a></span>()<span class="operator">.</span>isNull(); <span class="comment">// returns true</span>
<span class="type"><a href="qbitarray.html">QBitArray</a></span>(<span class="number">0</span>)<span class="operator">.</span>isNull(); <span class="comment">// returns false</span>
<span class="type"><a href="qbitarray.html">QBitArray</a></span>(<span class="number">3</span>)<span class="operator">.</span>isNull(); <span class="comment">// returns false</span>
</pre>
<p>Qt makes a distinction between null bit arrays and empty bit
arrays for historical reasons. For most applications, what matters
is whether or not a bit array contains any data, and this can be
determined using <a href="qbitarray.html#isEmpty">isEmpty</a>().</p>
<p><b>See also</b> <a href="qbitarray.html#isEmpty">isEmpty</a>().</p>
<h3 class="fn"><a name="resize" />QBitArray.resize (<i>self</i>, int <i>size</i>)</h3><p>Resizes the bit array to <i>size</i> bits.</p>
<p>If <i>size</i> is greater than the current size, the bit array
is extended to make it <i>size</i> bits with the extra bits added
to the end. The new bits are initialized to false (0).</p>
<p>If <i>size</i> is less than the current size, bits are removed
from the end.</p>
<p><b>See also</b> <a href="qbitarray.html#size">size</a>().</p>
<h3 class="fn"><a name="setBit" />QBitArray.setBit (<i>self</i>, int <i>i</i>)</h3><p>Sets the bit at index position <i>i</i> to 1.</p>
<p><i>i</i> must be a valid index position in the bit array (i.e.,
0 <= <i>i</i> < <a href="qbitarray.html#size">size</a>()).</p>
<p><b>See also</b> <a href="qbitarray.html#clearBit">clearBit</a>()
and <a href="qbitarray.html#toggleBit">toggleBit</a>().</p>
<h3 class="fn"><a name="setBit-2" />QBitArray.setBit (<i>self</i>, int <i>i</i>, bool <i>val</i>)</h3><p>This is an overloaded function.</p>
<p>Sets the bit at index position <i>i</i> to <i>value</i>.</p>
<h3 class="fn"><a name="size" />int QBitArray.size (<i>self</i>)</h3><p>Returns the number of bits stored in the bit array.</p>
<p><b>See also</b> <a href="qbitarray.html#resize">resize</a>().</p>
<h3 class="fn"><a name="swap" />QBitArray.swap (<i>self</i>, <a href="qbitarray.html">QBitArray</a> <i>other</i>)</h3><p>Swaps bit array <i>other</i> with this bit array. This operation
is very fast and never fails.</p>
<p>This function was introduced in Qt 4.8.</p>
<h3 class="fn"><a name="testBit" />bool QBitArray.testBit (<i>self</i>, int <i>i</i>)</h3><p>Returns true if the bit at index position <i>i</i> is 1;
otherwise returns false.</p>
<p><i>i</i> must be a valid index position in the bit array (i.e.,
0 <= <i>i</i> < <a href="qbitarray.html#size">size</a>()).</p>
<p><b>See also</b> <a href="qbitarray.html#setBit">setBit</a>() and
<a href="qbitarray.html#clearBit">clearBit</a>().</p>
<h3 class="fn"><a name="toggleBit" />bool QBitArray.toggleBit (<i>self</i>, int <i>i</i>)</h3><p>Inverts the value of the bit at index position <i>i</i>,
returning the previous value of that bit as either true (if it was
set) or false (if it was unset).</p>
<p>If the previous value was 0, the new value will be 1. If the
previous value was 1, the new value will be 0.</p>
<p><i>i</i> must be a valid index position in the bit array (i.e.,
0 <= <i>i</i> < <a href="qbitarray.html#size">size</a>()).</p>
<p><b>See also</b> <a href="qbitarray.html#setBit">setBit</a>() and
<a href="qbitarray.html#clearBit">clearBit</a>().</p>
<h3 class="fn"><a name="truncate" />QBitArray.truncate (<i>self</i>, int <i>pos</i>)</h3><p>Truncates the bit array at index position <i>pos</i>.</p>
<p>If <i>pos</i> is beyond the end of the array, nothing
happens.</p>
<p><b>See also</b> <a href="qbitarray.html#resize">resize</a>().</p>
<h3 class="fn"><a name="__and__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__and__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><h3 class="fn"><a name="__eq__" />bool QBitArray.__eq__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a> <i>a</i>)</h3><h3 class="fn"><a name="__getitem__" />bool QBitArray.__getitem__ (<i>self</i>, int <i>i</i>)</h3><h3 class="fn"><a name="__hash__" />int QBitArray.__hash__ (<i>self</i>)</h3><h3 class="fn"><a name="__iand__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__iand__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><h3 class="fn"><a name="__invert__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__invert__ (<i>self</i>)</h3><h3 class="fn"><a name="__ior__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__ior__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><h3 class="fn"><a name="__ixor__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__ixor__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><h3 class="fn"><a name="__len__" /> QBitArray.__len__ (<i>self</i>)</h3><h3 class="fn"><a name="__ne__" />bool QBitArray.__ne__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a> <i>a</i>)</h3><h3 class="fn"><a name="__or__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__or__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><h3 class="fn"><a name="__xor__" /><a href="qbitarray.html">QBitArray</a> QBitArray.__xor__ (<i>self</i>, <a href="qbitarray.html">QBitArray</a>)</h3><address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt 4.11.4 for X11</td><td align="center" width="50%">Copyright © <a href="http://www.riverbankcomputing.com">Riverbank Computing Ltd</a> and <a href="http://www.qt.io">The Qt Company</a> 2015</td><td align="right" width="25%">Qt 4.8.7</td></tr></table></div></address></body></html>
|