24 const char *newline =
nullptr;
25 for (
int i = 0;
i < arrayLen;
i++) {
33 stream <<
"ctf_array(" <<paramType <<
", "
34 <<
name <<
", " <<
name <<
", " << arrayLen <<
")";
41 stream <<
"ctf_sequence(" << paramType
43 <<
", unsigned int, " << seqLen <<
")";
47 stream <<
"ctf_integer(" << paramType <<
", " <<
name <<
", " <<
name <<
")";
51 stream <<
"ctf_integer_hex(" << paramType <<
", " <<
name <<
", " <<
name <<
")";
54 stream <<
"ctf_float(" << paramType <<
", " <<
name <<
", " <<
name <<
")";
60 stream <<
"ctf_string(" <<
name <<
", " <<
name <<
".toUtf8().constData())";
63 stream <<
"ctf_sequence(const char, " <<
name <<
", "
64 <<
name <<
".constData(), unsigned int, " <<
name <<
".size())";
67 stream <<
"ctf_string(" <<
name <<
", " <<
name <<
".toString().toUtf8().constData())";
70 stream <<
"ctf_integer(int, QRect_" <<
name <<
"_x, " <<
name <<
".x()) "
71 <<
"ctf_integer(int, QRect_" <<
name <<
"_y, " <<
name <<
".y()) "
72 <<
"ctf_integer(int, QRect_" <<
name <<
"_width, " <<
name <<
".width()) "
73 <<
"ctf_integer(int, QRect_" <<
name <<
"_height, " <<
name <<
".height()) ";
76 stream <<
"ctf_float(double, QSizeF_" <<
name <<
"_width, " <<
name <<
".width()) "
77 <<
"ctf_float(double, QSizeF_" <<
name <<
"_height, " <<
name <<
".height()) ";
80 stream <<
"ctf_float(double, QRectF_" <<
name <<
"_x, " <<
name <<
".x()) "
81 <<
"ctf_float(double, QRectF_" <<
name <<
"_y, " <<
name <<
".y()) "
82 <<
"ctf_float(double, QRectF_" <<
name <<
"_width, " <<
name <<
".width()) "
83 <<
"ctf_float(double, QRectF_" <<
name <<
"_height, " <<
name <<
".height()) ";
86 stream <<
"ctf_integer(int, QSize_" <<
name <<
"_width, " <<
name <<
".width()) "
87 <<
"ctf_integer(int, QSize_" <<
name <<
"_height, " <<
name <<
".height()) ";
93 stream <<
"ctf_sequence(const char , " <<
name <<
", "
94 <<
name <<
".constData(), unsigned int, " <<
name <<
".size())";
107 stream <<
"#undef TRACEPOINT_PROVIDER\n";
108 stream <<
"#define TRACEPOINT_PROVIDER " << provider.
name <<
"\n";
112 stream <<
"#if !defined(" << guard <<
")\n";
122 stream <<
"#if !defined(" << guard <<
") || defined(TRACEPOINT_HEADER_MULTI_READ)\n";
124 stream <<
"#define " << guard <<
"\n\n"
125 <<
"#undef TRACEPOINT_INCLUDE\n"
126 <<
"#define TRACEPOINT_INCLUDE \"" <<
fileName <<
"\"\n\n";
128 stream <<
"#include <lttng/tracepoint.h>\n\n";
131 stream <<
"#if !defined(" << namespaceGuard <<
")\n"
132 <<
"#define " << namespaceGuard <<
"\n"
133 <<
"QT_USE_NAMESPACE\n"
134 <<
"#endif // " << namespaceGuard <<
"\n\n";
141 <<
"#include <lttng/tracepoint-event.h>\n"
142 <<
"#include <private/qtrace_p.h>\n";
159 <<
"QT_BEGIN_NAMESPACE\n"
160 <<
"namespace QtPrivate {\n";
162 stream <<
"inline void trace_" <<
name <<
"(" << argList <<
")\n"
164 <<
" tracepoint(" << provider.
name <<
", " <<
name << paramList <<
");\n"
167 stream <<
"inline void do_trace_" <<
name <<
"(" << argList <<
")\n"
169 <<
" do_tracepoint(" << provider.
name <<
", " <<
name << paramList <<
");\n"
172 stream <<
"inline bool trace_" <<
name <<
"_enabled()\n"
174 <<
" return tracepoint_enabled(" << provider.
name <<
", " <<
name <<
");\n"
177 stream <<
"} // namespace QtPrivate\n"
178 <<
"QT_END_NAMESPACE\n"
185 stream <<
"TRACEPOINT_EVENT(\n"
186 <<
" " << providerName <<
",\n"
190 const char *comma =
nullptr;
196 stream << comma <<
"QByteArray, " <<
arg.name;
205 const char *newline =
nullptr;
219 stream <<
"TRACEPOINT_ENUM(\n"
220 <<
" " << provider.
name <<
",\n"
222 <<
" TP_ENUM_VALUES(\n";
224 for (
const auto &
v :
e.values) {
226 stream <<
" ctf_enum_range(\"" <<
v.name <<
"\", " <<
v.
value <<
", " <<
v.range <<
")\n";
227 }
else if (!handledValues.
contains(
v.value)) {
238 for (
const auto &
f : provider.
flags) {
239 stream <<
"TRACEPOINT_ENUM(\n"
240 <<
" " << provider.
name <<
",\n"
242 <<
" TP_ENUM_VALUES(\n";
244 for (
const auto &
v :
f.values) {
258 stream <<
"QT_BEGIN_NAMESPACE\n";
259 stream <<
"namespace QtPrivate {\n";
260 for (
const auto &
f : provider.
flags) {
263 stream <<
" QByteArray ret;\n";
264 stream <<
" if (val == 0) { ret.append((char)0); return ret; }\n";
266 for (
const auto &
v :
f.values) {
269 stream <<
" if (val & " << (1 << (
v.value - 1)) <<
") { ret.append((char)" <<
v.value <<
"); };\n";
271 stream <<
" return ret;\n";
275 stream <<
"} // namespace QtPrivate\n"
276 <<
"QT_END_NAMESPACE\n\n"
\inmodule QtCore \reentrant
QString fileName() const
Returns the name of the file, excluding the path.
QString fileName() const override
Returns the name set by setFileName() or to the QFile constructors.
T value(qsizetype i) const
void append(parameter_type t)
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString number(int, int base=10)
This is an overloaded member function, provided for convenience. It differs from the above function o...
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)
static void writeEpilogue(QTextStream &stream, const QString &fileName)
void writeLttng(QFile &file, const Provider &provider)
static void writeEnums(QTextStream &stream, const Provider &provider)
static void writeTracepoint(QTextStream &stream, const Provider &provider, const Tracepoint &tracepoint, const QString &providerName)
static void writeWrapper(QTextStream &stream, const Tracepoint &tracepoint, const Provider &provider)
static void writePrologue(QTextStream &stream, const QString &fileName, const Provider &provider)
static void writeCtfMacro(QTextStream &stream, const Provider &provider, const Tracepoint::Field &field)
static void writeFlags(QTextStream &stream, const Provider &provider)
static void writeTracepoints(QTextStream &stream, const Provider &provider)
void panic(const char *fmt,...)
#define tracepoint(provider, name,...)
GLsizei const GLfloat * v
[13]
#define qPrintable(string)
#define QStringLiteral(str)
QList< TraceEnum > enumerations
QList< TraceFlags > flags
QList< Tracepoint > tracepoints
bool contains(const AT &t) const noexcept