1 //
2 // Copyright (C) 2016 Google, Inc.
3 // Copyright (C) 2016 LunarG, Inc.
4 //
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
9 // are met:
10 //
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 //
23 // 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.
35 //
36 
37 #ifndef EHLSLTOKENS_H_
38 #define EHLSLTOKENS_H_
39 
40 namespace glslang {
41 
42 enum EHlslTokenClass {
43     EHTokNone = 0,
44 
45     // qualifiers
46     EHTokStatic,
47     EHTokConst,
48     EHTokSNorm,
49     EHTokUnorm,
50     EHTokExtern,
51     EHTokUniform,
52     EHTokVolatile,
53     EHTokPrecise,
54     EHTokShared,
55     EHTokGroupShared,
56     EHTokLinear,
57     EHTokCentroid,
58     EHTokNointerpolation,
59     EHTokNoperspective,
60     EHTokSample,
61     EHTokRowMajor,
62     EHTokColumnMajor,
63     EHTokPackOffset,
64     EHTokIn,
65     EHTokOut,
66     EHTokInOut,
67     EHTokLayout,
68     EHTokGloballyCoherent,
69     EHTokInline,
70 
71     // primitive types
72     EHTokPoint,
73     EHTokLine,
74     EHTokTriangle,
75     EHTokLineAdj,
76     EHTokTriangleAdj,
77 
78     // stream out types
79     EHTokPointStream,
80     EHTokLineStream,
81     EHTokTriangleStream,
82 
83     // Tessellation patches
84     EHTokInputPatch,
85     EHTokOutputPatch,
86 
87     // template types
88     EHTokBuffer,
89     EHTokVector,
90     EHTokMatrix,
91 
92     // scalar types
93     EHTokVoid,
94     EHTokString,
95     EHTokBool,
96     EHTokInt,
97     EHTokUint,
98     EHTokUint64,
99     EHTokDword,
100     EHTokHalf,
101     EHTokFloat,
102     EHTokDouble,
103     EHTokMin16float,
104     EHTokMin10float,
105     EHTokMin16int,
106     EHTokMin12int,
107     EHTokMin16uint,
108 
109     // vector types
110     EHTokBool1,
111     EHTokBool2,
112     EHTokBool3,
113     EHTokBool4,
114     EHTokFloat1,
115     EHTokFloat2,
116     EHTokFloat3,
117     EHTokFloat4,
118     EHTokInt1,
119     EHTokInt2,
120     EHTokInt3,
121     EHTokInt4,
122     EHTokDouble1,
123     EHTokDouble2,
124     EHTokDouble3,
125     EHTokDouble4,
126     EHTokUint1,
127     EHTokUint2,
128     EHTokUint3,
129     EHTokUint4,
130     EHTokHalf1,
131     EHTokHalf2,
132     EHTokHalf3,
133     EHTokHalf4,
134     EHTokMin16float1,
135     EHTokMin16float2,
136     EHTokMin16float3,
137     EHTokMin16float4,
138     EHTokMin10float1,
139     EHTokMin10float2,
140     EHTokMin10float3,
141     EHTokMin10float4,
142     EHTokMin16int1,
143     EHTokMin16int2,
144     EHTokMin16int3,
145     EHTokMin16int4,
146     EHTokMin12int1,
147     EHTokMin12int2,
148     EHTokMin12int3,
149     EHTokMin12int4,
150     EHTokMin16uint1,
151     EHTokMin16uint2,
152     EHTokMin16uint3,
153     EHTokMin16uint4,
154 
155     // matrix types
156     EHTokInt1x1,
157     EHTokInt1x2,
158     EHTokInt1x3,
159     EHTokInt1x4,
160     EHTokInt2x1,
161     EHTokInt2x2,
162     EHTokInt2x3,
163     EHTokInt2x4,
164     EHTokInt3x1,
165     EHTokInt3x2,
166     EHTokInt3x3,
167     EHTokInt3x4,
168     EHTokInt4x1,
169     EHTokInt4x2,
170     EHTokInt4x3,
171     EHTokInt4x4,
172     EHTokUint1x1,
173     EHTokUint1x2,
174     EHTokUint1x3,
175     EHTokUint1x4,
176     EHTokUint2x1,
177     EHTokUint2x2,
178     EHTokUint2x3,
179     EHTokUint2x4,
180     EHTokUint3x1,
181     EHTokUint3x2,
182     EHTokUint3x3,
183     EHTokUint3x4,
184     EHTokUint4x1,
185     EHTokUint4x2,
186     EHTokUint4x3,
187     EHTokUint4x4,
188     EHTokBool1x1,
189     EHTokBool1x2,
190     EHTokBool1x3,
191     EHTokBool1x4,
192     EHTokBool2x1,
193     EHTokBool2x2,
194     EHTokBool2x3,
195     EHTokBool2x4,
196     EHTokBool3x1,
197     EHTokBool3x2,
198     EHTokBool3x3,
199     EHTokBool3x4,
200     EHTokBool4x1,
201     EHTokBool4x2,
202     EHTokBool4x3,
203     EHTokBool4x4,
204     EHTokFloat1x1,
205     EHTokFloat1x2,
206     EHTokFloat1x3,
207     EHTokFloat1x4,
208     EHTokFloat2x1,
209     EHTokFloat2x2,
210     EHTokFloat2x3,
211     EHTokFloat2x4,
212     EHTokFloat3x1,
213     EHTokFloat3x2,
214     EHTokFloat3x3,
215     EHTokFloat3x4,
216     EHTokFloat4x1,
217     EHTokFloat4x2,
218     EHTokFloat4x3,
219     EHTokFloat4x4,
220     EHTokHalf1x1,
221     EHTokHalf1x2,
222     EHTokHalf1x3,
223     EHTokHalf1x4,
224     EHTokHalf2x1,
225     EHTokHalf2x2,
226     EHTokHalf2x3,
227     EHTokHalf2x4,
228     EHTokHalf3x1,
229     EHTokHalf3x2,
230     EHTokHalf3x3,
231     EHTokHalf3x4,
232     EHTokHalf4x1,
233     EHTokHalf4x2,
234     EHTokHalf4x3,
235     EHTokHalf4x4,
236     EHTokDouble1x1,
237     EHTokDouble1x2,
238     EHTokDouble1x3,
239     EHTokDouble1x4,
240     EHTokDouble2x1,
241     EHTokDouble2x2,
242     EHTokDouble2x3,
243     EHTokDouble2x4,
244     EHTokDouble3x1,
245     EHTokDouble3x2,
246     EHTokDouble3x3,
247     EHTokDouble3x4,
248     EHTokDouble4x1,
249     EHTokDouble4x2,
250     EHTokDouble4x3,
251     EHTokDouble4x4,
252 
253     // texturing types
254     EHTokSampler,
255     EHTokSampler1d,
256     EHTokSampler2d,
257     EHTokSampler3d,
258     EHTokSamplerCube,
259     EHTokSamplerState,
260     EHTokSamplerComparisonState,
261     EHTokTexture,
262     EHTokTexture1d,
263     EHTokTexture1darray,
264     EHTokTexture2d,
265     EHTokTexture2darray,
266     EHTokTexture3d,
267     EHTokTextureCube,
268     EHTokTextureCubearray,
269     EHTokTexture2DMS,
270     EHTokTexture2DMSarray,
271     EHTokRWTexture1d,
272     EHTokRWTexture1darray,
273     EHTokRWTexture2d,
274     EHTokRWTexture2darray,
275     EHTokRWTexture3d,
276     EHTokRWBuffer,
277     EHTokSubpassInput,
278     EHTokSubpassInputMS,
279 
280     // Structure buffer variants
281     EHTokAppendStructuredBuffer,
282     EHTokByteAddressBuffer,
283     EHTokConsumeStructuredBuffer,
284     EHTokRWByteAddressBuffer,
285     EHTokRWStructuredBuffer,
286     EHTokStructuredBuffer,
287     EHTokTextureBuffer,
288 
289     // variable, user type, ...
290     EHTokIdentifier,
291     EHTokClass,
292     EHTokStruct,
293     EHTokCBuffer,
294     EHTokTBuffer,
295     EHTokTypedef,
296     EHTokThis,
297     EHTokNamespace,
298     EHTokConstantBuffer,
299 
300     // constant
301     EHTokFloat16Constant,
302     EHTokFloatConstant,
303     EHTokDoubleConstant,
304     EHTokIntConstant,
305     EHTokUintConstant,
306     EHTokBoolConstant,
307     EHTokStringConstant,
308 
309     // control flow
310     EHTokFor,
311     EHTokDo,
312     EHTokWhile,
313     EHTokBreak,
314     EHTokContinue,
315     EHTokIf,
316     EHTokElse,
317     EHTokDiscard,
318     EHTokReturn,
319     EHTokSwitch,
320     EHTokCase,
321     EHTokDefault,
322 
323     // expressions
324     EHTokLeftOp,
325     EHTokRightOp,
326     EHTokIncOp,
327     EHTokDecOp,
328     EHTokLeOp,
329     EHTokGeOp,
330     EHTokEqOp,
331     EHTokNeOp,
332     EHTokAndOp,
333     EHTokOrOp,
334     EHTokXorOp,
335     EHTokAssign,
336     EHTokMulAssign,
337     EHTokDivAssign,
338     EHTokAddAssign,
339     EHTokModAssign,
340     EHTokLeftAssign,
341     EHTokRightAssign,
342     EHTokAndAssign,
343     EHTokXorAssign,
344     EHTokOrAssign,
345     EHTokSubAssign,
346     EHTokLeftParen,
347     EHTokRightParen,
348     EHTokLeftBracket,
349     EHTokRightBracket,
350     EHTokLeftBrace,
351     EHTokRightBrace,
352     EHTokDot,
353     EHTokComma,
354     EHTokColon,
355     EHTokColonColon,
356     EHTokSemicolon,
357     EHTokBang,
358     EHTokDash,
359     EHTokTilde,
360     EHTokPlus,
361     EHTokStar,
362     EHTokSlash,
363     EHTokPercent,
364     EHTokLeftAngle,
365     EHTokRightAngle,
366     EHTokVerticalBar,
367     EHTokCaret,
368     EHTokAmpersand,
369     EHTokQuestion,
370 };
371 
372 } // end namespace glslang
373 
374 #endif // EHLSLTOKENS_H_
375