/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKSL_ASTSUFFIX #define SKSL_ASTSUFFIX #include "SkSLASTPositionNode.h" #include "SkSLASTExpression.h" namespace SkSL { /** * This and its subclasses represents expression suffixes, such as '[0]' or '.rgb'. Suffixes are not * expressions in and of themselves; they are attached to expressions to modify them. */ struct ASTSuffix : public ASTPositionNode { enum Kind { kIndex_Kind, kCall_Kind, kField_Kind, kPostIncrement_Kind, kPostDecrement_Kind }; ASTSuffix(Position position, Kind kind) : INHERITED(position) , fKind(kind) {} SkString description() const override { switch (fKind) { case kPostIncrement_Kind: return SkString("++"); case kPostDecrement_Kind: return SkString("--"); default: ABORT("unsupported suffix operator"); } } Kind fKind; typedef ASTPositionNode INHERITED; }; } // namespace #endif