8#include <QtCore/qcompilerdetection.h>
9#include <QtCore/qcontainerfwd.h>
18
19
46
47
54 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
std::is_pointer_v<T>,
55 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
std::is_integral_v<T>,
67 isPointer [[deprecated(
"Use std::is_pointer instead")]] =
false,
68 isIntegral [[deprecated(
"Use std::is_integral instead")]] =
false,
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95template <
class T,
class...Ts>
98 static_assert(
sizeof...(Ts) > 0);
106 std::is_copy_constructible_v<T> ||
107 std::is_move_constructible_v<T>,
108 "All Ts... are Q_RELOCATABLE_TYPE, but T is neither copy- nor move-constructible, "
109 "so cannot be Q_RELOCATABLE_TYPE. Please mark T as Q_COMPLEX_TYPE manually.");
115template <
class T1,
class T2>
118#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) template
119 <typename ...T> class
120 QTypeInfo<CONTAINER<T...>> \
121{public
124 isPointer [[deprecated("Use std::is_pointer instead")]] = false,
125 isIntegral [[deprecated("Use std::is_integral instead")]] = false,
127 isRelocatable = true,
128 isValueInitializationBitwiseZero = false,
130}
142#undef Q_DECLARE_MOVABLE_CONTAINER
145
146
147
148
149
150
151
160#define Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) class
162{public
165 isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0
) && !std::is_trivial_v<TYPE>,
166 isRelocatable = !isComplex || ((FLAGS) & Q_RELOCATABLE_TYPE) || QtPrivate::qIsRelocatable<TYPE>,
167 isPointer [[deprecated("Use std::is_pointer instead")]] = std::is_pointer_v< TYPE >,
168 isIntegral [[deprecated("Use std::is_integral instead")]] = std::is_integral< TYPE >::value,
169 isValueInitializationBitwiseZero = QtPrivate::qIsValueInitializationBitwiseZero<TYPE>,
171 static_assert(!QTypeInfo<TYPE>::isRelocatable ||
172 std::is_copy_constructible_v<TYPE > ||
173 std::is_move_constructible_v<TYPE >,
174 #TYPE " is neither copy- nor move-constructible, so cannot be Q_RELOCATABLE_TYPE"); \
175}
177#define Q_DECLARE_TYPEINFO(TYPE, FLAGS) template
178 <> Q_DECLARE_TYPEINFO_BODY
182template<
typename T>
class QFlags;
constexpr Q_IMPLICIT QFlags(Enum flags) noexcept
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
Provider parseProvider(const QString &filename)
#define qPrintable(string)
#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