Line data Source code
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 0 : struct IfStatement : public Statement {
20 0 : IfStatement(Position position, std::unique_ptr<Expression> test,
21 : std::unique_ptr<Statement> ifTrue, std::unique_ptr<Statement> ifFalse)
22 0 : : INHERITED(position, kIf_Kind)
23 0 : , fTest(std::move(test))
24 0 : , fIfTrue(std::move(ifTrue))
25 0 : , fIfFalse(std::move(ifFalse)) {}
26 :
27 0 : String description() const override {
28 0 : String result = "if (" + fTest->description() + ") " + fIfTrue->description();
29 0 : if (fIfFalse) {
30 0 : result += " else " + fIfFalse->description();
31 : }
32 0 : 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
|