1b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas/* 2b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas * Copyright 2016 Google Inc. 3b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas * 4b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas * Use of this source code is governed by a BSD-style license that can be 5b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas * found in the LICENSE file. 6b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas */ 7b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 8b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas#ifndef SKSL_ASTSUFFIXEXPRESSION 9b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas#define SKSL_ASTSUFFIXEXPRESSION 10b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 11b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas#include "SkSLASTSuffix.h" 12b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas#include "SkSLASTExpression.h" 13b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 14b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholasnamespace SkSL { 15b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 16b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas/** 17b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas * An expression with an associated suffix. 18b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas */ 19b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholasstruct ASTSuffixExpression : public ASTExpression { 20b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas ASTSuffixExpression(std::unique_ptr<ASTExpression> base, std::unique_ptr<ASTSuffix> suffix) 21b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas : INHERITED(base->fPosition, kSuffix_Kind) 22b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas , fBase(std::move(base)) 23b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas , fSuffix(std::move(suffix)) {} 24b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 259e1138d56665d13641f8805cd72ae81adc255f79Ethan Nicholas SkString description() const override { 26b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas return fBase->description() + fSuffix->description(); 27b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas } 28b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 29b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas const std::unique_ptr<ASTExpression> fBase; 30b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas const std::unique_ptr<ASTSuffix> fSuffix; 31b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 32b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas typedef ASTExpression INHERITED; 33b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas}; 34b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 35b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas} // namespace 36b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas 37b3058bdb1049ca75d526eb9f11e1a42a49e63585ethannicholas#endif 38