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