};\r
union {\r
TPublicType type;\r
- TQualifier qualifier;\r
TFunction* function;\r
TParameter param;\r
TTypeLine typeLine;\r
// don't delete $1.string, it's used by error recovery, and the pool\r
// pop will reclaim the memory\r
\r
- if (variable->getType().getQualifier() == EvqConst ) {\r
+ if (variable->getType().getQualifier().storage == EvqConst ) {\r
constUnion* constArray = variable->getConstPointer();\r
TType t(variable->getType());\r
$$ = parseContext.intermediate.addConstantUnion(constArray, t, $1.line);\r
parseContext.error($2.line, " left of '[' is not of type array, matrix, or vector ", "expression", "");\r
parseContext.recover();\r
}\r
- if ($1->getType().getQualifier() == EvqConst && $3->getQualifier() == EvqConst) {\r
+ if ($1->getType().getQualifier().storage == EvqConst && $3->getQualifier().storage == EvqConst) {\r
if ($1->isArray()) { // constant folding for arrays\r
$$ = parseContext.addConstArrayNode($3->getAsConstantUnion()->getUnionArrayPointer()->getIConst(), $1, $2.line);\r
} else if ($1->isVector()) { // constant folding for vectors\r
$$ = parseContext.addConstMatrixNode($3->getAsConstantUnion()->getUnionArrayPointer()->getIConst(), $1, $2.line);\r
}\r
} else {\r
- if ($3->getQualifier() == EvqConst) {\r
+ if ($3->getQualifier().storage == EvqConst) {\r
if (($1->isVector() || $1->isMatrix()) && $1->getType().getNominalSize() <= $3->getAsConstantUnion()->getUnionArrayPointer()->getIConst() && !$1->isArray() ) {\r
parseContext.error($2.line, "", "[", "field selection out of range '%d'", $3->getAsConstantUnion()->getUnionArrayPointer()->getIConst());\r
parseContext.recover();\r
else\r
$$->setType(TType($1->getBasicType(), EvqTemporary, $1->getNominalSize(), $1->isMatrix()));\r
\r
- if ($1->getType().getQualifier() == EvqConst)\r
- $$->getTypePointer()->changeQualifier(EvqConst);\r
- } else if ($1->isMatrix() && $1->getType().getQualifier() == EvqConst)\r
+ if ($1->getType().getQualifier().storage == EvqConst)\r
+ $$->getTypePointer()->getQualifier().storage = EvqConst;\r
+ } else if ($1->isMatrix() && $1->getType().getQualifier().storage == EvqConst)\r
$$->setType(TType($1->getBasicType(), EvqConst, $1->getNominalSize()));\r
else if ($1->isMatrix())\r
$$->setType(TType($1->getBasicType(), EvqTemporary, $1->getNominalSize()));\r
- else if ($1->isVector() && $1->getType().getQualifier() == EvqConst)\r
+ else if ($1->isVector() && $1->getType().getQualifier().storage == EvqConst)\r
$$->setType(TType($1->getBasicType(), EvqConst));\r
else if ($1->isVector())\r
$$->setType(TType($1->getBasicType(), EvqTemporary));\r
parseContext.recover();\r
}\r
\r
- if ($1->getType().getQualifier() == EvqConst) { // constant folding for vector fields\r
+ if ($1->getType().getQualifier().storage == EvqConst) { // constant folding for vector fields\r
$$ = parseContext.addConstVectorNode(fields, $1, $3.line);\r
if ($$ == 0) {\r
parseContext.recover();\r
}\r
}\r
if (fieldFound) {\r
- if ($1->getType().getQualifier() == EvqConst) {\r
+ if ($1->getType().getQualifier().storage == EvqConst) {\r
$$ = parseContext.addConstStruct(*$3.string, $1, $2.line);\r
if ($$ == 0) {\r
parseContext.recover();\r
$$->setType(*(*fields)[i].type);\r
// change the qualifier of the return type, not of the structure field\r
// as the structure definition is shared between various structures.\r
- $$->getTypePointer()->changeQualifier(EvqConst);\r
+ $$->getTypePointer()->getQualifier().storage = EvqConst;\r
}\r
} else {\r
constUnion *unionArray = new constUnion[1];\r
$$->getAsAggregate()->setUserDefined();\r
$$->getAsAggregate()->setName(fnCandidate->getMangledName());\r
\r
- TQualifier qual;\r
- TQualifierList& qualifierList = $$->getAsAggregate()->getQualifier();\r
+ TStorageQualifier qual;\r
+ TQualifierList& qualifierList = $$->getAsAggregate()->getQualifierList();\r
for (int i = 0; i < fnCandidate->getParamCount(); ++i) {\r
- qual = (*fnCandidate)[i].type->getQualifier();\r
+ qual = (*fnCandidate)[i].type->getQualifier().storage;\r
if (qual == EvqOut || qual == EvqInOut) {\r
if (parseContext.lValueErrorCheck($$->getLine(), "assign", $$->getAsAggregate()->getSequence()[i]->getAsTyped())) {\r
parseContext.error($1.intermNode->getLine(), "Constant value cannot be passed for 'out' or 'inout' parameters.", "Error", "");\r
parseContext.profileRequires($1.line, ENoProfile, 120, "GL_3DL_array_objects", "array");\r
}\r
\r
+ $1.qualifier.precision = EpqNone;\r
if ($1.userDef) {\r
TString tempString = "";\r
TType type($1);\r
}\r
| PRECISION precision_qualifier type_specifier SEMICOLON {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "precision statement");\r
+ \r
+ // lazy setting of the previous scope's defaults, only takes on first one in a particular scope\r
+ parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]);\r
+\r
+ parseContext.setDefaultPrecision($1.line, $3.type, $2.qualifier.precision);\r
$$ = 0;\r
}\r
| type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON {\r
parseContext.recover();\r
}\r
for (int i = 0; i < prevDec->getParamCount(); ++i) {\r
- if ((*prevDec)[i].type->getQualifier() != (*$1)[i].type->getQualifier()) {\r
- parseContext.error($2.line, "overloaded functions must have the same parameter qualifiers", (*$1)[i].type->getQualifierString(), "");\r
+ if ((*prevDec)[i].type->getQualifier().storage != (*$1)[i].type->getQualifier().storage) {\r
+ parseContext.error($2.line, "overloaded functions must have the same parameter qualifiers", \r
+ (*$1)[i].type->getStorageQualifierString(), "");\r
parseContext.recover();\r
}\r
}\r
\r
function_header\r
: fully_specified_type IDENTIFIER LEFT_PAREN {\r
- if ($1.qualifier != EvqGlobal && $1.qualifier != EvqTemporary) {\r
- parseContext.error($2.line, "no qualifiers allowed for function return", getQualifierString($1.qualifier), "");\r
+ if ($1.qualifier.storage != EvqGlobal && $1.qualifier.storage != EvqTemporary) {\r
+ parseContext.error($2.line, "no qualifiers allowed for function return", \r
+ getStorageQualifierString($1.qualifier.storage), "");\r
parseContext.recover();\r
}\r
// make sure a sampler is not involved as well...\r
}\r
if (parseContext.reservedErrorCheck($2.line, *$2.string))\r
parseContext.recover();\r
+ \r
TParameter param = {$2.string, new TType($1)};\r
$$.line = $2.line;\r
$$.param = param;\r
//\r
: type_qualifier parameter_declarator {\r
$$ = $2;\r
+ if ($1.qualifier.precision != EpqNone)\r
+ $$.param.type->getQualifier().precision = $1.qualifier.precision;\r
\r
- if (parseContext.parameterSamplerErrorCheck($2.line, $1.qualifier, *$2.param.type))\r
+ if (parseContext.parameterSamplerErrorCheck($2.line, $1.qualifier.storage, *$$.param.type))\r
parseContext.recover();\r
- if (parseContext.paramErrorCheck($1.line, $1.qualifier, $$.param.type))\r
+ if (parseContext.paramErrorCheck($1.line, $1.qualifier.storage, $$.param.type))\r
parseContext.recover();\r
}\r
| parameter_declarator {\r
//\r
| type_qualifier parameter_type_specifier {\r
$$ = $2;\r
+ if ($1.qualifier.precision != EpqNone)\r
+ $$.param.type->getQualifier().precision = $1.qualifier.precision;\r
\r
- if (parseContext.parameterSamplerErrorCheck($2.line, $1.qualifier, *$2.param.type))\r
+ if (parseContext.parameterSamplerErrorCheck($2.line, $1.qualifier.storage, *$$.param.type))\r
parseContext.recover();\r
- if (parseContext.paramErrorCheck($1.line, $1.qualifier, $$.param.type))\r
+ if (parseContext.paramErrorCheck($1.line, $1.qualifier.storage, $$.param.type))\r
parseContext.recover();\r
}\r
| parameter_type_specifier {\r
$$ = $1;\r
\r
- if (parseContext.parameterSamplerErrorCheck($1.line, $1.qualifier, *$1.param.type))\r
+ if (parseContext.parameterSamplerErrorCheck($1.line, EvqIn, *$1.param.type))\r
parseContext.recover();\r
if (parseContext.paramErrorCheck($1.line, EvqTemporary, $$.param.type))\r
parseContext.recover();\r
$2.setArray(false);\r
}\r
\r
- if ($1.qualifier == EvqAttribute &&\r
+ if ($1.qualifier.storage == EvqAttribute &&\r
($2.type == EbtBool || $2.type == EbtInt)) {\r
- parseContext.error($2.line, "cannot be bool or int", getQualifierString($1.qualifier), "");\r
+ parseContext.error($2.line, "cannot be bool or int", getStorageQualifierString($1.qualifier.storage), "");\r
parseContext.recover();\r
}\r
- if (($1.qualifier == EvqVaryingIn || $1.qualifier == EvqVaryingOut) &&\r
+ if (($1.qualifier.storage == EvqVaryingIn || $1.qualifier.storage == EvqVaryingOut) &&\r
($2.type == EbtBool || $2.type == EbtInt)) {\r
- parseContext.error($2.line, "cannot be bool or int", getQualifierString($1.qualifier), "");\r
+ parseContext.error($2.line, "cannot be bool or int", getStorageQualifierString($1.qualifier.storage), "");\r
parseContext.recover();\r
}\r
$$ = $2;\r
$$.qualifier = $1.qualifier;\r
+ if ($$.qualifier.precision == EpqNone)\r
+ $$.qualifier.precision = $2.qualifier.precision;\r
}\r
;\r
\r
$$.type = $2.type;\r
}\r
\r
- if ($$.qualifier == EvqTemporary) {\r
- $$.qualifier = $2.qualifier;\r
- } else if ($$.qualifier == EvqIn && $2.qualifier == EvqOut ||\r
- $$.qualifier == EvqOut && $2.qualifier == EvqIn) {\r
- $$.qualifier = EvqInOut;\r
- } else if ($$.qualifier == EvqIn && $2.qualifier == EvqConst ||\r
- $$.qualifier == EvqConst && $2.qualifier == EvqIn) {\r
- $$.qualifier = EvqConstReadOnly;\r
+ if ($$.qualifier.storage == EvqTemporary) {\r
+ $$.qualifier.storage = $2.qualifier.storage;\r
+ } else if ($$.qualifier.storage == EvqIn && $2.qualifier.storage == EvqOut ||\r
+ $$.qualifier.storage == EvqOut && $2.qualifier.storage == EvqIn) {\r
+ $$.qualifier.storage = EvqInOut;\r
+ } else if ($$.qualifier.storage == EvqIn && $2.qualifier.storage == EvqConst ||\r
+ $$.qualifier.storage == EvqConst && $2.qualifier.storage == EvqIn) {\r
+ $$.qualifier.storage = EvqConstReadOnly;\r
}\r
+\r
+ if ($$.qualifier.precision == EpqNone)\r
+ $$.qualifier.precision = $2.qualifier.precision;\r
}\r
;\r
\r
\r
storage_qualifier\r
: CONST {\r
- $$.setBasic(EbtVoid, EvqConst, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqConst;\r
}\r
| ATTRIBUTE {\r
parseContext.requireStage($1.line, EShLangVertexMask, "attribute");\r
\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "attribute"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqAttribute, $1.line);\r
+\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqAttribute;\r
}\r
| VARYING {\r
parseContext.checkDeprecated($1.line, ENoProfile, 140, "varying");\r
\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "varying"))\r
parseContext.recover();\r
- if (parseContext.language == EShLangVertex)\r
- $$.setBasic(EbtVoid, EvqVaryingOut, $1.line);\r
+\r
+ $$.init($1.line);\r
+ if (parseContext.language == EShLangVertex) \r
+ $$.qualifier.storage = EvqVaryingOut;\r
else\r
- $$.setBasic(EbtVoid, EvqVaryingIn, $1.line);\r
+ $$.qualifier.storage = EvqVaryingIn;\r
}\r
| INOUT {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "out"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqInOut, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqInOut;\r
}\r
| IN {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "in"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqIn, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqIn;\r
}\r
| OUT {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "out"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqOut, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqOut;\r
}\r
| CENTROID {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "centroid"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqVaryingIn, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqVaryingIn;\r
}\r
| PATCH {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "patch"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| SAMPLE {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "sample"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| UNIFORM {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "uniform"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| BUFFER {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "buffer"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| SHARED {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "shared"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| COHERENT {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "coherent"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| VOLATILE {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "volatile"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| RESTRICT {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "restrict"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| READONLY {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "readonly"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| WRITEONLY {\r
// TODO: implement this qualifier\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "writeonly"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| SUBROUTINE {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "subroutine"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
}\r
| SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN {\r
if (parseContext.globalErrorCheck($1.line, parseContext.symbolTable.atGlobalLevel(), "subroutine"))\r
parseContext.recover();\r
- $$.setBasic(EbtVoid, EvqUniform, $1.line);\r
+ $$.init($1.line);\r
+ $$.qualifier.storage = EvqUniform;\r
// TODO: subroutine semantics\r
// 1) make sure each identifier is a type declared earlier with SUBROUTINE\r
// 2) save all of the identifiers for future comparison with the declared function\r
type_specifier\r
: type_specifier_nonarray {\r
$$ = $1;\r
+ $$.qualifier.precision = parseContext.defaultPrecision[$$.type];\r
}\r
| type_specifier_nonarray array_specifier {\r
$$ = $1;\r
+ $$.qualifier.precision = parseContext.defaultPrecision[$$.type];\r
$$.setArray(true, $2.intVector->front());\r
}\r
;\r
\r
type_specifier_nonarray\r
: VOID {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtVoid, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtVoid;\r
}\r
| FLOAT {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
}\r
| DOUBLE {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- // TODO: implement EbtDouble, check all float types\r
- $$.setBasic(EbtDouble, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
}\r
| INT {\r
- // TODO: implement EbtUint, check all int types\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
}\r
| UINT {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ // TODO: implement EbtUint, check all int types\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
}\r
| BOOL {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtBool, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtBool;\r
}\r
| VEC2 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(2);\r
}\r
| VEC3 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(3);\r
}\r
| VEC4 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4);\r
}\r
| DVEC2 {\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(2);\r
}\r
| DVEC3 {\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(3);\r
}\r
| DVEC4 {\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(4);\r
}\r
| BVEC2 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtBool, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtBool;\r
$$.setAggregate(2);\r
}\r
| BVEC3 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtBool, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtBool;\r
$$.setAggregate(3);\r
}\r
| BVEC4 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtBool, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtBool;\r
$$.setAggregate(4);\r
}\r
| IVEC2 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(2);\r
}\r
| IVEC3 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(3);\r
}\r
| IVEC4 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(4);\r
}\r
| UVEC2 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(2);\r
}\r
| UVEC3 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(3);\r
}\r
| UVEC4 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
$$.setAggregate(4);\r
}\r
| MAT2 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(2, true);\r
}\r
| MAT3 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(3, true);\r
}\r
| MAT4 {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| MAT2X2 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
+ $$.setAggregate(2, true);\r
}\r
| MAT2X3 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
+ $$.setAggregate(3, true);\r
}\r
| MAT2X4 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| MAT3X2 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
+ $$.setAggregate(3, true);\r
}\r
| MAT3X3 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
+ $$.setAggregate(3, true);\r
}\r
| MAT3X4 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| MAT4X2 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| MAT4X3 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| MAT4X4 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtFloat;\r
$$.setAggregate(4, true);\r
}\r
| DMAT2 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(2, true);\r
}\r
| DMAT3 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(3, true);\r
}\r
| DMAT4 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| DMAT2X2 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(2, true);\r
}\r
| DMAT2X3 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(3, true);\r
}\r
| DMAT2X4 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| DMAT3X2 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(3, true);\r
}\r
| DMAT3X3 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
- $$.setAggregate(4, true);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
+ $$.setAggregate(3, true);\r
}\r
| DMAT3X4 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| DMAT4X2 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| DMAT4X3 {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| DMAT4X4 {\r
- // TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtFloat, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtDouble;\r
$$.setAggregate(4, true);\r
}\r
| ATOMIC_UINT {\r
// TODO: add type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtInt, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtInt;\r
}\r
| SAMPLER1D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler1D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler1D;\r
}\r
| SAMPLER2D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| SAMPLER3D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler3D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler3D;\r
}\r
| SAMPLERCUBE {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSamplerCube, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSamplerCube;\r
}\r
| SAMPLER1DSHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler1DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler1DShadow;\r
}\r
| SAMPLER2DSHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLERCUBESHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLER1DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLER2DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLER1DARRAYSHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLER2DARRAYSHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLERCUBEARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLERCUBEARRAYSHADOW {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLER1D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLER2D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLER3D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLERCUBE {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLER1DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLER2DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| ISAMPLERCUBEARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLER1D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLER2D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLER3D {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLERCUBE {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLER1DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLER2DARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| USAMPLERCUBEARRAY {\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2DShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2DShadow;\r
}\r
| SAMPLER2DRECT {\r
parseContext.profileRequires($1.line, ENoProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");\r
\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSamplerRect, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSamplerRect;\r
}\r
| SAMPLER2DRECTSHADOW {\r
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");\r
\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSamplerRectShadow, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSamplerRectShadow;\r
}\r
| ISAMPLER2DRECT {\r
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");\r
\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSamplerRect, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSamplerRect;\r
}\r
| USAMPLER2DRECT {\r
parseContext.profileRequires($1.line, ECoreProfile, 140, "GL_ARB_texture_rectangle", "rectangle texture");\r
\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSamplerRect, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSamplerRect;\r
}\r
| SAMPLERBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| ISAMPLERBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| USAMPLERBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| SAMPLER2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| ISAMPLER2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| USAMPLER2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| SAMPLER2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| ISAMPLER2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| USAMPLER2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE1D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE1D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE1D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE2D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE2D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE2D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE3D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE3D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE3D {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE2DRECT {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE2DRECT {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE2DRECT {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGECUBE {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGECUBE {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGECUBE {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGEBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGEBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGEBUFFER {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE1DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE1DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE1DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE2DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE2DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE2DARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGECUBEARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGECUBEARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGECUBEARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE2DMS {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IMAGE2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| IIMAGE2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| UIMAGE2DMSARRAY {\r
// TODO: implement this type\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtSampler2D, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtSampler2D;\r
}\r
| struct_specifier {\r
$$ = $1;\r
- $$.qualifier = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
+ $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
}\r
| TYPE_NAME {\r
//\r
// type.\r
//\r
TType& structure = static_cast<TVariable*>($1.symbol)->getType();\r
- TQualifier qual = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;\r
- $$.setBasic(EbtStruct, qual, $1.line);\r
+ $$.init($1.line, parseContext.symbolTable.atGlobalLevel());\r
+ $$.type = EbtStruct;\r
$$.userDef = &structure;\r
}\r
;\r
precision_qualifier\r
: HIGH_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "highp precision qualifier");\r
+ $$.init($1.line);\r
+ $$.qualifier.precision = EpqHigh;\r
}\r
| MEDIUM_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "mediump precision qualifier");\r
+ $$.init($1.line);\r
+ $$.qualifier.precision = EpqMedium;\r
}\r
| LOW_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "lowp precision qualifier");\r
+ $$.init($1.line);\r
+ $$.qualifier.precision = EpqLow;\r
}\r
;\r
\r
parseContext.error($2.line, "redefinition", $2.string->c_str(), "struct");\r
parseContext.recover();\r
}\r
- $$.setBasic(EbtStruct, EvqTemporary, $1.line);\r
+ $$.init($1.line);\r
+ $$.type = EbtStruct;\r
$$.userDef = structure;\r
}\r
| STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE {\r
TType* structure = new TType($3, TString(""));\r
- $$.setBasic(EbtStruct, EvqTemporary, $1.line);\r
+ $$.init($1.line);\r
+ $$.type = EbtStruct;\r
$$.userDef = structure;\r
}\r
;\r
\r
compound_statement\r
: LEFT_BRACE RIGHT_BRACE { $$ = 0; }\r
- | LEFT_BRACE { parseContext.symbolTable.push(); } statement_list { parseContext.symbolTable.pop(); } RIGHT_BRACE {\r
+ | LEFT_BRACE { parseContext.symbolTable.push(); } \r
+ statement_list { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); } \r
+ RIGHT_BRACE {\r
if ($3 != 0)\r
$3->setOperator(EOpSequence);\r
$$ = $3;\r
;\r
\r
iteration_statement\r
- : WHILE LEFT_PAREN { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; } condition RIGHT_PAREN statement_no_new_scope {\r
- parseContext.symbolTable.pop();\r
+ : WHILE LEFT_PAREN { \r
+ parseContext.symbolTable.push(); \r
+ ++parseContext.loopNestingLevel; \r
+ }\r
+ condition RIGHT_PAREN statement_no_new_scope {\r
+ parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);\r
$$ = parseContext.intermediate.addLoop($6, $4, 0, true, $1.line);\r
--parseContext.loopNestingLevel;\r
}\r
$$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.line);\r
--parseContext.loopNestingLevel;\r
}\r
- | FOR LEFT_PAREN { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; } for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope {\r
- parseContext.symbolTable.pop();\r
+ | FOR LEFT_PAREN { \r
+ parseContext.symbolTable.push();\r
+ ++parseContext.loopNestingLevel; \r
+ } \r
+ for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope {\r
+ parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);\r
$$ = parseContext.intermediate.makeAggregate($4, $2.line);\r
$$ = parseContext.intermediate.growAggregate(\r
$$,\r
parseContext.error($1.line, "function does not return a value:", "", $1.function->getName().c_str());\r
parseContext.recover();\r
}\r
- parseContext.symbolTable.pop();\r
+ parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);\r
$$ = parseContext.intermediate.growAggregate($1.intermAggregate, $3, 0);\r
parseContext.intermediate.setAggregateOperator($$, EOpFunction, $1.line);\r
$$->getAsAggregate()->setName($1.function->getMangledName().c_str());\r