1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
/*
This file is part of the KDE libraries.
SPDX-FileCopyrightText: 2003 Cornelius Schumacher <schumacher@kde.org>
SPDX-FileCopyrightText: 2003 Waldo Bastian <bastian@kde.org>
SPDX-FileCopyrightText: 2003 Zack Rusin <zack@kde.org>
SPDX-FileCopyrightText: 2006 Michaƫl Larouche <michael.larouche@kdemail.net>
SPDX-FileCopyrightText: 2008 Allen Winter <winter@kde.org>
SPDX-FileCopyrightText: 2020 Tomaz Cananbrava <tcanabrava@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef KCONFIGCOMMONSTRUCTS_H
#define KCONFIGCOMMONSTRUCTS_H
#include <QString>
#include <QVector>
#include <QList>
#include "KConfigParameters.h"
struct Param
{
QString name;
QString type;
};
struct Signal
{
QString name;
QString label;
QList<Param> arguments;
bool modify = false;
};
class CfgEntry
{
public:
struct Choice {
QString name;
QString context;
QString label;
QString toolTip;
QString whatsThis;
QString val;
QString value() const
{
return !val.isEmpty() ? val : name;
}
};
class Choices
{
public:
Choices() {}
Choices(const QList<Choice> &d, const QString &n, const QString &p)
: prefix(p), choices(d), mName(n)
{
int i = n.indexOf(QLatin1String("::"));
if (i >= 0) {
mExternalQual = n.left(i + 2);
}
}
QString prefix;
QList<Choice> choices;
const QString &name() const
{
return mName;
}
const QString &externalQualifier() const
{
return mExternalQual;
}
bool external() const
{
return !mExternalQual.isEmpty();
}
private:
QString mName;
QString mExternalQual;
};
public:
QString group;
QString parentGroup;
QString type;
QString key;
QString name;
QString labelContext;
QString label;
QString toolTipContext;
QString toolTip;
QString whatsThisContext;
QString whatsThis;
QString code;
QString defaultValue;
QString param;
QString paramName;
QString paramType;
Choices choices;
QList<Signal> signalList;
QStringList paramValues;
QStringList paramDefaultValues;
int paramMax;
bool hidden;
QString min;
QString max;
};
struct ParseResult {
QString cfgFileName;
bool cfgFileNameArg = false;
QList<Param> parameters;
QList<Signal> signalList;
QStringList includes;
QList<CfgEntry *> entries;
bool hasNonModifySignals = false;
};
// TODO: Move those methods
QString enumName(const QString &n);
QString enumName(const QString &n, const CfgEntry::Choices &c);
QString param(const QString &t);
QString cppType(const QString &t);
QString itemType(const QString &type);
QString changeSignalName(const QString &n);
QString enumType(const CfgEntry *e, bool globalEnums);
QString getDefaultFunction(const QString &n, const QString &className = QString());
QString setFunction(const QString &n, const QString &className = QString());
QString getFunction(const QString &n, const QString &className = QString());
QString immutableFunction(const QString &n, const QString &className = QString());
QString itemAccessorBody(const CfgEntry *e, const KConfigParameters &cfg);
QString signalEnumName(const QString &signalName);
bool isUnsigned(const QString &type);
// returns the name of an member variable
// use itemPath to know the full path
// like using d-> in case of dpointer
QString varName(const QString &n, const KConfigParameters &cfg);
QString varPath(const QString &n, const KConfigParameters &cfg);
// returns the name of an item variable
// use itemPath to know the full path
// like using d-> in case of dpointer
QString itemVar(const CfgEntry *e, const KConfigParameters &cfg);
// returns the name of the local inner item if there is one
// (before wrapping with KConfigCompilerSignallingItem)
// Otherwise return itemVar()
QString innerItemVar(const CfgEntry *e, const KConfigParameters &cfg);
QString itemPath(const CfgEntry *e, const KConfigParameters &cfg);
QString filenameOnly(const QString &path);
QString itemDeclaration(const CfgEntry *e, const KConfigParameters &cfg);
QString translatedString(
const KConfigParameters &cfg,
const QString &string,
const QString &context = QString(),
const QString ¶m = QString(),
const QString ¶mValue = QString());
// TODO: Sanitize those functions.
QString newItem(
const CfgEntry *entry,
const QString &key,
const QString &defaultValue,
const KConfigParameters &cfg,
const QString ¶m = QString());
QString newInnerItem(
const CfgEntry *entry,
const QString &key,
const QString &defaultValue,
const KConfigParameters &cfg,
const QString ¶m = QString());
QString userTextsFunctions(
const CfgEntry *e,
const KConfigParameters &cfg,
QString itemVarStr = QString(),
const QString &i = QString());
QString paramString(const QString &s, const CfgEntry *e, int i);
QString paramString(const QString &group, const QList<Param> ¶meters);
QString defaultValue(const QString &t);
QString memberGetDefaultBody(const CfgEntry *e);
QString literalString(const QString &s);
QString enumTypeQualifier(const QString &n, const CfgEntry::Choices &c);
void addQuotes(QString &s);
void addDebugMethod(QTextStream &out, const KConfigParameters &cfg, const QString &n);
#endif
|