summaryrefslogtreecommitdiffstats
path: root/src/tools/tracegen/helpers.cpp
diff options
context:
space:
mode:
authorAntti Määttä <[email protected]>2022-12-13 09:01:13 +0200
committerAntti Määttä <[email protected]>2023-01-13 12:43:45 +0200
commita2bcb7d8adb7bb59087cd2df2396539e2baf5b7d (patch)
treeff381fc1bfb1bae9a3982a9c9fd2ef98387a98c6 /src/tools/tracegen/helpers.cpp
parentbab65d70dcaf08e85113d5203056a4b8dd2c1fa7 (diff)
Add metadata support to tracegen and tracepointgen tools
Adds ability to add textual metadata for enumerations and flags to the traces so that they provide more information to the user instead of just numbers. Implement these for both existing backends. Task-number: QTBUG-106399 Pick-to: 6.5 Change-Id: Ibab00dd370d019891cf9ad6e65e6f9d868e32dce Reviewed-by: Tomi Korpipää <[email protected]>
Diffstat (limited to 'src/tools/tracegen/helpers.cpp')
-rw-r--r--src/tools/tracegen/helpers.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/tools/tracegen/helpers.cpp b/src/tools/tracegen/helpers.cpp
index de523e74a67..c2059835a38 100644
--- a/src/tools/tracegen/helpers.cpp
+++ b/src/tools/tracegen/helpers.cpp
@@ -6,6 +6,12 @@
using namespace Qt::StringLiterals;
+QString typeToName(const QString &name)
+{
+ QString ret = name;
+ return ret.replace(QStringLiteral("::"), QStringLiteral("_"));
+}
+
QString includeGuard(const QString &filename)
{
QString guard = filename.toUpper();
@@ -43,11 +49,32 @@ QString formatFunctionSignature(const QList<Tracepoint::Argument> &args)
});
}
-QString formatParameterList(const QList<Tracepoint::Argument> &args, ParamType type)
+QString formatParameterList(const Provider &provider, const QList<Tracepoint::Argument> &args, const QList<Tracepoint::Field> &fields, ParamType type)
{
if (type == LTTNG) {
QString ret;
+ for (int i = 0; i < args.size(); i++) {
+ const Tracepoint::Argument &arg = args[i];
+ const Tracepoint::Field &field = fields[i];
+ if (field.backendType.backendType == Tracepoint::Field::FlagType)
+ ret += ", trace_convert_"_L1 + typeToName(arg.type) + "("_L1 + arg.name + ")"_L1;
+ else
+ ret += ", "_L1 + arg.name;
+ }
+ return ret;
+ }
+
+ auto findEnumeration = [](const QList<TraceEnum> &enums, const QString &name) {
+ for (const auto &e : enums) {
+ if (e.name == name)
+ return e;
+ }
+ return TraceEnum();
+ };
+ if (type == LTTNG) {
+ QString ret;
+
for (const Tracepoint::Argument &arg : args)
ret += ", "_L1 + arg.name;