Home | History | Annotate | Download | only in ast
      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 {
     19     ASTBlock(Position position, std::vector<std::unique_ptr<ASTStatement>> statements)
     20     : INHERITED(position, kBlock_Kind)
     21     , fStatements(std::move(statements)) {}
     22 
     23     SkString description() const override {
     24         SkString 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