97 : procedure_(&procedure), cursors_({initial_cursor})
131 cursors_.extend(builder->cursors_);
135 template<
int OutputN>
142 std::array<MFVariable *, OutputN> output_array;
182 inline void MFProcedureBuilder::link_to_cursors(
MFInstruction *instruction)
185 cursor.set_next(*procedure_, instruction);
static const std::unordered_map< GHOST_TStandardCursor, const char * > cursors
static MFInstructionCursor ForEntry()
MFDataType data_type() const
static MFParamType ForMutableSingle(const CPPType &type)
InterfaceType interface_type() const
static MFParamType ForSingleInput(const CPPType &type)
void add_loop_continue(Loop &loop)
MFCallInstruction & add_call_with_all_variables(const MultiFunction &fn, Span< MFVariable * > param_variables)
MFCallInstruction & add_call_with_no_variables(const MultiFunction &fn)
void add_parameter(MFParamType::InterfaceType interface_type, MFVariable &variable)
MFVariable & add_input_parameter(MFDataType data_type, std::string name="")
void set_cursor_after_loop(Loop &loop)
MFProcedureBuilder(MFProcedure &procedure, MFInstructionCursor initial_cursor=MFInstructionCursor::ForEntry())
Branch add_branch(MFVariable &condition)
void set_cursor_after_branch(Branch &branch)
MFReturnInstruction & add_return()
MFVariable & add_single_mutable_parameter(std::string name="")
void add_destruct(MFVariable &variable)
void add_output_parameter(MFVariable &variable)
void set_cursor(const MFInstructionCursor &cursor)
void add_loop_break(Loop &loop)
Vector< MFVariable * > add_call(const MultiFunction &fn, Span< MFVariable * > input_and_mutable_variables={})
MFVariable & add_single_input_parameter(std::string name="")
void add_parameter(MFParamType::InterfaceType interface_type, MFVariable &variable)
MFVariable & new_variable(MFDataType data_type, std::string name="")
void initialized_copy_n(const T *src, int64_t n, T *dst)
MFProcedureBuilder branch_false
MFProcedureBuilder branch_true