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_ASTSTATEMENT
9 #define SKSL_ASTSTATEMENT
10 
11 #include <vector>
12 #include "SkSLASTPositionNode.h"
13 #include "SkSLASTExpression.h"
14 
15 namespace SkSL {
16 
17 /**
18  * Abstract supertype of all statements.
19  */
20 struct ASTStatement : public ASTPositionNode {
21     enum Kind {
22         kBlock_Kind,
23         kVarDeclaration_Kind,
24         kExpression_Kind,
25         kIf_Kind,
26         kFor_Kind,
27         kWhile_Kind,
28         kDo_Kind,
29         kReturn_Kind,
30         kBreak_Kind,
31         kContinue_Kind,
32         kDiscard_Kind
33     };
34 
ASTStatementASTStatement35     ASTStatement(Position position, Kind kind)
36     : INHERITED(position)
37     , fKind(kind) {}
38 
39     Kind fKind;
40 
41     typedef ASTPositionNode INHERITED;
42 };
43 
44 } // namespace
45 
46 #endif
47