8#include <QtCore/qcompilerdetection.h>
9#include <QtCore/qcontainerfwd.h>
18
19
58
59
66 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
std::is_pointer_v<T>,
67 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
std::is_integral_v<T>,
79 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
false,
80 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
false,
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107template <
class T,
class...Ts>
110 static_assert(
sizeof...(Ts) > 0);
118 std::is_copy_constructible_v<T> ||
119 std::is_move_constructible_v<T>,
120 "All Ts... are Q_RELOCATABLE_TYPE, but T is neither copy- nor move-constructible, "
121 "so cannot be Q_RELOCATABLE_TYPE. Please mark T as Q_COMPLEX_TYPE manually.");
127template <
class T1,
class T2>
130#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) template
131 <typename ...T> class
132 QTypeInfo<CONTAINER<T...>> \
133{public
136 isPointer [[deprecated("Use std::is_pointer instead")]] = false,
137 isIntegral [[deprecated("Use std::is_integral instead")]] = false,
139 isRelocatable = true,
140 isValueInitializationBitwiseZero = false,
142}
154#undef Q_DECLARE_MOVABLE_CONTAINER
157
158
159
160
161
162
163
172#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) class
174{public
177 isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0
) && QtPrivate::qIsComplex<TYPE>,
178 isRelocatable = !isComplex || ((FLAGS) & Q_RELOCATABLE_TYPE) || QtPrivate::qIsRelocatable<TYPE>,
179 isPointer [[deprecated("Use std::is_pointer instead")]] = std::is_pointer_v< TYPE >,
180 isIntegral [[deprecated("Use std::is_integral instead")]] = std::is_integral< TYPE >::value,
181 isValueInitializationBitwiseZero = QtPrivate::qIsValueInitializationBitwiseZero<TYPE>,
183 static_assert(!QTypeInfo<TYPE>::isRelocatable ||
184 std::is_copy_constructible_v<TYPE > ||
185 std::is_move_constructible_v<TYPE >,
186 #TYPE " is neither copy- nor move-constructible, so cannot be Q_RELOCATABLE_TYPE"); \
187}
189#define Q_DECLARE_TYPEINFO(TYPE, FLAGS) template
190 <> Q_DECLARE_TYPEINFO_BODY
194template<
typename T>
class QFlags;
static constexpr bool isValueInitializationBitwiseZero
static constexpr bool isIntegral
static constexpr bool isPointer
static constexpr bool isComplex
static constexpr bool isRelocatable
@ isValueInitializationBitwiseZero
@ isValueInitializationBitwiseZero
static void writeMetadataGenerators(QTextStream &stream)
static void writeEpilogue(QTextStream &stream, const QString &fileName)
static void writeWrapper(QTextStream &stream, const Tracepoint &tracepoint, const Provider &provider)
static void writePrologue(QTextStream &stream, const QString &fileName, const Provider &provider)
void writeCtf(QFile &device, const Provider &p)
QT_FORWARD_DECLARE_CLASS(QTextStream)
constexpr bool qIsRelocatable
constexpr bool qIsValueInitializationBitwiseZero
constexpr bool qIsComplex
Provider parseProvider(const QString &filename)
#define qPrintable(string)
#define QStringLiteral(str)
#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
QList< TraceEnum > enumerations
QList< TraceFlags > flags
QList< Tracepoint > tracepoints
QList< EnumValue > values
QList< FlagValue > values