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 never executed: "QBitField";return "QBitField"; never executed: } };return "QBitField"; | 0 | ||||||||||||
109 | - | |||||||||||||
110 | - | |||||||||||||
Switch to Source code | Preprocessed file |