fn::CustomMF_SI_SO fn_sin{"sin", [](float t) { return sinf(t); }}; fn::CustomMF_SI_SO fn_cos{"cos", [](float t) { return sinf(t); }}; fn::MFProcedure procedure; fn::MFProcedureBuilder builder(procedure); fn::MFVariable *var_t = &builder.add_input_parameter(fn::MFDataType::ForSingle(), "time_param"); fn::MFVariable *var_c = &builder.add_input_parameter(fn::MFDataType::ForSingle(), "condition"); // x = sin(t) auto [var_s] = builder.add_call<1>(fn_sin, {var_t}); // if somecondition: fn::MFProcedureBuilder::Branch branch = builder.add_branch(*var_c); // x = cos(t) branch.branch_true.add_call_with_all_variables(fn_cos, {var_t, var_s}); builder.set_cursor_after_branch(branch); builder.add_destruct({var_t, var_s, var_c}); // return x builder.add_return(); EXPECT_TRUE(procedure.validate());