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_IFSTATEMENT
9 #define SKSL_IFSTATEMENT
10 
11 #include "SkSLExpression.h"
12 #include "SkSLStatement.h"
13 
14 namespace SkSL {
15 
16 /**
17  * An 'if' statement.
18  */
19 struct IfStatement : public Statement {
IfStatementIfStatement20     IfStatement(Position position, std::unique_ptr<Expression> test,
21                 std::unique_ptr<Statement> ifTrue, std::unique_ptr<Statement> ifFalse)
22     : INHERITED(position, kIf_Kind)
23     , fTest(std::move(test))
24     , fIfTrue(std::move(ifTrue))
25     , fIfFalse(std::move(ifFalse)) {}
26 
descriptionIfStatement27     SkString description() const override {
28         SkString result = "if (" + fTest->description() + ") " + fIfTrue->description();
29         if (fIfFalse) {
30             result += " else " + fIfFalse->description();
31         }
32         return result;
33     }
34 
35     std::unique_ptr<Expression> fTest;
36     const std::unique_ptr<Statement> fIfTrue;
37     const std::unique_ptr<Statement> fIfFalse;
38 
39     typedef Statement INHERITED;
40 };
41 
42 } // namespace
43 
44 #endif
45