Changeset View
Changeset View
Standalone View
Standalone View
src/kconfig_compiler/KConfigCommonStructs.h
- This file was added.
1 | /* This file is part of the KDE libraries | ||||
---|---|---|---|---|---|
2 | Copyright (C) 2020 Tomaz Cananbrava (tcanabrava@kde.org) | ||||
3 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> | ||||
4 | Copyright (c) 2003 Waldo Bastian <bastian@kde.org> | ||||
5 | Copyright (c) 2003 Zack Rusin <zack@kde.org> | ||||
6 | Copyright (c) 2006 Michaël Larouche <michael.larouche@kdemail.net> | ||||
7 | Copyright (c) 2008 Allen Winter <winter@kde.org> | ||||
8 | Copyright (C) 2020 Tomaz Cananbrava (tcanabrava@kde.org) | ||||
9 | | ||||
10 | This library is free software; you can redistribute it and/or | ||||
11 | modify it under the terms of the GNU Library General Public | ||||
12 | License as published by the Free Software Foundation; either | ||||
13 | version 2 of the License, or (at your option) any later version. | ||||
14 | | ||||
15 | This library is distributed in the hope that it will be useful, | ||||
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
18 | Library General Public License for more details. | ||||
19 | | ||||
20 | You should have received a copy of the GNU Library General Public License | ||||
21 | along with this library; see the file COPYING.LIB. If not, write to | ||||
22 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||||
23 | Boston, MA 02110-1301, USA. | ||||
24 | */ | ||||
25 | | ||||
26 | #ifndef KCONFIGCOMMONSTRUCTS_H | ||||
27 | #define KCONFIGCOMMONSTRUCTS_H | ||||
28 | | ||||
29 | #include <QString> | ||||
30 | #include <QVector> | ||||
31 | #include <QList> | ||||
32 | | ||||
33 | #include "KConfigXTParameters.h" | ||||
34 | | ||||
35 | struct Param | ||||
36 | { | ||||
37 | QString name; | ||||
38 | QString type; | ||||
39 | }; | ||||
40 | | ||||
41 | struct Signal | ||||
42 | { | ||||
43 | QString name; | ||||
44 | QString label; | ||||
45 | QList<Param> arguments; | ||||
46 | bool modify = false; | ||||
47 | }; | ||||
48 | | ||||
49 | class CfgEntry | ||||
50 | { | ||||
51 | public: | ||||
52 | struct Choice { | ||||
53 | QString name; | ||||
54 | QString context; | ||||
55 | QString label; | ||||
56 | QString toolTip; | ||||
57 | QString whatsThis; | ||||
58 | }; | ||||
59 | class Choices | ||||
60 | { | ||||
61 | public: | ||||
62 | Choices() {} | ||||
63 | Choices(const QList<Choice> &d, const QString &n, const QString &p) | ||||
64 | : prefix(p), choices(d), mName(n) | ||||
65 | { | ||||
66 | int i = n.indexOf(QLatin1String("::")); | ||||
67 | if (i >= 0) { | ||||
68 | mExternalQual = n.left(i + 2); | ||||
69 | } | ||||
70 | } | ||||
71 | QString prefix; | ||||
72 | QList<Choice> choices; | ||||
73 | const QString &name() const | ||||
74 | { | ||||
75 | return mName; | ||||
76 | } | ||||
77 | const QString &externalQualifier() const | ||||
78 | { | ||||
79 | return mExternalQual; | ||||
80 | } | ||||
81 | bool external() const | ||||
82 | { | ||||
83 | return !mExternalQual.isEmpty(); | ||||
84 | } | ||||
85 | private: | ||||
86 | QString mName; | ||||
87 | QString mExternalQual; | ||||
88 | }; | ||||
89 | | ||||
90 | public: | ||||
91 | QString group; | ||||
92 | QString type; | ||||
93 | QString key; | ||||
94 | QString name; | ||||
95 | QString labelContext; | ||||
96 | QString label; | ||||
97 | QString toolTipContext; | ||||
98 | QString toolTip; | ||||
99 | QString whatsThisContext; | ||||
100 | QString whatsThis; | ||||
101 | QString code; | ||||
102 | QString defaultValue; | ||||
103 | QString param; | ||||
104 | QString paramName; | ||||
105 | QString paramType; | ||||
106 | Choices choices; | ||||
107 | QList<Signal> signalList; | ||||
108 | QStringList paramValues; | ||||
109 | QStringList paramDefaultValues; | ||||
110 | int paramMax; | ||||
111 | bool hidden; | ||||
112 | QString min; | ||||
113 | QString max; | ||||
114 | }; | ||||
115 | | ||||
116 | struct ParseResult { | ||||
117 | QString cfgFileName; | ||||
118 | bool cfgFileNameArg = false; | ||||
119 | QList<Param> parameters; | ||||
120 | QList<Signal> signalList; | ||||
121 | QStringList includes; | ||||
122 | QList<CfgEntry *> entries; | ||||
123 | bool hasNonModifySignals = false; | ||||
124 | }; | ||||
125 | | ||||
126 | // TODO: Move those methods | ||||
127 | QString enumName(const QString &n); | ||||
128 | QString enumName(const QString &n, const CfgEntry::Choices &c); | ||||
129 | QString param(const QString &t); | ||||
130 | QString cppType(const QString &t); | ||||
131 | QString itemType(const QString &type); | ||||
132 | QString changeSignalName(const QString &n); | ||||
133 | | ||||
134 | QString enumType(const CfgEntry *e, bool globalEnums); | ||||
135 | | ||||
136 | QString getDefaultFunction(const QString &n, const QString &className = QString()); | ||||
137 | QString setFunction(const QString &n, const QString &className = QString()); | ||||
138 | QString getFunction(const QString &n, const QString &className = QString()); | ||||
139 | | ||||
140 | QString itemAccessorBody(const CfgEntry *e, const KConfigXTParameters &cfg); | ||||
141 | QString signalEnumName(const QString &signalName); | ||||
142 | | ||||
143 | bool isUnsigned(const QString &type); | ||||
144 | | ||||
145 | // returns the name of an member variable | ||||
146 | // use itemPath to know the full path | ||||
147 | // like using d-> in case of dpointer | ||||
148 | QString varName(const QString &n, const KConfigXTParameters &cfg); | ||||
149 | | ||||
150 | QString varPath(const QString &n, const KConfigXTParameters &cfg); | ||||
151 | | ||||
152 | // returns the name of an item variable | ||||
153 | // use itemPath to know the full path | ||||
154 | // like using d-> in case of dpointer | ||||
155 | QString itemVar(const CfgEntry *e, const KConfigXTParameters &cfg); | ||||
156 | | ||||
157 | QString itemPath(const CfgEntry *e, const KConfigXTParameters &cfg); | ||||
158 | | ||||
159 | QString filenameOnly(const QString &path); | ||||
160 | | ||||
161 | QString itemDeclaration(const CfgEntry *e, const KConfigXTParameters &cfg); | ||||
162 | | ||||
163 | QString translatedString( | ||||
164 | const KConfigXTParameters &cfg, | ||||
165 | const QString &string, | ||||
166 | const QString &context = QString(), | ||||
167 | const QString ¶m = QString(), | ||||
168 | const QString ¶mValue = QString()); | ||||
169 | | ||||
170 | // TODO: Sanitize those functions. | ||||
171 | QString newItem( | ||||
172 | const CfgEntry* entry, | ||||
173 | const QString &key, | ||||
174 | const QString& defaultValue, | ||||
175 | const KConfigXTParameters &cfg, | ||||
176 | const QString ¶m = QString()); | ||||
177 | | ||||
178 | QString userTextsFunctions( | ||||
179 | const CfgEntry *e, | ||||
180 | const KConfigXTParameters &cfg, | ||||
181 | QString itemVarStr = QString(), | ||||
182 | const QString &i = QString()); | ||||
183 | | ||||
184 | QString paramString(const QString &s, const CfgEntry *e, int i); | ||||
185 | QString paramString(const QString &group, const QList<Param> ¶meters); | ||||
186 | | ||||
187 | QString defaultValue(const QString &t); | ||||
188 | QString memberGetDefaultBody(const CfgEntry *e); | ||||
189 | QString literalString(const QString &s); | ||||
190 | QString enumTypeQualifier(const QString &n, const CfgEntry::Choices &c); | ||||
191 | | ||||
192 | void addQuotes(QString &s); | ||||
193 | void addDebugMethod(QTextStream &out, const KConfigXTParameters &cfg, const QString &n); | ||||
194 | | ||||
195 | #endif |