/* * 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_RETURNSTATEMENT #define SKSL_RETURNSTATEMENT #include "SkSLExpression.h" #include "SkSLStatement.h" namespace SkSL { /** * A 'return' statement. */ struct ReturnStatement : public Statement { ReturnStatement(int offset) : INHERITED(offset, kReturn_Kind) {} ReturnStatement(std::unique_ptr expression) : INHERITED(expression->fOffset, kReturn_Kind) , fExpression(std::move(expression)) {} std::unique_ptr clone() const override { if (fExpression) { return std::unique_ptr(new ReturnStatement(fExpression->clone())); } return std::unique_ptr(new ReturnStatement(fOffset)); } String description() const override { if (fExpression) { return "return " + fExpression->description() + ";"; } else { return String("return;"); } } std::unique_ptr fExpression; typedef Statement INHERITED; }; } // namespace #endif