7#include "formula_node.hpp"
18 for (
auto &value: values) {
19 value->post_process(context);
25 for (ttlet &value: values) {
32 if (!rhs.is_vector()) {
33 throw operation_error(
"{}: Unpacking values can only be done on vectors, got {}.", location, rhs);
35 if (values.size() < 1) {
36 throw operation_error(
"{}: Unpacking can only be done on 1 or more return values.", location);
38 if (values.size() != rhs.size()) {
39 throw operation_error(
"{}: Unpacking values can only be done on with a vector of size {} got {}.", location, values.size(), rhs.size());
47 ttlet &lhs_ = values[i];
48 ttlet &rhs_ = rhs_copy[i];
50 if (++i < rhs.size()) {
51 lhs_->assign(context, rhs_);
53 return lhs_->assign(context, rhs_);
61 for (ttlet &value: values) {
Exception thrown during execution of a dynamic operation.
Definition exception.hpp:42
Definition formula_evaluation_context.hpp:16
Definition formula_node.hpp:19
Definition formula_post_process_context.hpp:19
Definition formula_vector_literal_node.hpp:11
void post_process(formula_post_process_context &context) override
Resolve function and method pointers.
Definition formula_vector_literal_node.hpp:17
datum evaluate(formula_evaluation_context &context) const override
Evaluate an rvalue.
Definition formula_vector_literal_node.hpp:23
datum & assign(formula_evaluation_context &context, datum const &rhs) const override
Assign to a non-existing or existing lvalue.
Definition formula_vector_literal_node.hpp:31
Definition parse_location.hpp:17