Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
tracegen.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 "provider.h"
5#include "hitrace.h"
6#include "ctf.h"
7#include "lttng.h"
8#include "etw.h"
9#include "callback.h"
10#include "panic.h"
11
12#include <qstring.h>
13#include <qfile.h>
14
23
24static inline void usage(int status)
25{
26 printf("Usage: tracegen <lttng|etw|hitrace|ctf|callback> <input file> <output file>\n");
27 exit(status);
28}
29
30static void parseArgs(int argc, char *argv[], Target *target, QString *inFile, QString *outFile)
31{
32 if (argc == 1)
33 usage(EXIT_SUCCESS);
34 if (argc != 4)
35 usage(EXIT_FAILURE);
36
37 const char *targetString = argv[1];
38
39 if (qstrcmp(targetString, "lttng") == 0) {
40 *target = Target::LTTNG;
41 } else if (qstrcmp(targetString, "etw") == 0) {
42 *target = Target::ETW;
43 } else if (qstrcmp(targetString, "hitrace") == 0) {
44 *target = Target::HITRACE;
45 } else if (qstrcmp(targetString, "ctf") == 0) {
46 *target = Target::CTF;
47 } else if (qstrcmp(targetString, "callback") == 0) {
48 *target = Target::CALLBACK;
49 } else {
50 fprintf(stderr, "Invalid target: %s\n", targetString);
51 usage(EXIT_FAILURE);
52 }
53
54 *inFile = QLatin1StringView(argv[2]);
55 *outFile = QLatin1StringView(argv[3]);
56}
57
58int main(int argc, char *argv[])
59{
60 Target target = Target::LTTNG;
61 QString inFile;
62 QString outFile;
63
64 parseArgs(argc, argv, &target, &inFile, &outFile);
65
66 Provider p = parseProvider(inFile);
67
68 QFile out(outFile);
69
70 if (!out.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
71 panic("Cannot open '%s' for writing: %s",
72 qPrintable(outFile), qPrintable(out.errorString()));
73 }
74
75 switch (target) {
76 case Target::HITRACE:
77 writeHiTrace(out, p);
78 break;
79 case Target::CTF:
80 writeCtf(out, p);
81 break;
82 case Target::LTTNG:
83 writeLttng(out, p);
84 break;
85 case Target::ETW:
86 writeEtw(out, p);
87 break;
89 writeCallback(out, p);
90 break;
91 }
92
93 return 0;
94}
void writeHiTrace(QFile &file, const Provider &provider)
Definition hitrace.cpp:413
#define qPrintable(string)
Definition qstring.h:1718
int main(int argc, char *argv[])
[ctor_close]
Target
Definition tracegen.cpp:16
@ CALLBACK
Definition tracegen.cpp:21
@ HITRACE
Definition tracegen.cpp:19
static void usage(int status)
Definition tracegen.cpp:24
static void parseArgs(int argc, char *argv[], Target *target, QString *inFile, QString *outFile)
Definition tracegen.cpp:30