20 children_groups.emplace_back();
25 if (children_groups.size() != expressions.
size()) {
31 children_groups.emplace_back();
37 if (children_groups.size() != expressions.
size()) {
41 children_groups.emplace_back();
49 append_child(children_groups.back(),
std::move(x));
55 hi_assert(ssize(expressions) == ssize(formula_locations));
56 for (ssize_t i = 0; i != ssize(expressions); ++i) {
57 post_process_expression(context, *expressions[i], formula_locations[i]);
60 for (
hilet &children : children_groups) {
61 if (ssize(children) > 0) {
62 children.back()->left_align();
65 for (
hilet &child : children) {
66 child->post_process(context);
73 hi_assert(ssize(expressions) == ssize(formula_locations));
74 for (ssize_t i = 0; i != ssize(expressions); ++i) {
75 if (evaluate_formula_without_output(context, *expressions[i], formula_locations[i])) {
76 return evaluate_children(context, children_groups[i]);
79 if (ssize(children_groups) > ssize(expressions)) {
80 return evaluate_children(context, children_groups[ssize(expressions)]);
89 s += to_string(*expressions[0]);
96 s += to_string(*expressions[i]);
102 if (children_groups.size() != expressions.
size()) {
105 return to_string(*x);
bool append(std::unique_ptr< skeleton_node > x) noexcept override
Append a template-piece to the current template.
Definition skeleton_if_node.hpp:47