<?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.10.3 for X11</td><td align="center" width="50%">Copyright © <a href="http://www.riverbankcomputing.com">Riverbank Computing Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2012</td><td align="right" width="25%">Qt 4.8.5</td></tr></table></div></address></body></html>