98 : procedure_(&procedure), cursors_({initial_cursor})
132 cursors_.extend(builder->cursors_);
143 std::array<Variable *, OutputN> output_array;
183inline void ProcedureBuilder::link_to_cursors(
Instruction *instruction)
186 cursor.set_next(*procedure_, instruction);
static const CPPType & get()
static InstructionCursor ForEntry()
const DataType & data_type() const
InterfaceType interface_type() const
static ParamType ForMutableSingle(const CPPType &type)
static ParamType ForSingleInput(const CPPType &type)
void add_output_parameter(Variable &variable)
void add_loop_continue(Loop &loop)
Variable & add_single_mutable_parameter(std::string name="")
ReturnInstruction & add_return()
void add_destruct(Variable &variable)
Variable & add_input_parameter(DataType data_type, std::string name="")
void add_loop_break(Loop &loop)
ProcedureBuilder(Procedure &procedure, InstructionCursor initial_cursor=InstructionCursor::ForEntry())
void set_cursor_after_loop(Loop &loop)
void set_cursor(const InstructionCursor &cursor)
Vector< Variable * > add_call(const MultiFunction &fn, Span< Variable * > input_and_mutable_variables={})
Variable & add_single_input_parameter(std::string name="")
void add_parameter(ParamType::InterfaceType interface_type, Variable &variable)
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)
void set_cursor_after_branch(Branch &branch)
void add_parameter(ParamType::InterfaceType interface_type, Variable &variable)
Variable & new_variable(DataType data_type, std::string name="")
void initialized_copy_n(const T *src, int64_t n, T *dst)
ProcedureBuilder branch_false
ProcedureBuilder branch_true