OpenCoverage

qbitfield_p.h #1

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/qml/qml/ftw/qbitfield_p.h
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4class QBitField-
5{-
6public:-
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-
18private:-
19 quint32 bits:31;-
20 quint32 *ownData;-
21 const quint32 *data;-
22};-
23-
24QBitField::QBitField()-
25: bits(0), ownData(nullptr), data(nullptr)-
26{-
27}
never executed: end of block
0
28-
29QBitField::QBitField(const quint32 *bitData, int bitCount)-
30: bits((quint32)bitCount), ownData(nullptr), data(bitData)-
31{-
32}
never executed: end of block
0
33-
34QBitField::QBitField(const QBitField &other)-
35: bits(other.bits), ownData(other.ownData), data(other.data)-
36{-
37 if (ownData
ownDataDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
38 ++(*
never executed: ++(*ownData);
ownData);
never executed: ++(*ownData);
0
39}
never executed: end of block
0
40-
41QBitField::~QBitField()-
42{-
43 if (ownData
ownDataDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
44 if(0 == --(*ownData)
0 == --(*ownData)Description
TRUEnever evaluated
FALSEnever evaluated
) delete [] ownData;
never executed: delete [] ownData;
0
45}
never executed: end of block
0
46-
47QBitField &QBitField::operator=(const QBitField &other)-
48{-
49 if (other.data == data
other.data == dataDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
50 return
never executed: return *this;
*this;
never executed: return *this;
0
51-
52 if (ownData
ownDataDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
53 if(0 == --(*ownData)
0 == --(*ownData)Description
TRUEnever evaluated
FALSEnever evaluated
) delete [] ownData;
never executed: delete [] ownData;
0
54-
55 bits = other.bits;-
56 ownData = other.ownData;-
57 data = other.data;-
58-
59 if (ownData
ownDataDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
60 ++(*
never executed: ++(*ownData);
ownData);
never executed: ++(*ownData);
0
61-
62 return
never executed: return *this;
*this;
never executed: return *this;
0
63}-
64-
65inline quint32 QBitField::size() const-
66{-
67 return
never executed: return bits;
bits;
never executed: return bits;
0
68}-
69-
70QBitField QBitField::united(const QBitField &o)-
71{-
72 if (o.bits == 0
o.bits == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
73 return
never executed: return *this;
*this;
never executed: return *this;
0
74 } else if (bits == 0
bits == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
75 return
never executed: return o;
o;
never executed: return o;
0
76 } else {-
77 int max = (
(bits > o.bits)Description
TRUEnever evaluated
FALSEnever evaluated
bits > o.bits)
(bits > o.bits)Description
TRUEnever evaluated
FALSEnever evaluated
?bits:o.bits;
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
bits > o.bitsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
86 ::memcpy(rvdata, data, length * sizeof(quint32));-
87 for (quint32 ii = 0; ii < (o.bits + quint32(31)) / 32
ii < (o.bits +...nt32(31)) / 32Description
TRUEnever evaluated
FALSEnever evaluated
; ++ii)
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: end of block
else {
0
90 ::memcpy(rvdata, o.data, length * sizeof(quint32));-
91 for (quint32 ii = 0; ii < (bits + quint32(31)) / 32
ii < (bits + quint32(31)) / 32Description
TRUEnever evaluated
FALSEnever evaluated
; ++ii)
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: return rv;
rv;
never executed: return rv;
0
95 }-
96}-
97-
98bool QBitField::testBit(int b) const-
99{-
100 ((b >= 0) ? static_cast<void>(0) : qt_assert("b >= 0", __FILE__, 155));-
101 if ((
(quint32)b < bitsDescription
TRUEnever evaluated
FALSEnever evaluated
quint32)b < bits
(quint32)b < bitsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
102 return
never executed: return data[b / 32] & (1 << (b % 32));
data[b / 32] & (1 << (b % 32));
never executed: return data[b / 32] & (1 << (b % 32));
0
103 } else {-
104 return
never executed: return false;
false;
never executed: return false;
0
105 }-
106}-
107-
108template<> 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 codePreprocessed file

Generated by Squish Coco 4.2.0