18 return providerName +
"_provider"_L1;
27 stream <<
"TraceLoggingValue(" <<
name <<
"[" <<
i <<
"], \"" <<
name <<
"[" <<
i <<
"]\")";
36 stream <<
"TraceLoggingCountedWideString(reinterpret_cast<LPCWSTR>("
37 <<
name <<
".utf16()), static_cast<ULONG>(" <<
name <<
".size()), \""
41 stream <<
"TraceLoggingBinary(" <<
name <<
".constData(), "
42 <<
name <<
".size(), \"" <<
name <<
"\")";
45 stream <<
"TraceLoggingValue(" <<
name <<
".toEncoded().constData(), \"" <<
name <<
"\")";
49 stream <<
"TraceLoggingValue(" <<
name <<
".x(), \"x\"), "
50 <<
"TraceLoggingValue(" <<
name <<
".y(), \"y\"), "
51 <<
"TraceLoggingValue(" <<
name <<
".width(), \"width\"), "
52 <<
"TraceLoggingValue(" <<
name <<
".height(), \"height\")";
56 stream <<
"TraceLoggingValue(" <<
name <<
".width(), \"width\"), "
57 <<
"TraceLoggingValue(" <<
name <<
".height(), \"height\")";
60 stream <<
"TraceLoggingPointer(" <<
name <<
", \"" <<
name <<
"\")";
66 stream <<
"TraceLoggingCountedWideString(reinterpret_cast<LPCWSTR>(" <<
name
67 <<
"Str.utf16()), static_cast<ULONG>(" <<
name <<
"Str.size()), \"" <<
name <<
"\")";
89 <<
"0x" << uuid.
data1 <<
", "
90 <<
"0x" << uuid.
data2 <<
", "
91 <<
"0x" << uuid.
data3 <<
", "
92 <<
"0x" << uuid.
data4[0] <<
", "
93 <<
"0x" << uuid.
data4[1] <<
", "
94 <<
"0x" << uuid.
data4[2] <<
", "
95 <<
"0x" << uuid.
data4[3] <<
", "
96 <<
"0x" << uuid.
data4[4] <<
", "
97 <<
"0x" << uuid.
data4[5] <<
", "
98 <<
"0x" << uuid.
data4[6] <<
", "
99 <<
"0x" << uuid.
data4[7]
115 stream <<
"#ifndef " << guard <<
"\n"
116 <<
"#define " << guard <<
"\n"
118 <<
"#include <qt_windows.h>\n"
119 <<
"#include <TraceLoggingProvider.h>\n"
125 stream <<
"#undef _TlgPragmaUtf8Begin\n"
126 "#undef _TlgPragmaUtf8End\n"
127 "#define _TlgPragmaUtf8Begin\n"
128 "#define _TlgPragmaUtf8End\n";
137 stream <<
"#ifdef TRACEPOINT_DEFINE\n"
138 <<
"/* " << guidString <<
" */\n"
139 <<
"TRACELOGGING_DEFINE_PROVIDER(" << providerV <<
", \""
140 << provider.
name <<
"\", " << guid <<
");\n\n";
142 stream <<
"static inline void registerProvider()\n"
144 <<
" TraceLoggingRegister(" << providerV <<
");\n"
147 stream <<
"static inline void unregisterProvider()\n"
149 <<
" TraceLoggingUnregister(" << providerV <<
");\n"
152 stream <<
"Q_CONSTRUCTOR_FUNCTION(registerProvider)\n"
153 <<
"Q_DESTRUCTOR_FUNCTION(unregisterProvider)\n\n";
156 <<
"TRACELOGGING_DECLARE_PROVIDER(" << providerV <<
");\n"
157 <<
"#endif // TRACEPOINT_DEFINE\n\n";
163 <<
"#include <private/qtrace_p.h>\n";
177 stream <<
"inline void trace_" <<
name <<
"(" << argList <<
")\n"
184 stream <<
" const QString " << field.name <<
"Str = QDebug::toString(" << field.name
188 stream <<
" TraceLoggingWrite(" << provar <<
", \"" <<
name <<
"\"";
199 stream <<
"inline void do_trace_" <<
name <<
"(" << argList <<
")\n"
201 <<
" trace_" <<
name <<
"(" << paramList <<
");\n"
204 stream <<
"inline bool trace_" <<
name <<
"_enabled()\n"
206 <<
" return TraceLoggingProviderEnabled(" << provar <<
", 0, 0);\n"
214 for (
const auto &
v : enumeration.
values) {
216 stream <<
" if (val >= " <<
v.value <<
" && val <= " <<
v.range <<
")\n"
217 <<
" return QStringLiteral(\"" <<
v.name <<
" + \") + QString::number((int)val - " <<
v.value <<
");\n";
220 stream <<
"\n QString ret;\n switch (val) {\n";
222 QList<int> handledValues;
223 for (
const auto &
v : enumeration.
values) {
224 if (
v.range == 0 && !handledValues.contains(
v.value)) {
225 stream <<
" case " <<
v.value <<
": ret = QStringLiteral(\""
227 handledValues.append(
v.value);
231 stream <<
" }\n return ret;\n}\n";
237 stream <<
"{\n QString ret;\n";
238 for (
const auto &
v : flag.
values) {
240 stream <<
" if (val == 0)\n return QStringLiteral(\""
245 QList<int> handledValues;
246 for (
const auto &
v : flag.
values) {
247 if (
v.value != 0 && !handledValues.contains(
v.value)) {
248 stream <<
" if (val & " << (1 << (
v.value - 1))
249 <<
") { if (ret.length()) ret += QLatin1Char(\'|\'); ret += QStringLiteral(\"" <<
v.name <<
"\"); }\n";
250 handledValues.append(
v.value);
253 stream <<
" return ret;\n}\n";
265 <<
"QT_BEGIN_NAMESPACE\n"
266 <<
"namespace QtPrivate {\n";
271 for (
const auto &flag : provider.
flags)
277 stream <<
"} // namespace QtPrivate\n"
278 <<
"QT_END_NAMESPACE\n"
QString fileName() const override
Returns the name set by setFileName() or to the QFile constructors.
bool isEmpty() const noexcept
\macro QT_RESTRICTED_CAST_FROM_ASCII
QByteArray toLocal8Bit() const &
QString toString(StringFormat mode=WithBraces) const
static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData)
static QString providerVar(const QString &providerName)
static void writeEpilogue(QTextStream &stream, const QString &fileName)
void writeEtw(QFile &file, const Provider &provider)
static void writeEnumConverter(QTextStream &stream, const TraceEnum &enumeration)
static void writeFlagConverter(QTextStream &stream, const TraceFlags &flag)
static void writeEtwMacro(QTextStream &stream, const Tracepoint::Field &field)
static void writeWrapper(QTextStream &stream, const Provider &provider, const Tracepoint &tracepoint, const QString &providerName)
static QString createGuid(const QUuid &uuid)
static void writePrologue(QTextStream &stream, const QString &fileName, const Provider &provider)
static void writeTracepoints(QTextStream &stream, const Provider &provider)
void writeCommonPrologue(QTextStream &stream)
QString typeToTypeName(const QString &name)
QString includeGuard(const QString &filename)
QString formatFunctionSignature(const QList< Tracepoint::Argument > &args)
QString formatParameterList(const Provider &provider, const QList< Tracepoint::Argument > &args, const QList< Tracepoint::Field > &fields, ParamType type)
static QString aggregateListValues(int value, const QList< T > &list)
QTextStream & hex(QTextStream &stream)
Calls QTextStream::setIntegerBase(16) on stream and returns stream.
#define tracepoint(provider, name,...)
GLsizei const GLfloat * v
[13]
#define QStringLiteral(str)
QList< TraceEnum > enumerations
QList< TraceFlags > flags
QList< Tracepoint > tracepoints
QList< EnumValue > values
QList< FlagValue > values