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
glslengine.cpp
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4
#
include
"glslengine_p.h"
5
#
include
"glslsymbols_p.h"
6
#
include
"glsltypes_p.h"
7
#
include
"glslparser_p.h"
8
9
QT_BEGIN_NAMESPACE
10
11
using
namespace
GLSL;
12
13
DiagnosticMessage::DiagnosticMessage()
14
: _kind(Error), _line(0)
15
{
16
}
17
18
DiagnosticMessage::Kind DiagnosticMessage::kind()
const
19
{
20
return
_kind;
21
}
22
23
void
DiagnosticMessage::setKind(Kind kind)
24
{
25
_kind = kind;
26
}
27
28
QString DiagnosticMessage::fileName()
const
29
{
30
return
_fileName;
31
}
32
33
void
DiagnosticMessage::setFileName(
const
QString &fileName)
34
{
35
_fileName = fileName;
36
}
37
38
int
DiagnosticMessage::line()
const
39
{
40
return
_line;
41
}
42
43
void
DiagnosticMessage::setLine(
int
line)
44
{
45
_line = line;
46
}
47
48
QString DiagnosticMessage::message()
const
49
{
50
return
_message;
51
}
52
53
void
DiagnosticMessage::setMessage(
const
QString &message)
54
{
55
_message = message;
56
}
57
58
Engine::Engine()
59
: _blockDiagnosticMessages(
false
)
60
{
61
}
62
63
Engine::~Engine()
64
{
65
qDeleteAll(_symbols);
66
}
67
68
const
QString *Engine::identifier(
const
QString &s)
69
{
70
return
&(*_identifiers.insert(s).first);
71
}
72
73
const
QString *Engine::identifier(
const
char
*s,
int
n)
74
{
75
return
&(*_identifiers.insert(QString::fromLatin1(s, n)).first);
76
}
77
78
std::unordered_set<QString> Engine::identifiers()
const
79
{
80
return
_identifiers;
81
}
82
83
const
QString *Engine::number(
const
QString &s)
84
{
85
return
&(*_numbers.insert(s).first);
86
}
87
88
const
QString *Engine::number(
const
char
*s,
int
n)
89
{
90
return
&(*_numbers.insert(QString::fromLatin1(s, n)).first);
91
}
92
93
std::unordered_set<QString> Engine::numbers()
const
94
{
95
return
_numbers;
96
}
97
98
MemoryPool *Engine::pool()
99
{
100
return
&_pool;
101
}
102
103
const
UndefinedType *Engine::undefinedType()
104
{
105
static
UndefinedType t;
106
return
&t;
107
}
108
109
const
VoidType *Engine::voidType()
110
{
111
static
VoidType t;
112
return
&t;
113
}
114
115
const
BoolType *Engine::boolType()
116
{
117
static
BoolType t;
118
return
&t;
119
}
120
121
const
IntType *Engine::intType()
122
{
123
static
IntType t;
124
return
&t;
125
}
126
127
const
UIntType *Engine::uintType()
128
{
129
static
UIntType t;
130
return
&t;
131
}
132
133
const
FloatType *Engine::floatType()
134
{
135
static
FloatType t;
136
return
&t;
137
}
138
139
const
DoubleType *Engine::doubleType()
140
{
141
static
DoubleType t;
142
return
&t;
143
}
144
145
const
SamplerType *Engine::samplerType(
int
kind)
146
{
147
return
_samplerTypes.intern(SamplerType(kind));
148
}
149
150
const
VectorType *Engine::vectorType(
const
Type *elementType,
int
dimension)
151
{
152
VectorType *type =
const_cast
<VectorType *>
153
(_vectorTypes.intern(VectorType(elementType, dimension)));
154
type->populateMembers(
this
);
155
return
type;
156
}
157
158
const
MatrixType *Engine::matrixType(
const
Type *elementType,
int
columns,
int
rows)
159
{
160
return
_matrixTypes.intern(MatrixType(elementType, columns, rows,
161
vectorType(elementType, rows)));
162
}
163
164
const
ArrayType *Engine::arrayType(
const
Type *elementType)
165
{
166
return
_arrayTypes.intern(ArrayType(elementType));
167
}
168
169
170
QList<DiagnosticMessage> Engine::diagnosticMessages()
const
171
{
172
return
_diagnosticMessages;
173
}
174
175
void
Engine::clearDiagnosticMessages()
176
{
177
_diagnosticMessages.clear();
178
}
179
180
void
Engine::addDiagnosticMessage(
const
DiagnosticMessage &m)
181
{
182
if
(! _blockDiagnosticMessages)
183
_diagnosticMessages.append(m);
184
}
185
186
void
Engine::warning(
int
line,
const
QString &message)
187
{
188
DiagnosticMessage m;
189
m.setKind(DiagnosticMessage::Warning);
190
m.setLine(line);
191
m.setMessage(message);
192
addDiagnosticMessage(m);
193
}
194
195
void
Engine::error(
int
line,
const
QString &message)
196
{
197
DiagnosticMessage m;
198
m.setKind(DiagnosticMessage::Error);
199
m.setLine(line);
200
m.setMessage(message);
201
addDiagnosticMessage(m);
202
}
203
204
bool
DiagnosticMessage::isError()
const
205
{
206
return
_kind == Error;
207
}
208
209
bool
DiagnosticMessage::isWarning()
const
210
{
211
return
_kind == Warning;
212
}
213
214
Namespace *Engine::newNamespace()
215
{
216
Namespace *s =
new
Namespace();
217
_symbols.append(s);
218
return
s;
219
}
220
221
Struct *Engine::newStruct(Scope *scope)
222
{
223
Struct *s =
new
Struct(scope);
224
_symbols.append(s);
225
return
s;
226
}
227
228
Block *Engine::newBlock(Scope *scope)
229
{
230
Block *s =
new
Block(scope);
231
_symbols.append(s);
232
return
s;
233
}
234
235
Function *Engine::newFunction(Scope *scope)
236
{
237
Function *s =
new
Function(scope);
238
_symbols.append(s);
239
return
s;
240
}
241
242
Argument *Engine::newArgument(Function *function,
const
QString &name,
const
Type *type)
243
{
244
Argument *a =
new
Argument(function);
245
a->setName(name);
246
a->setType(type);
247
_symbols.append(a);
248
return
a;
249
}
250
251
Variable *Engine::newVariable(Scope *scope,
const
QString &name,
const
Type *type,
int
qualifiers)
252
{
253
Variable *var =
new
Variable(scope);
254
var->setName(name);
255
var->setType(type);
256
var->setQualifiers(qualifiers);
257
_symbols.append(var);
258
return
var;
259
}
260
261
bool
Engine::blockDiagnosticMessages(
bool
block)
262
{
263
bool
previous = _blockDiagnosticMessages;
264
_blockDiagnosticMessages = block;
265
return
previous;
266
}
267
268
QT_END_NAMESPACE
qtquick3d
src
glslparser
glslengine.cpp
Generated on
for Qt by
1.14.0