13 this->link_to_cursors(&instruction);
19 for (
Variable *variable : variables) {
27 this->link_to_cursors(&instruction);
35 this->link_to_cursors(&instruction);
60 input_and_mutable_variables = input_and_mutable_variables.
drop_front(1);
67 output_variables.
append(&variable);
74 return output_variables;
81 this->link_to_cursors(&instruction);
85 Branch branch{*procedure_, *procedure_};
95 this->link_to_cursors(&loop_begin);
99 loop.
begin = &loop_begin;
100 loop.
end = &loop_end;
107 this->link_to_cursors(loop.
begin);
114 this->link_to_cursors(loop.
end);
constexpr Span drop_front(int64_t n) const
constexpr const T & first() const
constexpr bool is_empty() const
void append(const T &value)
void set_condition(Variable *variable)
void set_param_variable(int param_index, Variable *variable)
void set_params(Span< Variable * > variables)
void set_variable(Variable *variable)
ParamType param_type(int param_index) const
StringRefNull param_name(int param_index) const
IndexRange param_indices() const
const DataType & data_type() const
InterfaceType interface_type() const
void add_loop_continue(Loop &loop)
ReturnInstruction & add_return()
void add_destruct(Variable &variable)
void add_loop_break(Loop &loop)
Vector< Variable * > add_call(const MultiFunction &fn, Span< Variable * > input_and_mutable_variables={})
Branch add_branch(Variable &condition)
CallInstruction & add_call_with_no_variables(const MultiFunction &fn)
CallInstruction & add_call_with_all_variables(const MultiFunction &fn, Span< Variable * > param_variables)
BranchInstruction & new_branch_instruction()
CallInstruction & new_call_instruction(const MultiFunction &fn)
DestructInstruction & new_destruct_instruction()
ReturnInstruction & new_return_instruction()
DummyInstruction & new_dummy_instruction()
Variable & new_variable(DataType data_type, std::string name="")