| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/qml/ftw/qbitfield_p.h |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | class QBitField | - | ||||||||||||
| 5 | { | - | ||||||||||||
| 6 | public: | - | ||||||||||||
| 7 | inline QBitField(); | - | ||||||||||||
| 8 | inline QBitField(const quint32 *, int bits); | - | ||||||||||||
| 9 | inline QBitField(const QBitField &); | - | ||||||||||||
| 10 | inline ~QBitField(); | - | ||||||||||||
| 11 | - | |||||||||||||
| 12 | inline QBitField &operator=(const QBitField &); | - | ||||||||||||
| 13 | - | |||||||||||||
| 14 | inline quint32 size() const; | - | ||||||||||||
| 15 | inline QBitField united(const QBitField &); | - | ||||||||||||
| 16 | inline bool testBit(int) const; | - | ||||||||||||
| 17 | - | |||||||||||||
| 18 | private: | - | ||||||||||||
| 19 | quint32 bits:31; | - | ||||||||||||
| 20 | quint32 *ownData; | - | ||||||||||||
| 21 | const quint32 *data; | - | ||||||||||||
| 22 | }; | - | ||||||||||||
| 23 | - | |||||||||||||
| 24 | QBitField::QBitField() | - | ||||||||||||
| 25 | : bits(0), ownData(nullptr), data(nullptr) | - | ||||||||||||
| 26 | { | - | ||||||||||||
| 27 | } never executed: end of block | 0 | ||||||||||||
| 28 | - | |||||||||||||
| 29 | QBitField::QBitField(const quint32 *bitData, int bitCount) | - | ||||||||||||
| 30 | : bits((quint32)bitCount), ownData(nullptr), data(bitData) | - | ||||||||||||
| 31 | { | - | ||||||||||||
| 32 | } never executed: end of block | 0 | ||||||||||||
| 33 | - | |||||||||||||
| 34 | QBitField::QBitField(const QBitField &other) | - | ||||||||||||
| 35 | : bits(other.bits), ownData(other.ownData), data(other.data) | - | ||||||||||||
| 36 | { | - | ||||||||||||
| 37 | if (ownData
| 0 | ||||||||||||
| 38 | ++(* never executed: ownData);++(*ownData);never executed: ++(*ownData); | 0 | ||||||||||||
| 39 | } never executed: end of block | 0 | ||||||||||||
| 40 | - | |||||||||||||
| 41 | QBitField::~QBitField() | - | ||||||||||||
| 42 | { | - | ||||||||||||
| 43 | if (ownData
| 0 | ||||||||||||
| 44 | if(0 == --(*ownData)
never executed: delete [] ownData; | 0 | ||||||||||||
| 45 | } never executed: end of block | 0 | ||||||||||||
| 46 | - | |||||||||||||
| 47 | QBitField &QBitField::operator=(const QBitField &other) | - | ||||||||||||
| 48 | { | - | ||||||||||||
| 49 | if (other.data == data
| 0 | ||||||||||||
| 50 | return never executed: *this;return *this;never executed: return *this; | 0 | ||||||||||||
| 51 | - | |||||||||||||
| 52 | if (ownData
| 0 | ||||||||||||
| 53 | if(0 == --(*ownData)
never executed: delete [] ownData; | 0 | ||||||||||||
| 54 | - | |||||||||||||
| 55 | bits = other.bits; | - | ||||||||||||
| 56 | ownData = other.ownData; | - | ||||||||||||
| 57 | data = other.data; | - | ||||||||||||
| 58 | - | |||||||||||||
| 59 | if (ownData
| 0 | ||||||||||||
| 60 | ++(* never executed: ownData);++(*ownData);never executed: ++(*ownData); | 0 | ||||||||||||
| 61 | - | |||||||||||||
| 62 | return never executed: *this;return *this;never executed: return *this; | 0 | ||||||||||||
| 63 | } | - | ||||||||||||
| 64 | - | |||||||||||||
| 65 | inline quint32 QBitField::size() const | - | ||||||||||||
| 66 | { | - | ||||||||||||
| 67 | return never executed: bits;return bits;never executed: return bits; | 0 | ||||||||||||
| 68 | } | - | ||||||||||||
| 69 | - | |||||||||||||
| 70 | QBitField QBitField::united(const QBitField &o) | - | ||||||||||||
| 71 | { | - | ||||||||||||
| 72 | if (o.bits == 0
| 0 | ||||||||||||
| 73 | return never executed: *this;return *this;never executed: return *this; | 0 | ||||||||||||
| 74 | } else if (bits == 0
| 0 | ||||||||||||
| 75 | return never executed: o;return o;never executed: return o; | 0 | ||||||||||||
| 76 | } else { | - | ||||||||||||
| 77 | int max = (
| 0 | ||||||||||||
| 78 | int length = (max + 31) / 32; | - | ||||||||||||
| 79 | QBitField rv; | - | ||||||||||||
| 80 | rv.bits = max; | - | ||||||||||||
| 81 | rv.ownData = new quint32[length + 1]; | - | ||||||||||||
| 82 | *(rv.ownData) = 1; | - | ||||||||||||
| 83 | quint32 *rvdata; | - | ||||||||||||
| 84 | rv.data = rvdata = rv.ownData + 1; | - | ||||||||||||
| 85 | if (bits > o.bits
| 0 | ||||||||||||
| 86 | ::memcpy(rvdata, data, length * sizeof(quint32)); | - | ||||||||||||
| 87 | for (quint32 ii = 0; ii < (o.bits + quint32(31)) / 32
| 0 | ||||||||||||
| 88 | ( never executed: rvdata)[ii] |= o.data[ii];(rvdata)[ii] |= o.data[ii];never executed: (rvdata)[ii] |= o.data[ii]; | 0 | ||||||||||||
| 89 | } never executed: else {end of block | 0 | ||||||||||||
| 90 | ::memcpy(rvdata, o.data, length * sizeof(quint32)); | - | ||||||||||||
| 91 | for (quint32 ii = 0; ii < (bits + quint32(31)) / 32
| 0 | ||||||||||||
| 92 | ( never executed: rvdata)[ii] |= data[ii];(rvdata)[ii] |= data[ii];never executed: (rvdata)[ii] |= data[ii]; | 0 | ||||||||||||
| 93 | } never executed: end of block | 0 | ||||||||||||
| 94 | return never executed: rv;return rv;never executed: return rv; | 0 | ||||||||||||
| 95 | } | - | ||||||||||||
| 96 | } | - | ||||||||||||
| 97 | - | |||||||||||||
| 98 | bool QBitField::testBit(int b) const | - | ||||||||||||
| 99 | { | - | ||||||||||||
| 100 | ((b >= 0) ? static_cast<void>(0) : qt_assert("b >= 0", __FILE__, 155)); | - | ||||||||||||
| 101 | if ((
| 0 | ||||||||||||
| 102 | return never executed: data[b / 32] & (1 << (b % 32));return data[b / 32] & (1 << (b % 32));never executed: return data[b / 32] & (1 << (b % 32)); | 0 | ||||||||||||
| 103 | } else { | - | ||||||||||||
| 104 | return never executed: false;return false;never executed: return false; | 0 | ||||||||||||
| 105 | } | - | ||||||||||||
| 106 | } | - | ||||||||||||
| 107 | - | |||||||||||||
| 108 | template<> class QTypeInfo<QBitField > { public: enum { isSpecialized = true, isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QBitField)>sizeof(void*)), isPointer = false, isIntegral = std::is_integral< QBitField >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QBitField) }; static inline const char *name() { return "QBitField"; } }; | - | ||||||||||||
| 109 | - | |||||||||||||
| 110 | - | |||||||||||||
| Switch to Source code | Preprocessed file |