Home | History | Annotate | Download | only in ast
      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         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