MCPcopy Create free account
hub / github.com/apache/nifi-minifi-cpp / operator+

Method operator+

extensions/expression-language/Expression.cpp:1584–1627  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1582}
1583
1584Expression Expression::operator+(const Expression &other_expr) const {
1585 if (is_dynamic() && other_expr.is_dynamic()) {
1586 auto val_fn = val_fn_;
1587 auto other_val_fn = other_expr.val_fn_;
1588 auto sub_expr_generator = sub_expr_generator_;
1589 auto other_sub_expr_generator = other_expr.sub_expr_generator_;
1590 return make_dynamic([val_fn,
1591 other_val_fn,
1592 sub_expr_generator,
1593 other_sub_expr_generator](const Parameters &params,
1594 const std::vector<Expression>& /*sub_exprs*/) -> Value {
1595 Value result = val_fn(params, sub_expr_generator(params));
1596 return Value(result.asString().append(other_val_fn(params, other_sub_expr_generator(params)).asString()));
1597 });
1598 } else if (is_dynamic() && !other_expr.is_dynamic()) {
1599 auto val_fn = val_fn_;
1600 auto other_val = other_expr.val_;
1601 auto sub_expr_generator = sub_expr_generator_;
1602 return make_dynamic([val_fn,
1603 other_val,
1604 sub_expr_generator](const Parameters &params,
1605 const std::vector<Expression>& /*sub_exprs*/) -> Value {
1606 Value result = val_fn(params, sub_expr_generator(params));
1607 return Value(result.asString().append(other_val.asString()));
1608 });
1609 } else if (!is_dynamic() && other_expr.is_dynamic()) {
1610 auto val = val_;
1611 auto other_val_fn = other_expr.val_fn_;
1612 auto other_sub_expr_generator = other_expr.sub_expr_generator_;
1613 return make_dynamic([val,
1614 other_val_fn,
1615 other_sub_expr_generator](const Parameters &params,
1616 const std::vector<Expression>& /*sub_exprs*/) -> Value {
1617 Value result(val);
1618 return Value(result.asString().append(other_val_fn(params, other_sub_expr_generator(params)).asString()));
1619 });
1620 } else if (!is_dynamic() && !other_expr.is_dynamic()) {
1621 std::string result(val_.asString());
1622 result.append(other_expr.val_.asString());
1623 return make_static(result);
1624 } else {
1625 throw std::runtime_error("Invalid function composition");
1626 }
1627}
1628
1629Value Expression::operator()(const Parameters &params) const {
1630 if (is_dynamic()) {

Callers

nothing calls this directly

Calls 6

make_dynamicFunction · 0.85
make_staticFunction · 0.85
is_dynamicMethod · 0.80
asStringMethod · 0.80
ValueClass · 0.50
appendMethod · 0.45

Tested by

no test coverage detected