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
utils.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 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 "utils.h"
5
6#include <QFileInfo>
7#include <QFile>
8#include <QTextStream>
9#include <iostream>
10
11QT_BEGIN_NAMESPACE
12
13using namespace Qt::StringLiterals;
14
15namespace Utils {
16
17void printErr(const QString &out)
18{
19 std::cerr << qPrintable(out) << std::endl;
20}
21
22void printOut(const QString &out)
23{
24 std::cout << qPrintable(out) << std::endl;
25}
26
27QMultiHash<QString, QString> getIncludeOptions(const QFileInfo &root, const QStringList &paths)
28{
29 QMultiHash<QString, QString> res;
30 const qsizetype scanRootLen = root.absolutePath().size();
31 for (const QString &fn : paths) {
32 int offset = 0;
33 int depth = 0;
34 do {
35 offset = fn.lastIndexOf(u'/', offset - 1);
36 QString ffn = fn.mid(offset + 1);
37 res.insert(ffn, fn);
38 } while (++depth < 3 && offset > scanRootLen);
39 }
40 return res;
41}
42
43QString getIndentation(const QString &line)
44{
45 QString indentation;
46 for (const QChar &c : line)
47 if (c.isSpace())
48 indentation += c;
49 else
50 return indentation;
51 return indentation;
52}
53
54QStringList readLines(const QString &filename)
55{
56 QFile file(filename);
57 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
58 printErr("ltext2id error: failed to open file %1 for reading.\n"_L1.arg(filename));
59 return {};
60 }
61 QTextStream in(&file);
62 return in.readAll().split('\n');
63}
64
65void writeLines(const QString &filename, const QStringList &lines)
66{
67 QFile file(filename);
68 if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) {
69 printErr("ltext2id error: failed to open file %1 for writing.\n"_L1.arg(filename));
70 return;
71 }
72 QTextStream out(&file);
73 out << lines.join('\n');
74}
75
76} // namespace Utils
77
78QT_END_NAMESPACE
QStringList readLines(const QString &filename)
Definition utils.cpp:54
void printOut(const QString &out)
Definition utils.cpp:22
void printErr(const QString &out)
Definition utils.cpp:17
void writeLines(const QString &filename, const QStringList &lines)
Definition utils.cpp:65
QString getIndentation(const QString &line)
Definition utils.cpp:43
QMultiHash< QString, QString > getIncludeOptions(const QFileInfo &root, const QStringList &paths)
Definition utils.cpp:27