blob: f6a2c969a424a6cfc4c7ed269b8835057b0f667d [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,
219 EHTokDouble1x1,
220 EHTokDouble1x2,
221 EHTokDouble1x3,
222 EHTokDouble1x4,
223 EHTokDouble2x1,
224 EHTokDouble2x2,
225 EHTokDouble2x3,
226 EHTokDouble2x4,
227 EHTokDouble3x1,
228 EHTokDouble3x2,
229 EHTokDouble3x3,
230 EHTokDouble3x4,
231 EHTokDouble4x1,
232 EHTokDouble4x2,
233 EHTokDouble4x3,
234 EHTokDouble4x4,
235
236 // texturing types
237 EHTokSampler,
238 EHTokSampler1d,
239 EHTokSampler2d,
240 EHTokSampler3d,
241 EHTokSamplerCube,
242 EHTokSamplerState,
243 EHTokSamplerComparisonState,
244 EHTokTexture,
245 EHTokTexture1d,
246 EHTokTexture1darray,
247 EHTokTexture2d,
248 EHTokTexture2darray,
249 EHTokTexture3d,
250 EHTokTextureCube,
LoopDawg4886f692016-06-29 10:58:58 -0600251 EHTokTextureCubearray,
252 EHTokTexture2DMS,
253 EHTokTexture2DMSarray,
steve-lunargbb0183f2016-10-04 16:58:14 -0600254 EHTokRWTexture1d,
255 EHTokRWTexture1darray,
256 EHTokRWTexture2d,
257 EHTokRWTexture2darray,
258 EHTokRWTexture3d,
259 EHTokRWBuffer,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700260
steve-lunarg5da1f032017-02-12 17:50:28 -0700261 // Structure buffer variants
262 EHTokAppendStructuredBuffer,
263 EHTokByteAddressBuffer,
264 EHTokConsumeStructuredBuffer,
265 EHTokRWByteAddressBuffer,
266 EHTokRWStructuredBuffer,
267 EHTokStructuredBuffer,
268
John Kesseniche01a9bc2016-03-12 20:11:22 -0700269 // variable, user type, ...
270 EHTokIdentifier,
John Kessenich27ffb292017-03-03 17:01:01 -0700271 EHTokClass,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700272 EHTokStruct,
John Kessenich3d157c52016-07-25 16:05:33 -0600273 EHTokCBuffer,
274 EHTokTBuffer,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700275 EHTokTypedef,
John Kessenich7a41f962017-03-22 11:38:22 -0600276 EHTokThis,
John Kessenich8f9fdc92017-03-30 16:22:26 -0600277 EHTokNamespace,
steve-lunarga766b832017-04-25 09:30:28 -0600278 EHTokConstantBuffer,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700279
280 // constant
281 EHTokFloatConstant,
282 EHTokDoubleConstant,
283 EHTokIntConstant,
284 EHTokUintConstant,
285 EHTokBoolConstant,
steve-lunargefe97242016-08-22 16:13:47 -0600286 EHTokStringConstant,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700287
288 // control flow
289 EHTokFor,
290 EHTokDo,
291 EHTokWhile,
292 EHTokBreak,
293 EHTokContinue,
294 EHTokIf,
295 EHTokElse,
296 EHTokDiscard,
297 EHTokReturn,
298 EHTokSwitch,
299 EHTokCase,
300 EHTokDefault,
301
302 // expressions
303 EHTokLeftOp,
304 EHTokRightOp,
305 EHTokIncOp,
306 EHTokDecOp,
307 EHTokLeOp,
308 EHTokGeOp,
309 EHTokEqOp,
310 EHTokNeOp,
311 EHTokAndOp,
312 EHTokOrOp,
313 EHTokXorOp,
John Kessenich34fb0362016-05-03 23:17:20 -0600314 EHTokAssign,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700315 EHTokMulAssign,
316 EHTokDivAssign,
317 EHTokAddAssign,
318 EHTokModAssign,
319 EHTokLeftAssign,
320 EHTokRightAssign,
321 EHTokAndAssign,
322 EHTokXorAssign,
323 EHTokOrAssign,
324 EHTokSubAssign,
325 EHTokLeftParen,
326 EHTokRightParen,
327 EHTokLeftBracket,
328 EHTokRightBracket,
329 EHTokLeftBrace,
330 EHTokRightBrace,
331 EHTokDot,
332 EHTokComma,
333 EHTokColon,
John Kessenich523e20d2017-03-10 18:03:43 -0700334 EHTokColonColon,
John Kesseniche01a9bc2016-03-12 20:11:22 -0700335 EHTokSemicolon,
336 EHTokBang,
337 EHTokDash,
338 EHTokTilde,
339 EHTokPlus,
340 EHTokStar,
341 EHTokSlash,
342 EHTokPercent,
343 EHTokLeftAngle,
344 EHTokRightAngle,
345 EHTokVerticalBar,
346 EHTokCaret,
347 EHTokAmpersand,
348 EHTokQuestion,
349};
350
351} // end namespace glslang
352
LoopDawg4886f692016-06-29 10:58:58 -0600353#endif // EHLSLTOKENS_H_