Home | History | Annotate | Download | only in ir
      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_WHILESTATEMENT
      9 #define SKSL_WHILESTATEMENT
     10 
     11 #include "SkSLExpression.h"
     12 #include "SkSLStatement.h"
     13 
     14 namespace SkSL {
     15 
     16 /**
     17  * A 'while' loop.
     18  */
     19 struct WhileStatement : public Statement {
     20     WhileStatement(int offset, std::unique_ptr<Expression> test,
     21                    std::unique_ptr<Statement> statement)
     22     : INHERITED(offset, kWhile_Kind)
     23     , fTest(std::move(test))
     24     , fStatement(std::move(statement)) {}
     25 
     26     std::unique_ptr<Statement> clone() const override {
     27         return std::unique_ptr<Statement>(new WhileStatement(fOffset, fTest->clone(),
     28                                                              fStatement->clone()));
     29     }
     30 
     31     String description() const override {
     32         return "while (" + fTest->description() + ") " + fStatement->description();
     33     }
     34 
     35     std::unique_ptr<Expression> fTest;
     36     std::unique_ptr<Statement> fStatement;
     37 
     38     typedef Statement INHERITED;
     39 };
     40 
     41 } // namespace
     42 
     43 #endif
     44