MCPcopy Create free account
hub / github.com/KhronosGroup/glslang / structTypeCheck

Method structTypeCheck

glslang/MachineIndependent/ParseHelper.cpp:6469–6491  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6467}
6468
6469void TParseContext::structTypeCheck(const TSourceLoc& /*loc*/, TPublicType& publicType)
6470{
6471 const TTypeList& typeList = *publicType.userDef->getStruct();
6472
6473 // fix and check for member storage qualifiers and types that don't belong within a structure
6474 for (unsigned int member = 0; member < typeList.size(); ++member) {
6475 TQualifier& memberQualifier = typeList[member].type->getQualifier();
6476 const TSourceLoc& memberLoc = typeList[member].loc;
6477 if (memberQualifier.isAuxiliary() ||
6478 memberQualifier.isInterpolation() ||
6479 (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal &&
6480 !memberQualifier.layoutDescriptorHeap && !memberQualifier.layoutDescriptorInnerBlock))
6481 error(memberLoc, "cannot use storage or interpolation qualifiers on structure members", typeList[member].type->getFieldName().c_str(), "");
6482 if (memberQualifier.isMemory())
6483 error(memberLoc, "cannot use memory qualifiers on structure members", typeList[member].type->getFieldName().c_str(), "");
6484 if (memberQualifier.hasLayout()) {
6485 error(memberLoc, "cannot use layout qualifiers on structure members", typeList[member].type->getFieldName().c_str(), "");
6486 memberQualifier.clearLayout();
6487 }
6488 if (memberQualifier.invariant)
6489 error(memberLoc, "cannot use invariant qualifier on structure members", typeList[member].type->getFieldName().c_str(), "");
6490 }
6491}
6492
6493//
6494// See if this loop satisfies the limitations for ES 2.0 (version 100) for loops in Appendex A:

Callers 1

yyparseFunction · 0.80

Calls 9

errorFunction · 0.85
getStructMethod · 0.80
isAuxiliaryMethod · 0.80
isInterpolationMethod · 0.80
c_strMethod · 0.80
isMemoryMethod · 0.80
hasLayoutMethod · 0.80
clearLayoutMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected