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