7#include "formula_node.hpp"
8#include "../macros.hpp"
10hi_export_module(hikogui.formula.formula_vector_literal_node);
12namespace hi {
inline namespace v1 {
15 formula_vector values;
18 formula_node(line_nr, column_nr), values(
std::move(values))
24 for (
auto &value : values) {
25 value->post_process(context);
32 for (hilet &value : values) {
40 if (!holds_alternative<datum::vector_type>(rhs)) {
41 throw operation_error(std::format(
"{}:{}: Unpacking values can only be done on vectors, got {}.", line_nr, column_nr, rhs));
43 if (values.size() < 1) {
44 throw operation_error(std::format(
"{}:{}: Unpacking can only be done on 1 or more return values.", line_nr, column_nr));
46 if (values.size() != rhs.size()) {
48 "{}:{}: Unpacking values can only be done on with a vector of size {} got {}.",
59 hilet &lhs_ = values[i];
60 hilet &rhs_ = rhs_copy[i];
62 if (++i < rhs.size()) {
63 lhs_->assign(context, rhs_);
65 return lhs_->assign(context, rhs_);
74 for (hilet &value : values) {
geometry/margins.hpp
Definition lookahead_iterator.hpp:5
The HikoGUI API version 1.
Definition lookahead_iterator.hpp:6
A dynamic data type.
Definition datum.hpp:212
Definition formula_evaluation_context.hpp:18
Definition formula_post_process_context.hpp:237
Definition formula_vector_literal_node.hpp:14
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:38
void post_process(formula_post_process_context &context) override
Resolve function and method pointers.
Definition formula_vector_literal_node.hpp:22
datum evaluate(formula_evaluation_context &context) const override
Evaluate an rvalue.
Definition formula_vector_literal_node.hpp:29
Exception thrown during execution of a dynamic operation.
Definition exception_intf.hpp:160