diff options
| author | Liang Qi <liang.qi@qt.io> | 2018-02-06 12:38:51 +0100 |
|---|---|---|
| committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-02-10 15:55:52 +0100 |
| commit | 32b506d1db1f8cee748a27b548ba8208f2928058 (patch) | |
| tree | 2d5b23baafe22ccc3518719f8f5d19bb846b2b61 /src/corelib/tools/qbitarray.cpp | |
| parent | 2cb1db64370989fffeec313c196fe573c479e6aa (diff) | |
| parent | c0948d508e7179e2e23c893ba6152c40400de060 (diff) | |
Merge remote-tracking branch 'origin/dev' into 5.11
Conflicts:
src/corelib/tools/qvarlengtharray.qdoc
src/corelib/tools/qvector.qdoc
Resolved documentation changes in favor of 017569f702b6dd0,
which keeps the move overloads along with its const-ref sibling.
Change-Id: I0835b0b3211a418e5e50defc4cf315f0964fab79
Diffstat (limited to 'src/corelib/tools/qbitarray.cpp')
| -rw-r--r-- | src/corelib/tools/qbitarray.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp index 12e4687b3c8..f68a807203b 100644 --- a/src/corelib/tools/qbitarray.cpp +++ b/src/corelib/tools/qbitarray.cpp @@ -300,6 +300,46 @@ void QBitArray::fill(bool value, int begin, int end) setBit(begin++, value); } +/*! + \fn const char *QBitArray::bits() const + \since 5.11 + + Returns a pointer to a dense bit array for this QBitArray. Bits are counted + upwards from the least significant bit in each byte. The the number of bits + relevant in the last byte is given by \c{size() % 8}. + + \sa fromBits(), size() + */ + +/*! + \since 5.11 + + Creates a QBitArray with the dense bit array located at \a data, with \a + len bits. The byte array at \a data must be at least \a size / 8 (rounded up) + bytes long. + + If \a size is not a multiple of 8, this function will include the lowest + \a size % 8 bits from the last byte in \a data. + + \sa bits() + */ +QBitArray QBitArray::fromBits(const char *data, qsizetype size) +{ + QBitArray result; + qsizetype nbytes = (size + 7) / 8; + + result.d = QByteArray(nbytes + 1, Qt::Uninitialized); + char *bits = result.d.data(); + memcpy(bits + 1, data, nbytes); + + // clear any unused bits from the last byte + if (size & 7) + bits[nbytes] &= 0xffU >> (size & 7); + + *bits = result.d.size() * 8 - size; + return result; +} + /*! \fn bool QBitArray::isDetached() const \internal |
