@@ -113,7 +113,7 @@ void CPPCodeGenerator::writeBinaryExpression(const BinaryExpression& b,
113113void CPPCodeGenerator::writeIndexExpression (const IndexExpression& i) {
114114 const Expression& base = *i.fBase ;
115115 if (base.fKind == Expression::kVariableReference_Kind ) {
116- int builtin = ((VariableReference&) base).fVariable .fModifiers .fLayout .fBuiltin ;
116+ int builtin = base. as <VariableReference>( ).fVariable .fModifiers .fLayout .fBuiltin ;
117117 if (SK_TEXTURESAMPLERS_BUILTIN == builtin) {
118118 this ->write (" %s" );
119119 if (i.fIndex ->fKind != Expression::kIntLiteral_Kind ) {
@@ -385,7 +385,7 @@ void CPPCodeGenerator::writeFieldAccess(const FieldAccess& access) {
385385 }
386386
387387 const Type::Field& field = fContext .fFragmentProcessor_Type ->fields ()[access.fFieldIndex ];
388- const Variable& var = (( const VariableReference&) * access.fBase ).fVariable ;
388+ const Variable& var = access.fBase -> as <VariableReference>( ).fVariable ;
389389 String cppAccess = String::printf (" _outer.childProcessor(%d)->%s()" ,
390390 this ->getChildFPIndex (var),
391391 String (field.fName ).c_str ());
@@ -405,9 +405,9 @@ int CPPCodeGenerator::getChildFPIndex(const Variable& var) const {
405405 bool found = false ;
406406 for (const auto & p : fProgram ) {
407407 if (ProgramElement::kVar_Kind == p.fKind ) {
408- const VarDeclarations& decls = ( const VarDeclarations&) p ;
408+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
409409 for (const auto & raw : decls.fVars ) {
410- const VarDeclaration& decl = ( VarDeclaration&) *raw ;
410+ const VarDeclaration& decl = raw-> as < VarDeclaration>() ;
411411 if (decl.fVar == &var) {
412412 found = true ;
413413 } else if (decl.fVar ->fType .nonnullable () == *fContext .fFragmentProcessor_Type ) {
@@ -439,7 +439,7 @@ void CPPCodeGenerator::writeFunctionCall(const FunctionCall& c) {
439439 " sample()'s fragmentProcessor argument must be a variable reference\n " );
440440 return ;
441441 }
442- const Variable& child = (( const VariableReference&) * c.fArguments [0 ]).fVariable ;
442+ const Variable& child = c.fArguments [0 ]-> as <VariableReference>( ).fVariable ;
443443
444444 // Start a new extra emit code section so that the emitted child processor can depend on
445445 // sksl variables defined in earlier sksl code.
@@ -508,7 +508,7 @@ void CPPCodeGenerator::writeFunctionCall(const FunctionCall& c) {
508508 this ->write (" .%s" );
509509 SkASSERT (c.fArguments .size () >= 1 );
510510 SkASSERT (c.fArguments [0 ]->fKind == Expression::kVariableReference_Kind );
511- String sampler = this ->getSamplerHandle (((VariableReference&) * c.fArguments [0 ]).fVariable );
511+ String sampler = this ->getSamplerHandle (c.fArguments [0 ]-> as <VariableReference>( ).fVariable );
512512 fFormatArgs .push_back (" fragBuilder->getProgramBuilder()->samplerSwizzle(" + sampler +
513513 " ).asString().c_str()" );
514514 }
@@ -595,7 +595,7 @@ void CPPCodeGenerator::writeFunction(const FunctionDefinition& f) {
595595 fOut = &buffer;
596596 if (decl.fName == " main" ) {
597597 fInMain = true ;
598- for (const auto & s : ((Block&) * f.fBody ).fStatements ) {
598+ for (const auto & s : f.fBody -> as <Block>( ).fStatements ) {
599599 this ->writeStatement (*s);
600600 this ->writeLine ();
601601 }
@@ -615,7 +615,7 @@ void CPPCodeGenerator::writeFunction(const FunctionDefinition& f) {
615615 }
616616 args += " };" ;
617617 this ->addExtraEmitCodeLine (args.c_str ());
618- for (const auto & s : ((Block&) * f.fBody ).fStatements ) {
618+ for (const auto & s : f.fBody -> as <Block>( ).fStatements ) {
619619 this ->writeStatement (*s);
620620 this ->writeLine ();
621621 }
@@ -650,11 +650,11 @@ void CPPCodeGenerator::writeProgramElement(const ProgramElement& p) {
650650 return ;
651651 }
652652 if (p.fKind == ProgramElement::kVar_Kind ) {
653- const VarDeclarations& decls = ( const VarDeclarations&) p ;
653+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
654654 if (!decls.fVars .size ()) {
655655 return ;
656656 }
657- const Variable& var = *((VarDeclaration&) * decls.fVars [0 ]).fVar ;
657+ const Variable& var = *decls.fVars [0 ]-> as <VarDeclaration>( ).fVar ;
658658 if (var.fModifiers .fFlags & (Modifiers::kIn_Flag | Modifiers::kUniform_Flag ) ||
659659 -1 != var.fModifiers .fLayout .fBuiltin ) {
660660 return ;
@@ -686,9 +686,9 @@ void CPPCodeGenerator::writeInputVars() {
686686void CPPCodeGenerator::writePrivateVars () {
687687 for (const auto & p : fProgram ) {
688688 if (ProgramElement::kVar_Kind == p.fKind ) {
689- const VarDeclarations& decls = ( const VarDeclarations&) p ;
689+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
690690 for (const auto & raw : decls.fVars ) {
691- VarDeclaration& decl = ( VarDeclaration&) *raw ;
691+ VarDeclaration& decl = raw-> as < VarDeclaration>() ;
692692 if (is_private (*decl.fVar )) {
693693 if (decl.fVar ->fType == *fContext .fFragmentProcessor_Type ) {
694694 fErrors .error (decl.fOffset ,
@@ -726,9 +726,9 @@ void CPPCodeGenerator::writePrivateVars() {
726726void CPPCodeGenerator::writePrivateVarValues () {
727727 for (const auto & p : fProgram ) {
728728 if (ProgramElement::kVar_Kind == p.fKind ) {
729- const VarDeclarations& decls = ( const VarDeclarations&) p ;
729+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
730730 for (const auto & raw : decls.fVars ) {
731- VarDeclaration& decl = ( VarDeclaration&) *raw ;
731+ VarDeclaration& decl = raw-> as < VarDeclaration>() ;
732732 if (is_private (*decl.fVar ) && decl.fValue ) {
733733 this ->writef (" %s = " , String (decl.fVar ->fName ).c_str ());
734734 fCPPMode = true ;
@@ -943,9 +943,9 @@ bool CPPCodeGenerator::writeEmitCode(std::vector<const Variable*>& uniforms) {
943943 fFullName .c_str (), fFullName .c_str ());
944944 for (const auto & p : fProgram ) {
945945 if (ProgramElement::kVar_Kind == p.fKind ) {
946- const VarDeclarations& decls = ( const VarDeclarations&) p ;
946+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
947947 for (const auto & raw : decls.fVars ) {
948- VarDeclaration& decl = ( VarDeclaration&) *raw ;
948+ VarDeclaration& decl = raw-> as < VarDeclaration>() ;
949949 String nameString (decl.fVar ->fName );
950950 const char * name = nameString.c_str ();
951951 if (SectionAndParameterHelper::IsParameter (*decl.fVar ) &&
@@ -1059,9 +1059,9 @@ void CPPCodeGenerator::writeSetData(std::vector<const Variable*>& uniforms) {
10591059 int samplerIndex = 0 ;
10601060 for (const auto & p : fProgram ) {
10611061 if (ProgramElement::kVar_Kind == p.fKind ) {
1062- const VarDeclarations& decls = ( const VarDeclarations&) p ;
1062+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
10631063 for (const std::unique_ptr<Statement>& raw : decls.fVars ) {
1064- const VarDeclaration& decl = static_cast <VarDeclaration&>(*raw );
1064+ const VarDeclaration& decl = raw-> as <VarDeclaration>( );
10651065 const Variable& variable = *decl.fVar ;
10661066 String nameString (variable.fName );
10671067 const char * name = nameString.c_str ();
@@ -1233,9 +1233,9 @@ void CPPCodeGenerator::writeGetKey() {
12331233 fFullName .c_str ());
12341234 for (const auto & p : fProgram ) {
12351235 if (ProgramElement::kVar_Kind == p.fKind ) {
1236- const VarDeclarations& decls = ( const VarDeclarations&) p ;
1236+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
12371237 for (const auto & raw : decls.fVars ) {
1238- const VarDeclaration& decl = ( VarDeclaration&) *raw ;
1238+ const VarDeclaration& decl = raw-> as < VarDeclaration>() ;
12391239 const Variable& var = *decl.fVar ;
12401240 String nameString (var.fName );
12411241 const char * name = nameString.c_str ();
@@ -1311,9 +1311,9 @@ bool CPPCodeGenerator::generateCode() {
13111311 std::vector<const Variable*> uniforms;
13121312 for (const auto & p : fProgram ) {
13131313 if (ProgramElement::kVar_Kind == p.fKind ) {
1314- const VarDeclarations& decls = ( const VarDeclarations&) p ;
1314+ const VarDeclarations& decls = p. as < VarDeclarations>() ;
13151315 for (const auto & raw : decls.fVars ) {
1316- VarDeclaration& decl = ( VarDeclaration&) *raw ;
1316+ VarDeclaration& decl = raw-> as < VarDeclaration>() ;
13171317 if ((decl.fVar ->fModifiers .fFlags & Modifiers::kUniform_Flag ) &&
13181318 decl.fVar ->fType .kind () != Type::kSampler_Kind ) {
13191319 uniforms.push_back (decl.fVar );
0 commit comments