blob: 98450c9a0e287a96adc50087339885eb13566f45 [file] [log] [blame]
John Kesseniche01a9bc2016-03-12 20:11:22 -07001//
John Kessenich927608b2017-01-06 12:34:14 -07002// Copyright (C) 2016 Google, Inc.
3// Copyright (C) 2016 LunarG, Inc.
John Kesseniche01a9bc2016-03-12 20:11:22 -07004//
John Kessenich927608b2017-01-06 12:34:14 -07005// All rights reserved.
John Kesseniche01a9bc2016-03-12 20:11:22 -07006//
John Kessenich927608b2017-01-06 12:34:14 -07007// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions
9// are met:
John Kesseniche01a9bc2016-03-12 20:11:22 -070010//
11// Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13//
14// Redistributions in binary form must reproduce the above
15// copyright notice, this list of conditions and the following
16// disclaimer in the documentation and/or other materials provided
17// with the distribution.
18//
19// Neither the name of Google, Inc., nor the names of its
20// contributors may be used to endorse or promote products derived
21// from this software without specific prior written permission.
22//
John Kessenich927608b2017-01-06 12:34:14 -070023// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34// POSSIBILITY OF SUCH DAMAGE.
John Kesseniche01a9bc2016-03-12 20:11:22 -070035//
36
37#ifndef EHLSLTOKENS_H_
38#define EHLSLTOKENS_H_
39
40namespace glslang {
41
42enum EHlslTokenClass {
43 EHTokNone = 0,
44
45 // qualifiers
46 EHTokStatic,
47 EHTokConst,
48 EHTokSNorm,
49 EHTokUnorm,
50 EHTokExtern,
51 EHTokUniform,
52 EHTokVolatile,
John Kessenich630dd7d2016-06-12 23:52:12 -060053 EHTokPrecise,
John Kesseniche01a9bc2016-03-12 20:11:22 -070054 EHTokShared,
55 EHTokGroupShared,
56 EHTokLinear,
57 EHTokCentroid,
58 EHTokNointerpolation,
59 EHTokNoperspective,
60 EHTokSample,
61 EHTokRowMajor,
62 EHTokColumnMajor,
63 EHTokPackOffset,
LoopDawg9249c702016-07-12 20:44:32 -060064 EHTokIn,
65 EHTokOut,
66 EHTokInOut,
John Kessenichb9e39122016-08-17 10:22:08 -060067 EHTokLayout,
steve-lunarg5da1f032017-02-12 17:50:28 -070068 EHTokGloballyCoherent,
John Kessenich36b218d2017-03-15 09:05:14 -060069 EHTokInline,
John Kesseniche01a9bc2016-03-12 20:11:22 -070070
steve-lunargf49cdf42016-11-17 15:04:20 -070071 // primitive types
72 EHTokPoint,
73 EHTokLine,
74 EHTokTriangle,
75 EHTokLineAdj,
76 EHTokTriangleAdj,
77
78 // stream out types
79 EHTokPointStream,
80 EHTokLineStream,
81 EHTokTriangleStream,
82
steve-lunarg858c9282017-01-07 08:54:10 -070083 // Tessellation patches
84 EHTokInputPatch,
85 EHTokOutputPatch,
86
John Kesseniche01a9bc2016-03-12 20:11:22 -070087 // template types
88 EHTokBuffer,
89 EHTokVector,
90 EHTokMatrix,
91
92 // scalar types
93 EHTokVoid,
John Kessenicha1e2d492016-09-20 13:22:58 -060094 EHTokString,
John Kesseniche01a9bc2016-03-12 20:11:22 -070095 EHTokBool,
96 EHTokInt,
97 EHTokUint,
98 EHTokDword,
99 EHTokHalf,
100 EHTokFloat,
101 EHTokDouble,
102 EHTokMin16float,
103 EHTokMin10float,
104 EHTokMin16int,
105 EHTokMin12int,
106 EHTokMin16uint,
107
108 // vector types
109 EHTokBool1,
110 EHTokBool2,
111 EHTokBool3,
112 EHTokBool4,
113 EHTokFloat1,
114 EHTokFloat2,
115 EHTokFloat3,
116 EHTokFloat4,
117 EHTokInt1,
118 EHTokInt2,
119 EHTokInt3,
120 EHTokInt4,
121 EHTokDouble1,
122 EHTokDouble2,
123 EHTokDouble3,
124 EHTokDouble4,
125 EHTokUint1,
126 EHTokUint2,
127 EHTokUint3,
128 EHTokUint4,
steve-lunarg5ca85ad2016-12-26 18:45:52 -0700129 EHTokHalf1,
130 EHTokHalf2,
131 EHTokHalf3,
132 EHTokHalf4,
steve-lunarg3226b082016-10-26 19:18:55 -0600133 EHTokMin16float1,
134 EHTokMin16float2,
135 EHTokMin16float3,
136 EHTokMin16float4,
137 EHTokMin10float1,
138 EHTokMin10float2,
139 EHTokMin10float3,
140 EHTokMin10float4,
141 EHTokMin16int1,
142 EHTokMin16int2,
143 EHTokMin16int3,
144 EHTokMin16int4,
145 EHTokMin12int1,
146 EHTokMin12int2,
147 EHTokMin12int3,
148 EHTokMin12int4,
149 EHTokMin16uint1,
150 EHTokMin16uint2,
151 EHTokMin16uint3,
152 EHTokMin16uint4,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700153
154 // matrix types
155 EHTokInt1x1,
156 EHTokInt1x2,
157 EHTokInt1x3,
158 EHTokInt1x4,
159 EHTokInt2x1,
160 EHTokInt2x2,
161 EHTokInt2x3,
162 EHTokInt2x4,
163 EHTokInt3x1,
164 EHTokInt3x2,
165 EHTokInt3x3,
166 EHTokInt3x4,
167 EHTokInt4x1,
168 EHTokInt4x2,
169 EHTokInt4x3,
170 EHTokInt4x4,
John Kessenich71351de2016-06-08 12:50:56 -0600171 EHTokUint1x1,
172 EHTokUint1x2,
173 EHTokUint1x3,
174 EHTokUint1x4,
175 EHTokUint2x1,
176 EHTokUint2x2,
177 EHTokUint2x3,
178 EHTokUint2x4,
179 EHTokUint3x1,
180 EHTokUint3x2,
181 EHTokUint3x3,
182 EHTokUint3x4,
183 EHTokUint4x1,
184 EHTokUint4x2,
185 EHTokUint4x3,
186 EHTokUint4x4,
187 EHTokBool1x1,
188 EHTokBool1x2,
189 EHTokBool1x3,
190 EHTokBool1x4,
191 EHTokBool2x1,
192 EHTokBool2x2,
193 EHTokBool2x3,
194 EHTokBool2x4,
195 EHTokBool3x1,
196 EHTokBool3x2,
197 EHTokBool3x3,
198 EHTokBool3x4,
199 EHTokBool4x1,
200 EHTokBool4x2,
201 EHTokBool4x3,
202 EHTokBool4x4,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700203 EHTokFloat1x1,
204 EHTokFloat1x2,
205 EHTokFloat1x3,
206 EHTokFloat1x4,
207 EHTokFloat2x1,
208 EHTokFloat2x2,
209 EHTokFloat2x3,
210 EHTokFloat2x4,
211 EHTokFloat3x1,
212 EHTokFloat3x2,
213 EHTokFloat3x3,
214 EHTokFloat3x4,
215 EHTokFloat4x1,
216 EHTokFloat4x2,
217 EHTokFloat4x3,
218 EHTokFloat4x4,
John Kessenich96f65522017-06-06 23:35:25 -0600219 EHTokHalf1x1,
220 EHTokHalf1x2,
221 EHTokHalf1x3,
222 EHTokHalf1x4,
223 EHTokHalf2x1,
224 EHTokHalf2x2,
225 EHTokHalf2x3,
226 EHTokHalf2x4,
227 EHTokHalf3x1,
228 EHTokHalf3x2,
229 EHTokHalf3x3,
230 EHTokHalf3x4,
231 EHTokHalf4x1,
232 EHTokHalf4x2,
233 EHTokHalf4x3,
234 EHTokHalf4x4,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700235 EHTokDouble1x1,
236 EHTokDouble1x2,
237 EHTokDouble1x3,
238 EHTokDouble1x4,
239 EHTokDouble2x1,
240 EHTokDouble2x2,
241 EHTokDouble2x3,
242 EHTokDouble2x4,
243 EHTokDouble3x1,
244 EHTokDouble3x2,
245 EHTokDouble3x3,
246 EHTokDouble3x4,
247 EHTokDouble4x1,
248 EHTokDouble4x2,
249 EHTokDouble4x3,
250 EHTokDouble4x4,
251
252 // texturing types
253 EHTokSampler,
254 EHTokSampler1d,
255 EHTokSampler2d,
256 EHTokSampler3d,
257 EHTokSamplerCube,
258 EHTokSamplerState,
259 EHTokSamplerComparisonState,
260 EHTokTexture,
261 EHTokTexture1d,
262 EHTokTexture1darray,
263 EHTokTexture2d,
264 EHTokTexture2darray,
265 EHTokTexture3d,
266 EHTokTextureCube,
LoopDawg4886f692016-06-29 10:58:58 -0600267 EHTokTextureCubearray,
268 EHTokTexture2DMS,
269 EHTokTexture2DMSarray,
steve-lunargbb0183f2016-10-04 16:58:14 -0600270 EHTokRWTexture1d,
271 EHTokRWTexture1darray,
272 EHTokRWTexture2d,
273 EHTokRWTexture2darray,
274 EHTokRWTexture3d,
275 EHTokRWBuffer,
LoopDawg7f93d562017-09-27 09:04:43 -0600276 EHTokSubpassInput,
277 EHTokSubpassInputMS,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700278
steve-lunarg5da1f032017-02-12 17:50:28 -0700279 // Structure buffer variants
280 EHTokAppendStructuredBuffer,
281 EHTokByteAddressBuffer,
282 EHTokConsumeStructuredBuffer,
283 EHTokRWByteAddressBuffer,
284 EHTokRWStructuredBuffer,
285 EHTokStructuredBuffer,
LoopDawge5530b92017-11-08 19:48:11 -0700286 EHTokTextureBuffer,
steve-lunarg5da1f032017-02-12 17:50:28 -0700287
John Kesseniche01a9bc2016-03-12 20:11:22 -0700288 // variable, user type, ...
289 EHTokIdentifier,
John Kessenich27ffb292017-03-03 17:01:01 -0700290 EHTokClass,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700291 EHTokStruct,
John Kessenich3d157c52016-07-25 16:05:33 -0600292 EHTokCBuffer,
293 EHTokTBuffer,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700294 EHTokTypedef,
John Kessenich7a41f962017-03-22 11:38:22 -0600295 EHTokThis,
John Kessenich8f9fdc92017-03-30 16:22:26 -0600296 EHTokNamespace,
steve-lunarga766b832017-04-25 09:30:28 -0600297 EHTokConstantBuffer,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700298
299 // constant
300 EHTokFloatConstant,
301 EHTokDoubleConstant,
302 EHTokIntConstant,
303 EHTokUintConstant,
304 EHTokBoolConstant,
steve-lunargefe97242016-08-22 16:13:47 -0600305 EHTokStringConstant,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700306
307 // control flow
308 EHTokFor,
309 EHTokDo,
310 EHTokWhile,
311 EHTokBreak,
312 EHTokContinue,
313 EHTokIf,
314 EHTokElse,
315 EHTokDiscard,
316 EHTokReturn,
317 EHTokSwitch,
318 EHTokCase,
319 EHTokDefault,
320
321 // expressions
322 EHTokLeftOp,
323 EHTokRightOp,
324 EHTokIncOp,
325 EHTokDecOp,
326 EHTokLeOp,
327 EHTokGeOp,
328 EHTokEqOp,
329 EHTokNeOp,
330 EHTokAndOp,
331 EHTokOrOp,
332 EHTokXorOp,
John Kessenich34fb0362016-05-03 23:17:20 -0600333 EHTokAssign,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700334 EHTokMulAssign,
335 EHTokDivAssign,
336 EHTokAddAssign,
337 EHTokModAssign,
338 EHTokLeftAssign,
339 EHTokRightAssign,
340 EHTokAndAssign,
341 EHTokXorAssign,
342 EHTokOrAssign,
343 EHTokSubAssign,
344 EHTokLeftParen,
345 EHTokRightParen,
346 EHTokLeftBracket,
347 EHTokRightBracket,
348 EHTokLeftBrace,
349 EHTokRightBrace,
350 EHTokDot,
351 EHTokComma,
352 EHTokColon,
John Kessenich523e20d2017-03-10 18:03:43 -0700353 EHTokColonColon,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700354 EHTokSemicolon,
355 EHTokBang,
356 EHTokDash,
357 EHTokTilde,
358 EHTokPlus,
359 EHTokStar,
360 EHTokSlash,
361 EHTokPercent,
362 EHTokLeftAngle,
363 EHTokRightAngle,
364 EHTokVerticalBar,
365 EHTokCaret,
366 EHTokAmpersand,
367 EHTokQuestion,
368};
369
370} // end namespace glslang
371
LoopDawg4886f692016-06-29 10:58:58 -0600372#endif // EHLSLTOKENS_H_