OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef SKSL_FUNCTIONDEFINITION | 8 #ifndef SKSL_FUNCTIONDEFINITION |
9 #define SKSL_FUNCTIONDEFINITION | 9 #define SKSL_FUNCTIONDEFINITION |
10 | 10 |
11 #include "SkSLBlock.h" | 11 #include "SkSLBlock.h" |
12 #include "SkSLFunctionDeclaration.h" | 12 #include "SkSLFunctionDeclaration.h" |
13 #include "SkSLProgramElement.h" | 13 #include "SkSLProgramElement.h" |
14 | 14 |
15 namespace SkSL { | 15 namespace SkSL { |
16 | 16 |
17 /** | 17 /** |
18 * A function definition (a declaration plus an associated block of code). | 18 * A function definition (a declaration plus an associated block of code). |
19 */ | 19 */ |
20 struct FunctionDefinition : public ProgramElement { | 20 struct FunctionDefinition : public ProgramElement { |
21 FunctionDefinition(Position position, std::shared_ptr<FunctionDeclaration> d
eclaration, | 21 FunctionDefinition(Position position, const FunctionDeclaration& declaration
, |
22 std::unique_ptr<Block> body) | 22 std::unique_ptr<Block> body) |
23 : INHERITED(position, kFunction_Kind) | 23 : INHERITED(position, kFunction_Kind) |
24 , fDeclaration(std::move(declaration)) | 24 , fDeclaration(declaration) |
25 , fBody(std::move(body)) {} | 25 , fBody(std::move(body)) {} |
26 | 26 |
27 std::string description() const override { | 27 std::string description() const override { |
28 return fDeclaration->description() + " " + fBody->description(); | 28 return fDeclaration.description() + " " + fBody->description(); |
29 } | 29 } |
30 | 30 |
31 const std::shared_ptr<FunctionDeclaration> fDeclaration; | 31 const FunctionDeclaration& fDeclaration; |
32 const std::unique_ptr<Block> fBody; | 32 const std::unique_ptr<Block> fBody; |
33 | 33 |
34 typedef ProgramElement INHERITED; | 34 typedef ProgramElement INHERITED; |
35 }; | 35 }; |
36 | 36 |
37 } // namespace | 37 } // namespace |
38 | 38 |
39 #endif | 39 #endif |
OLD | NEW |