diff options
author | Antti Määttä <[email protected]> | 2022-12-13 09:01:13 +0200 |
---|---|---|
committer | Antti Määttä <[email protected]> | 2023-01-13 12:43:45 +0200 |
commit | a2bcb7d8adb7bb59087cd2df2396539e2baf5b7d (patch) | |
tree | ff381fc1bfb1bae9a3982a9c9fd2ef98387a98c6 /src/tools/tracegen/helpers.cpp | |
parent | bab65d70dcaf08e85113d5203056a4b8dd2c1fa7 (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.cpp | 29 |
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; |