9#include <QtCore/qcompilerdetection.h>
10#include <QtCore/qcontainerfwd.h>
19
20
59
60
67 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
std::is_pointer_v<T>,
68 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
std::is_integral_v<T>,
80 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
false,
81 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
false,
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108template <
class T,
class...Ts>
111 static_assert(
sizeof...(Ts) > 0);
115 [[deprecated(
"Use std::is_pointer instead")]]
static constexpr bool isPointer =
false;
116 [[deprecated(
"Use std::is_integral instead")]]
static constexpr bool isIntegral =
false;
119 std::is_copy_constructible_v<T> ||
120 std::is_move_constructible_v<T>,
121 "All Ts... are Q_RELOCATABLE_TYPE, but T is neither copy- nor move-constructible, "
122 "so cannot be Q_RELOCATABLE_TYPE. Please mark T as Q_COMPLEX_TYPE manually.");
128template <
class T1,
class T2>
131#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) template
132 <typename ...T> class
133 QTypeInfo<CONTAINER<T...>> \
134{public
137 isPointer [[deprecated("Use std::is_pointer instead")]] = false,
138 isIntegral [[deprecated("Use std::is_integral instead")]] = false,
140 isRelocatable = true,
141 isValueInitializationBitwiseZero = false,
143}
155#undef Q_DECLARE_MOVABLE_CONTAINER
158
159
160
161
162
163
164
173#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) class
175{public
178 isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0
) && QtPrivate::qIsComplex<TYPE>,
179 isRelocatable = !isComplex || ((FLAGS) & Q_RELOCATABLE_TYPE) || QtPrivate::qIsRelocatable<TYPE>,
180 isPointer [[deprecated("Use std::is_pointer instead")]] = std::is_pointer_v< TYPE >,
181 isIntegral [[deprecated("Use std::is_integral instead")]] = std::is_integral< TYPE >::value,
182 isValueInitializationBitwiseZero = QtPrivate::qIsValueInitializationBitwiseZero<TYPE>,
184 static_assert(!QTypeInfo<TYPE>::isRelocatable ||
185 std::is_copy_constructible_v<TYPE > ||
186 std::is_move_constructible_v<TYPE >,
187 #TYPE " is neither copy- nor move-constructible, so cannot be Q_RELOCATABLE_TYPE"); \
188}
190#define Q_DECLARE_TYPEINFO(TYPE, FLAGS) template
191 <> Q_DECLARE_TYPEINFO_BODY
195template<
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 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