/* * 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_POSTFIXEXPRESSION #define SKSL_POSTFIXEXPRESSION #include "SkSLExpression.h" #include "SkSLLexer.h" namespace SkSL { /** * An expression modified by a unary operator appearing after it, such as 'i++'. */ struct PostfixExpression : public Expression { PostfixExpression(std::unique_ptr operand, Token::Kind op) : INHERITED(operand->fOffset, kPostfix_Kind, operand->fType) , fOperand(std::move(operand)) , fOperator(op) {} bool hasSideEffects() const override { return true; } std::unique_ptr clone() const override { return std::unique_ptr(new PostfixExpression(fOperand->clone(), fOperator)); } String description() const override { return fOperand->description() + Compiler::OperatorName(fOperator); } std::unique_ptr fOperand; const Token::Kind fOperator; typedef Expression INHERITED; }; } // namespace #endif