refactored SkSL VarDeclaration handling
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2312233002
Review-Url: https://codereview.chromium.org/2312233002
diff --git a/src/sksl/SkSLGLSLCodeGenerator.cpp b/src/sksl/SkSLGLSLCodeGenerator.cpp
index 20a39cf..da0bcb9 100644
--- a/src/sksl/SkSLGLSLCodeGenerator.cpp
+++ b/src/sksl/SkSLGLSLCodeGenerator.cpp
@@ -313,24 +313,24 @@
this->writeLine("};");
}
-void GLSLCodeGenerator::writeVarDeclaration(const VarDeclaration& decl) {
+void GLSLCodeGenerator::writeVarDeclarations(const VarDeclarations& decl) {
ASSERT(decl.fVars.size() > 0);
- this->writeModifiers(decl.fVars[0]->fModifiers);
+ this->writeModifiers(decl.fVars[0].fVar->fModifiers);
this->writeType(decl.fBaseType);
std::string separator = " ";
- for (size_t i = 0; i < decl.fVars.size(); i++) {
- ASSERT(decl.fVars[i]->fModifiers == decl.fVars[0]->fModifiers);
+ for (const auto& var : decl.fVars) {
+ ASSERT(var.fVar->fModifiers == decl.fVars[0].fVar->fModifiers);
this->write(separator);
separator = ", ";
- this->write(decl.fVars[i]->fName);
- for (const auto& size : decl.fSizes[i]) {
+ this->write(var.fVar->fName);
+ for (const auto& size : var.fSizes) {
this->write("[");
this->writeExpression(*size, kTopLevel_Precedence);
this->write("]");
}
- if (decl.fValues[i]) {
+ if (var.fValue) {
this->write(" = ");
- this->writeExpression(*decl.fValues[i], kTopLevel_Precedence);
+ this->writeExpression(*var.fValue, kTopLevel_Precedence);
}
}
this->write(";");
@@ -348,8 +348,8 @@
case Statement::kReturn_Kind:
this->writeReturnStatement((ReturnStatement&) s);
break;
- case Statement::kVarDeclaration_Kind:
- this->writeVarDeclaration(*((VarDeclarationStatement&) s).fDeclaration);
+ case Statement::kVarDeclarations_Kind:
+ this->writeVarDeclarations(*((VarDeclarationsStatement&) s).fDeclaration);
break;
case Statement::kIf_Kind:
this->writeIfStatement((IfStatement&) s);
@@ -455,9 +455,10 @@
this->writeExtension((Extension&) *e);
break;
case ProgramElement::kVar_Kind: {
- VarDeclaration& decl = (VarDeclaration&) *e;
- if (decl.fVars.size() > 0 && decl.fVars[0]->fModifiers.fLayout.fBuiltin == -1) {
- this->writeVarDeclaration(decl);
+ VarDeclarations& decl = (VarDeclarations&) *e;
+ if (decl.fVars.size() > 0 &&
+ decl.fVars[0].fVar->fModifiers.fLayout.fBuiltin == -1) {
+ this->writeVarDeclarations(decl);
this->writeLine();
}
break;