9#include <QtCore/qcompilerdetection.h>
10#include <QtCore/qcontainerfwd.h>
19
20
61
62
69 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
std::is_pointer_v<T>,
70 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
std::is_integral_v<T>,
82 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
false,
83 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
false,
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110template <
class T,
class...Ts>
113 static_assert(
sizeof...(Ts) > 0);
117 [[deprecated(
"Use std::is_pointer instead")]]
static constexpr bool isPointer =
false;
118 [[deprecated(
"Use std::is_integral instead")]]
static constexpr bool isIntegral =
false;
121 std::is_copy_constructible_v<T> ||
122 std::is_move_constructible_v<T>,
123 "All Ts... are Q_RELOCATABLE_TYPE, but T is neither copy- nor move-constructible, "
124 "so cannot be Q_RELOCATABLE_TYPE. Please mark T as Q_COMPLEX_TYPE manually.");
130template <
class T1,
class T2>
133#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) namespace
135 <typename ...T> constexpr bool qIsQtRelocatableContainer<CONTAINER<T...>> = true; \
136}template
137 <typename ...T> class
138 QTypeInfo<CONTAINER<T...>> \
139{public
142 isPointer [[deprecated("Use std::is_pointer instead")]] = false,
143 isIntegral [[deprecated("Use std::is_integral instead")]] = false,
145 isRelocatable = true,
146 isValueInitializationBitwiseZero = false,
148}
162#undef Q_DECLARE_MOVABLE_CONTAINER
165
166
167
168
169
170
171
180#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) class
182{public
185 isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0
) && QtPrivate::qIsComplex<TYPE>,
186 isRelocatable = !isComplex || ((FLAGS) & Q_RELOCATABLE_TYPE) || QtPrivate::qIsRelocatable<TYPE>,
187 isPointer [[deprecated("Use std::is_pointer instead")]] = std::is_pointer_v< TYPE >,
188 isIntegral [[deprecated("Use std::is_integral instead")]] = std::is_integral< TYPE >::value,
189 isValueInitializationBitwiseZero = QtPrivate::qIsValueInitializationBitwiseZero<TYPE>,
191 static_assert(!QTypeInfo<TYPE>::isRelocatable ||
192 std::is_copy_constructible_v<TYPE > ||
193 std::is_move_constructible_v<TYPE >,
194 #TYPE " is neither copy- nor move-constructible, so cannot be Q_RELOCATABLE_TYPE"); \
195}
197#define Q_DECLARE_TYPEINFO(TYPE, FLAGS) template
198 <> Q_DECLARE_TYPEINFO_BODY
202template<
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)
Combined button and popup list for selecting options.
constexpr bool qIsRelocatable
constexpr bool qIsQtRelocatableContainer
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