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_STATEMENT
9#define SKSL_STATEMENT
10
11#include "SkSLIRNode.h"
12#include "SkSLType.h"
13
14namespace SkSL {
15
16/**
17 * Abstract supertype of all statements.
18 */
19struct Statement : public IRNode {
20    enum Kind {
21        kBlock_Kind,
22        kBreak_Kind,
23        kContinue_Kind,
24        kDiscard_Kind,
25        kDo_Kind,
26        kExpression_Kind,
27        kFor_Kind,
28        kGroup_Kind,
29        kIf_Kind,
30        kNop_Kind,
31        kReturn_Kind,
32        kSwitch_Kind,
33        kVarDeclaration_Kind,
34        kVarDeclarations_Kind,
35        kWhile_Kind
36    };
37
38    Statement(int offset, Kind kind)
39    : INHERITED(offset)
40    , fKind(kind) {}
41
42    virtual bool isEmpty() const {
43        return false;
44    }
45
46    const Kind fKind;
47
48    typedef IRNode INHERITED;
49};
50
51} // namespace
52
53#endif
54