Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
tracepointgen.cpp
Go to the documentation of this file.
1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#include <qstring.h>
5#include <qstringlist.h>
6#include <qfile.h>
7
8#include "tracepointgen.h"
9#include "parser.h"
10
11static void usage(int status)
12{
13 printf("Generates a tracepoint file for tracegen tool from input files.\n\n");
14 printf("Usage: tracepointgen <output file> <input files> \n");
15 exit(status);
16}
17
18static void parseArgs(int argc, char *argv[], QString &provider, QString &outFile, QList<QString> &inputFiles)
19{
20 if (argc == 1)
21 usage(0);
22 if (argc < 4)
23 usage(-1);
24
25 provider = QLatin1StringView(argv[1]);
26 outFile = QLatin1StringView(argv[2]);
27 for (int i = 3; i < argc; i++)
28 inputFiles.append(QLatin1StringView(argv[i]));
29}
30
31int main(int argc, char *argv[])
32{
33 QString provider;
34 QList<QString> inputFiles;
35 QString outFile;
36
37 parseArgs(argc, argv, provider, outFile, inputFiles);
38
39 Parser parser(provider);
40
41 for (const QString &inputFile : inputFiles) {
42 if (inputFile.startsWith(QLatin1Char('I'))) {
43 QStringList includeDirs = inputFile.right(inputFile.length() - 1).split(QLatin1Char(';'));
44 parser.addIncludeDirs(includeDirs);
45 continue;
46 }
47 QFile in(inputFile);
49 panic("Cannot open '%s' for reading: %s\n",
50 qPrintable(inputFile), qPrintable(in.errorString()));
51 }
52 DEBUGPRINTF(printf("tracepointgen: parse %s\n", qPrintable(inputFile)));
53 parser.parse(in, inputFile);
54 }
55 if (parser.isEmpty())
56 panic("empty provider %s\n", qPrintable(provider));
57
58 QFile out(outFile);
59
61 panic("Cannot open '%s' for writing: %s\n",
62 qPrintable(outFile), qPrintable(out.errorString()));
63 }
64
65 parser.write(out);
66 out.close();
67
68 return 0;
69}
void parse(QIODevice &input, const QString &name)
Definition parser.cpp:536
bool isEmpty() const
Definition parser.h:62
void write(QIODevice &input) const
Definition parser.cpp:592
void addIncludeDirs(const QStringList &list)
Definition parser.h:45
\inmodule QtCore
Definition qfile.h:93
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
int main()
[0]
void panic(const char *fmt,...)
Definition panic.cpp:10
GLuint in
GLsizeiptr const void GLenum usage
Definition qopenglext.h:543
static void split(QT_FT_Vector *b)
#define qPrintable(string)
Definition qstring.h:1531
QTextStream out(stdout)
[7]
\inmodule QtCore \reentrant
Definition qchar.h:18
static void parseArgs(int argc, char *argv[], QString &provider, QString &outFile, QList< QString > &inputFiles)
#define DEBUGPRINTF(x)