10bool operator==(
const QQmlProfilerEvent &event1,
const QQmlProfilerEvent &event2)
12 if (event1.timestamp() != event2.timestamp() || event1.typeIndex() != event2.typeIndex())
16 return event1.numbers<QVarLengthArray<qint64>>() == event2.numbers<QVarLengthArray<qint64>>();
80 event.m_timestamp = readNumber<qint64>(stream, (type >> TimestampOffset) & TypeMask);
81 event.m_typeIndex = readNumber<qint32>(stream, (type >> TypeIndexOffset) & TypeMask);
82 event.m_dataLength = readNumber<quint16>(stream, (type >> DataLengthOffset) & TypeMask);
84 uint bytesPerNumber = 1 << ((type >> DataOffset) & TypeMask);
86 if (event.m_dataLength * bytesPerNumber >
sizeof(event.m_data)) {
87 event.m_dataType =
static_cast<QQmlProfilerEvent::Type>((bytesPerNumber * 8)
88 | QQmlProfilerEvent::External);
89 event.m_data.external = malloc(event.m_dataLength * bytesPerNumber);
91 event.m_dataType =
static_cast<QQmlProfilerEvent::Type>(bytesPerNumber * 8);
94 switch (event.m_dataType) {
95 case QQmlProfilerEvent::Inline8Bit:
96 readNumbers<qint8>(stream, event.m_data.internal8bit, event.m_dataLength);
98 case QQmlProfilerEvent::External8Bit:
99 readNumbers<qint8>(stream,
static_cast<qint8 *>(event.m_data.external),
102 case QQmlProfilerEvent::Inline16Bit:
103 readNumbers<qint16>(stream, event.m_data.internal16bit, event.m_dataLength);
105 case QQmlProfilerEvent::External16Bit:
106 readNumbers<qint16>(stream,
static_cast<qint16 *>(event.m_data.external),
109 case QQmlProfilerEvent::Inline32Bit:
110 readNumbers<qint32>(stream, event.m_data.internal32bit, event.m_dataLength);
112 case QQmlProfilerEvent::External32Bit:
113 readNumbers<qint32>(stream,
static_cast<qint32 *>(event.m_data.external),
116 case QQmlProfilerEvent::Inline64Bit:
117 readNumbers<qint64>(stream, event.m_data.internal64bit, event.m_dataLength);
119 case QQmlProfilerEvent::External64Bit:
120 readNumbers<qint64>(stream,
static_cast<qint64 *>(event.m_data.external),
132 quint16 origBitsPerNumber)
134 qint8 type = OneByte;
136 for (quint16 i = 0; i < length;) {
137 if ((1 << type) == origBitsPerNumber / 8)
141 ok = (event.number<qint8>(i) == event.number<qint64>(i));
144 ok = (event.number<qint16>(i) == event.number<qint64>(i));
147 ok = (event.number<qint32>(i) == event.number<qint64>(i));
206 qint8 type = minimumType(event.m_timestamp);
209 type |= minimumType(event, event.m_dataLength, event.m_dataType) <<
DataOffset;
212 writeNumber(stream, event.m_timestamp, (type >> TimestampOffset) & TypeMask);
213 writeNumber(stream, event.m_typeIndex, (type >> TypeIndexOffset) & TypeMask);
214 writeNumber(stream, event.m_dataLength, (type >> DataLengthOffset) & TypeMask);
216 switch ((type >> DataOffset) & TypeMask) {
218 writeNumbers<qint8>(stream, event, event.m_dataLength);
221 writeNumbers<qint16>(stream, event, event.m_dataLength);
224 writeNumbers<qint32>(stream, event, event.m_dataLength);
227 writeNumbers<qint64>(stream, event, event.m_dataLength);