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
15namespace SkSL {
16
17/**
18 * Abstract supertype of all statements.
19 */
20struct 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    ASTStatement(int offset, Kind kind)
37    : INHERITED(offset)
38    , fKind(kind) {}
39
40    Kind fKind;
41
42    typedef ASTPositionNode INHERITED;
43};
44
45} // namespace
46
47#endif
48