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 EHTokMin16float1x1, 253 EHTokMin16float1x2, 254 EHTokMin16float1x3, 255 EHTokMin16float1x4, 256 EHTokMin16float2x1, 257 EHTokMin16float2x2, 258 EHTokMin16float2x3, 259 EHTokMin16float2x4, 260 EHTokMin16float3x1, 261 EHTokMin16float3x2, 262 EHTokMin16float3x3, 263 EHTokMin16float3x4, 264 EHTokMin16float4x1, 265 EHTokMin16float4x2, 266 EHTokMin16float4x3, 267 EHTokMin16float4x4, 268 EHTokMin10float1x1, 269 EHTokMin10float1x2, 270 EHTokMin10float1x3, 271 EHTokMin10float1x4, 272 EHTokMin10float2x1, 273 EHTokMin10float2x2, 274 EHTokMin10float2x3, 275 EHTokMin10float2x4, 276 EHTokMin10float3x1, 277 EHTokMin10float3x2, 278 EHTokMin10float3x3, 279 EHTokMin10float3x4, 280 EHTokMin10float4x1, 281 EHTokMin10float4x2, 282 EHTokMin10float4x3, 283 EHTokMin10float4x4, 284 EHTokMin16int1x1, 285 EHTokMin16int1x2, 286 EHTokMin16int1x3, 287 EHTokMin16int1x4, 288 EHTokMin16int2x1, 289 EHTokMin16int2x2, 290 EHTokMin16int2x3, 291 EHTokMin16int2x4, 292 EHTokMin16int3x1, 293 EHTokMin16int3x2, 294 EHTokMin16int3x3, 295 EHTokMin16int3x4, 296 EHTokMin16int4x1, 297 EHTokMin16int4x2, 298 EHTokMin16int4x3, 299 EHTokMin16int4x4, 300 EHTokMin12int1x1, 301 EHTokMin12int1x2, 302 EHTokMin12int1x3, 303 EHTokMin12int1x4, 304 EHTokMin12int2x1, 305 EHTokMin12int2x2, 306 EHTokMin12int2x3, 307 EHTokMin12int2x4, 308 EHTokMin12int3x1, 309 EHTokMin12int3x2, 310 EHTokMin12int3x3, 311 EHTokMin12int3x4, 312 EHTokMin12int4x1, 313 EHTokMin12int4x2, 314 EHTokMin12int4x3, 315 EHTokMin12int4x4, 316 EHTokMin16uint1x1, 317 EHTokMin16uint1x2, 318 EHTokMin16uint1x3, 319 EHTokMin16uint1x4, 320 EHTokMin16uint2x1, 321 EHTokMin16uint2x2, 322 EHTokMin16uint2x3, 323 EHTokMin16uint2x4, 324 EHTokMin16uint3x1, 325 EHTokMin16uint3x2, 326 EHTokMin16uint3x3, 327 EHTokMin16uint3x4, 328 EHTokMin16uint4x1, 329 EHTokMin16uint4x2, 330 EHTokMin16uint4x3, 331 EHTokMin16uint4x4, 332 333 // texturing types 334 EHTokSampler, 335 EHTokSampler1d, 336 EHTokSampler2d, 337 EHTokSampler3d, 338 EHTokSamplerCube, 339 EHTokSamplerState, 340 EHTokSamplerComparisonState, 341 EHTokTexture, 342 EHTokTexture1d, 343 EHTokTexture1darray, 344 EHTokTexture2d, 345 EHTokTexture2darray, 346 EHTokTexture3d, 347 EHTokTextureCube, 348 EHTokTextureCubearray, 349 EHTokTexture2DMS, 350 EHTokTexture2DMSarray, 351 EHTokRWTexture1d, 352 EHTokRWTexture1darray, 353 EHTokRWTexture2d, 354 EHTokRWTexture2darray, 355 EHTokRWTexture3d, 356 EHTokRWBuffer, 357 EHTokSubpassInput, 358 EHTokSubpassInputMS, 359 360 // Structure buffer variants 361 EHTokAppendStructuredBuffer, 362 EHTokByteAddressBuffer, 363 EHTokConsumeStructuredBuffer, 364 EHTokRWByteAddressBuffer, 365 EHTokRWStructuredBuffer, 366 EHTokStructuredBuffer, 367 EHTokTextureBuffer, 368 369 // variable, user type, ... 370 EHTokIdentifier, 371 EHTokClass, 372 EHTokStruct, 373 EHTokCBuffer, 374 EHTokTBuffer, 375 EHTokTypedef, 376 EHTokThis, 377 EHTokNamespace, 378 EHTokConstantBuffer, 379 380 // constant 381 EHTokFloat16Constant, 382 EHTokFloatConstant, 383 EHTokDoubleConstant, 384 EHTokIntConstant, 385 EHTokUintConstant, 386 EHTokBoolConstant, 387 EHTokStringConstant, 388 389 // control flow 390 EHTokFor, 391 EHTokDo, 392 EHTokWhile, 393 EHTokBreak, 394 EHTokContinue, 395 EHTokIf, 396 EHTokElse, 397 EHTokDiscard, 398 EHTokReturn, 399 EHTokSwitch, 400 EHTokCase, 401 EHTokDefault, 402 403 // expressions 404 EHTokLeftOp, 405 EHTokRightOp, 406 EHTokIncOp, 407 EHTokDecOp, 408 EHTokLeOp, 409 EHTokGeOp, 410 EHTokEqOp, 411 EHTokNeOp, 412 EHTokAndOp, 413 EHTokOrOp, 414 EHTokXorOp, 415 EHTokAssign, 416 EHTokMulAssign, 417 EHTokDivAssign, 418 EHTokAddAssign, 419 EHTokModAssign, 420 EHTokLeftAssign, 421 EHTokRightAssign, 422 EHTokAndAssign, 423 EHTokXorAssign, 424 EHTokOrAssign, 425 EHTokSubAssign, 426 EHTokLeftParen, 427 EHTokRightParen, 428 EHTokLeftBracket, 429 EHTokRightBracket, 430 EHTokLeftBrace, 431 EHTokRightBrace, 432 EHTokDot, 433 EHTokComma, 434 EHTokColon, 435 EHTokColonColon, 436 EHTokSemicolon, 437 EHTokBang, 438 EHTokDash, 439 EHTokTilde, 440 EHTokPlus, 441 EHTokStar, 442 EHTokSlash, 443 EHTokPercent, 444 EHTokLeftAngle, 445 EHTokRightAngle, 446 EHTokVerticalBar, 447 EHTokCaret, 448 EHTokAmpersand, 449 EHTokQuestion, 450 }; 451 452 } // end namespace glslang 453 454 #endif // EHLSLTOKENS_H_ 455