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_FUNCTIONDEFINITION 9 #define SKSL_FUNCTIONDEFINITION 10 11 #include "SkSLBlock.h" 12 #include "SkSLFunctionDeclaration.h" 13 #include "SkSLProgramElement.h" 14 15 namespace SkSL { 16 17 /** 18 * A function definition (a declaration plus an associated block of code). 19 */ 20 struct FunctionDefinition : public ProgramElement { FunctionDefinitionFunctionDefinition21 FunctionDefinition(Position position, const FunctionDeclaration& declaration, 22 std::unique_ptr<Block> body) 23 : INHERITED(position, kFunction_Kind) 24 , fDeclaration(declaration) 25 , fBody(std::move(body)) {} 26 descriptionFunctionDefinition27 std::string description() const override { 28 return fDeclaration.description() + " " + fBody->description(); 29 } 30 31 const FunctionDeclaration& fDeclaration; 32 const std::unique_ptr<Block> fBody; 33 34 typedef ProgramElement INHERITED; 35 }; 36 37 } // namespace 38 39 #endif 40