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_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 0 : 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 : kSwitch_Kind,
30 : kReturn_Kind,
31 : kBreak_Kind,
32 : kContinue_Kind,
33 : kDiscard_Kind
34 : };
35 :
36 0 : ASTStatement(Position position, Kind kind)
37 0 : : INHERITED(position)
38 0 : , fKind(kind) {}
39 :
40 : Kind fKind;
41 :
42 : typedef ASTPositionNode INHERITED;
43 : };
44 :
45 : } // namespace
46 :
47 : #endif
|