Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
helpers.cpp
Go to the documentation of this file.
1
// Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Rafael Roquetto <rafael.roquetto@kdab.com>
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4
#
include
"helpers.h"
5
#
include
<
qdebug
.
h
>
6
7
using
namespace
Qt::StringLiterals;
8
9
void
writeCommonPrologue
(QTextStream &stream)
10
{
11
stream << R"CPP(
12
#ifndef Q_TRACEPOINT
13
#error "Q_TRACEPOINT not set for the module, Q_TRACE not enabled."
14
#endif
15
)CPP";
16
}
17
18
QString
typeToTypeName
(
const
QString &name)
19
{
20
QString ret = name;
21
return
ret.replace(
QStringLiteral
(
"::"
),
QStringLiteral
(
"_"
));
22
}
23
24
QString
includeGuard
(
const
QString &filename)
25
{
26
QString guard = filename.toUpper();
27
28
for
(
int
i = 0; i < guard.size(); ++i) {
29
if
(!guard.at(i).isLetterOrNumber())
30
guard[i] = u'_';
31
}
32
33
return
guard;
34
}
35
36
template
<
typename
T>
37
static
QString joinArguments(
const
QList
<Tracepoint::Argument> &args, T joinFunction)
38
{
39
QString ret;
40
bool
first =
true
;
41
42
for
(
const
Tracepoint::Argument &arg : args) {
43
if
(!first)
44
ret +=
", "_L1
;
45
46
ret += joinFunction(arg);
47
48
first =
false
;
49
}
50
51
return
ret;
52
}
53
54
QString
formatFunctionSignature
(
const
QList
<Tracepoint::Argument> &args)
55
{
56
return
joinArguments(args, [](
const
Tracepoint::Argument &arg) {
57
return
QStringLiteral
(
"%1 %2"
).arg(arg.type).arg(arg.name);
58
});
59
}
60
61
QString
formatParameterList
(
const
Provider
&provider,
const
QList
<Tracepoint::Argument> &args,
const
QList
<Tracepoint::Field> &fields, ParamType type)
62
{
63
if
(type == LTTNG) {
64
QString ret;
65
66
for
(
int
i = 0; i < args.size(); i++) {
67
const
Tracepoint::Argument &arg = args[i];
68
const
Tracepoint::Field &field = fields[i];
69
if
(field.backendType == Tracepoint::Field::FlagType)
70
ret +=
", trace_convert_"_L1
+ typeToTypeName(arg.type) +
"("_L1
+ arg.name +
")"_L1
;
71
else
72
ret +=
", "_L1
+ arg.name;
73
}
74
return
ret;
75
}
76
77
auto
findEnumeration = [](
const
QList
<
TraceEnum
> &enums,
const
QString &name) {
78
for
(
const
auto
&e : enums) {
79
if
(e.name == name)
80
return
e;
81
}
82
return
TraceEnum();
83
};
84
85
if
(type == CTF) {
86
QString ret;
87
88
for
(
int
i = 0; i < args.size(); i++) {
89
const
Tracepoint::Argument &arg = args[i];
90
const
Tracepoint::Field &field = fields[i];
91
if
(arg.arrayLen > 1) {
92
ret +=
", trace::toByteArrayFromArray("_L1
+ arg.name +
", "_L1
+ QString::number(arg.arrayLen) +
") "_L1
;
93
}
else
if
(field.backendType == Tracepoint::Field::EnumeratedType) {
94
const
TraceEnum
&e = findEnumeration(provider.enumerations, arg.type);
95
QString integerType;
96
if
(e
.
valueSize
== 8)
97
integerType =
QStringLiteral
(
"quint8"
);
98
else
if
(e
.
valueSize
== 16)
99
integerType =
QStringLiteral
(
"quint16"
);
100
else
101
integerType =
QStringLiteral
(
"quint32"
);
102
ret +=
", trace::toByteArrayFromEnum<"_L1
+ integerType +
">("_L1
+ arg.name +
")"_L1
;
103
}
else
if
(field.backendType == Tracepoint::Field::FlagType) {
104
ret +=
", trace::toByteArrayFromFlags("_L1
+ arg.name +
")"_L1
;
105
}
else
if
(field.backendType == Tracepoint::Field::String) {
106
ret +=
", trace::toByteArrayFromCString("_L1
+ arg.name +
")"_L1
;
107
}
else
{
108
ret +=
", "_L1
+ arg.name;
109
}
110
}
111
return
ret;
112
}
113
114
return
joinArguments(args, [](
const
Tracepoint::Argument &arg) {
return
arg.name; });
115
}
QList
Definition
qlist.h:82
writeCommonPrologue
void writeCommonPrologue(QTextStream &stream)
Definition
helpers.cpp:9
typeToTypeName
QString typeToTypeName(const QString &type)
Definition
helpers.cpp:14
includeGuard
QString includeGuard(const QString &filename)
Definition
helpers.cpp:20
formatFunctionSignature
QString formatFunctionSignature(const QList< Tracepoint::Argument > &args)
Definition
helpers.cpp:50
formatParameterList
QString formatParameterList(const Provider &provider, const QList< Tracepoint::Argument > &args, const QList< Tracepoint::Field > &fields, ParamType type)
Definition
helpers.cpp:57
QStringLiteral
#define QStringLiteral(str)
Definition
qstring.h:1865
Provider
Definition
provider.h:82
TraceEnum
Definition
provider.h:55
TraceEnum::valueSize
int valueSize
Definition
provider.h:63
qtbase
src
tools
tracegen
helpers.cpp
Generated on
for Qt by
1.18.0