MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / getFunctionEvaluator

Method getFunctionEvaluator

src/processor/map/expression_mapper.cpp:145–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143}
144
145std::unique_ptr<ExpressionEvaluator> ExpressionMapper::getFunctionEvaluator(
146 std::shared_ptr<Expression> expression) {
147 evaluator_vector_t childrenEvaluators;
148 if (expression->getNumChildren() == 2 &&
149 expression->getChild(1)->expressionType == ExpressionType::LAMBDA) {
150 childrenEvaluators.push_back(getEvaluator(expression->getChild(0)));
151 auto result =
152 std::make_unique<ListLambdaEvaluator>(expression, std::move(childrenEvaluators));
153 auto recursiveExprMapper = ExpressionMapper(schema, result.get());
154 auto& lambdaExpr = expression->getChild(1)->constCast<LambdaExpression>();
155 result->setLambdaRootEvaluator(
156 recursiveExprMapper.getEvaluator(lambdaExpr.getFunctionExpr()));
157 return result;
158 }
159 childrenEvaluators = getEvaluators(expression->getChildren());
160 return std::make_unique<FunctionExpressionEvaluator>(std::move(expression),
161 std::move(childrenEvaluators));
162}
163
164std::unique_ptr<ExpressionEvaluator> ExpressionMapper::getNodeEvaluator(
165 std::shared_ptr<Expression> expression) {

Callers

nothing calls this directly

Calls 8

ExpressionMapperClass · 0.85
getNumChildrenMethod · 0.80
getEvaluatorMethod · 0.80
getChildMethod · 0.45
push_backMethod · 0.45
getMethod · 0.45
getFunctionExprMethod · 0.45

Tested by

no test coverage detected