33#include < yaml-cpp/yaml.h>
44#include " substrait/function/Extension.h"
55
6- bool decodeFunctionVariant (
6+ bool decodeFunctionImpl (
77 const YAML::Node& node,
88 substrait::FunctionImplementation& function) {
99 const auto & returnType = node[" return" ];
@@ -103,7 +103,7 @@ struct YAML::convert<substrait::ScalarFunctionImplementation> {
103103 static bool decode (
104104 const Node& node,
105105 substrait::ScalarFunctionImplementation& function) {
106- return decodeFunctionVariant (node, function);
106+ return decodeFunctionImpl (node, function);
107107 };
108108};
109109
@@ -112,7 +112,7 @@ struct YAML::convert<substrait::AggregateFunctionImplementation> {
112112 static bool decode (
113113 const Node& node,
114114 substrait::AggregateFunctionImplementation& function) {
115- const auto & res = decodeFunctionVariant (node, function);
115+ const auto & res = decodeFunctionImpl (node, function);
116116 if (res) {
117117 const auto & intermediate = node[" intermediate" ];
118118 if (intermediate) {
@@ -178,13 +178,14 @@ std::shared_ptr<Extension> Extension::load(
178178 if (scalarFunctions && scalarFunctions.IsSequence ()) {
179179 for (auto & scalarFunctionNode : scalarFunctions) {
180180 const auto functionName = scalarFunctionNode[" name" ].as <std::string>();
181- for (auto & scalaFunctionVariantNode : scalarFunctionNode[" impls" ]) {
182- auto scalarFunctionVariant =
183- scalaFunctionVariantNode.as <ScalarFunctionImplementation>();
184- scalarFunctionVariant.name = functionName;
185- scalarFunctionVariant.uri = extensionUri;
186- extension->addScalarFunctionVariant (
187- std::make_shared<ScalarFunctionImplementation>(scalarFunctionVariant));
181+ for (auto & scalaFunctionImplNode : scalarFunctionNode[" impls" ]) {
182+ auto scalarFunctionImpl =
183+ scalaFunctionImplNode.as <ScalarFunctionImplementation>();
184+ scalarFunctionImpl.name = functionName;
185+ scalarFunctionImpl.uri = extensionUri;
186+ extension->addScalarFunctionImpl (
187+ std::make_shared<ScalarFunctionImplementation>(
188+ scalarFunctionImpl));
188189 }
189190 }
190191 }
@@ -194,15 +195,15 @@ std::shared_ptr<Extension> Extension::load(
194195 for (auto & aggregateFunctionNode : aggregateFunctions) {
195196 const auto functionName =
196197 aggregateFunctionNode[" name" ].as <std::string>();
197- for (auto & aggregateFunctionVariantNode :
198+ for (auto & aggregateFunctionImplNode :
198199 aggregateFunctionNode[" impls" ]) {
199- auto aggregateFunctionVariant =
200- aggregateFunctionVariantNode .as <AggregateFunctionImplementation>();
201- aggregateFunctionVariant .name = functionName;
202- aggregateFunctionVariant .uri = extensionUri;
203- extension->addAggregateFunctionVariant (
200+ auto aggregateFunctionImpl =
201+ aggregateFunctionImplNode .as <AggregateFunctionImplementation>();
202+ aggregateFunctionImpl .name = functionName;
203+ aggregateFunctionImpl .uri = extensionUri;
204+ extension->addAggregateFunctionImpl (
204205 std::make_shared<AggregateFunctionImplementation>(
205- aggregateFunctionVariant ));
206+ aggregateFunctionImpl ));
206207 }
207208 }
208209 }
@@ -219,23 +220,23 @@ std::shared_ptr<Extension> Extension::load(
219220 return extension;
220221}
221222
222- void Extension::addWindowFunctionVariant (
223- const FunctionImplementationPtr& functionVariant ) {
224- const auto & functionVariants =
225- windowFunctionVariantMap_ .find (functionVariant ->name );
226- if (functionVariants != windowFunctionVariantMap_ .end ()) {
227- auto & variants = functionVariants ->second ;
228- variants .emplace_back (functionVariant );
223+ void Extension::addWindowFunctionImpl (
224+ const FunctionImplementationPtr& functionImpl ) {
225+ const auto & functionImpls =
226+ windowFunctionImplMap_ .find (functionImpl ->name );
227+ if (functionImpls != windowFunctionImplMap_ .end ()) {
228+ auto & impls = functionImpls ->second ;
229+ impls .emplace_back (functionImpl );
229230 } else {
230- std::vector<FunctionImplementationPtr> variants ;
231- variants .emplace_back (functionVariant );
232- windowFunctionVariantMap_ .insert (
233- {functionVariant ->name , std::move (variants )});
231+ std::vector<FunctionImplementationPtr> impls ;
232+ impls .emplace_back (functionImpl );
233+ windowFunctionImplMap_ .insert (
234+ {functionImpl ->name , std::move (impls )});
234235 }
235236}
236237
237- void Extension::addTypeVariant (const TypeVariantPtr& functionVariant ) {
238- typeVariantMap_.insert ({functionVariant ->name , functionVariant });
238+ void Extension::addTypeVariant (const TypeVariantPtr& typeVariant ) {
239+ typeVariantMap_.insert ({typeVariant ->name , typeVariant });
239240}
240241
241242TypeVariantPtr Extension::lookupType (const std::string& typeName) const {
@@ -246,33 +247,33 @@ TypeVariantPtr Extension::lookupType(const std::string& typeName) const {
246247 return nullptr ;
247248}
248249
249- void Extension::addScalarFunctionVariant (
250- const FunctionImplementationPtr& functionVariant ) {
251- const auto & functionVariants =
252- scalarFunctionVariantMap_ .find (functionVariant ->name );
253- if (functionVariants != scalarFunctionVariantMap_ .end ()) {
254- auto & variants = functionVariants ->second ;
255- variants .emplace_back (functionVariant );
250+ void Extension::addScalarFunctionImpl (
251+ const FunctionImplementationPtr& functionImpl ) {
252+ const auto & functionImpls =
253+ scalarFunctionImplMap_ .find (functionImpl ->name );
254+ if (functionImpls != scalarFunctionImplMap_ .end ()) {
255+ auto & impls = functionImpls ->second ;
256+ impls .emplace_back (functionImpl );
256257 } else {
257- std::vector<FunctionImplementationPtr> variants ;
258- variants .emplace_back (functionVariant );
259- scalarFunctionVariantMap_ .insert (
260- {functionVariant ->name , std::move (variants )});
258+ std::vector<FunctionImplementationPtr> impls ;
259+ impls .emplace_back (functionImpl );
260+ scalarFunctionImplMap_ .insert (
261+ {functionImpl ->name , std::move (impls )});
261262 }
262263}
263264
264- void Extension::addAggregateFunctionVariant (
265- const FunctionImplementationPtr& functionVariant ) {
266- const auto & functionVariants =
267- aggregateFunctionVariantMap_ .find (functionVariant ->name );
268- if (functionVariants != aggregateFunctionVariantMap_ .end ()) {
269- auto & variants = functionVariants ->second ;
270- variants .emplace_back (functionVariant );
265+ void Extension::addAggregateFunctionImpl (
266+ const FunctionImplementationPtr& functionImpl ) {
267+ const auto & functionImpls =
268+ aggregateFunctionImplMap_ .find (functionImpl ->name );
269+ if (functionImpls != aggregateFunctionImplMap_ .end ()) {
270+ auto & impls = functionImpls ->second ;
271+ impls .emplace_back (functionImpl );
271272 } else {
272- std::vector<FunctionImplementationPtr> variants ;
273- variants .emplace_back (functionVariant );
274- aggregateFunctionVariantMap_ .insert (
275- {functionVariant ->name , std::move (variants )});
273+ std::vector<FunctionImplementationPtr> impls ;
274+ impls .emplace_back (functionImpl );
275+ aggregateFunctionImplMap_ .insert (
276+ {functionImpl ->name , std::move (impls )});
276277 }
277278}
278279
0 commit comments