1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SKSL_ASTBLOCK 9 #define SKSL_ASTBLOCK 10 11 #include "SkSLASTStatement.h" 12 13 namespace SkSL { 14 15 /** 16 * Represents a curly-braced block of statements. 17 */ 18 struct ASTBlock : public ASTStatement { ASTBlockASTBlock19 ASTBlock(Position position, std::vector<std::unique_ptr<ASTStatement>> statements) 20 : INHERITED(position, kBlock_Kind) 21 , fStatements(std::move(statements)) {} 22 descriptionASTBlock23 String description() const override { 24 String result("{"); 25 for (size_t i = 0; i < fStatements.size(); i++) { 26 result += "\n"; 27 result += fStatements[i]->description(); 28 } 29 result += "\n}\n"; 30 return result; 31 } 32 33 const std::vector<std::unique_ptr<ASTStatement>> fStatements; 34 35 typedef ASTStatement INHERITED; 36 }; 37 38 } // namespace 39 40 #endif 41