Ejemplo n.º 1
0
void loop_update_continue_inputs(Branch* branch, Term* continueTerm)
{
    for (int i=0;; i++) {
        Term* output = get_output_placeholder(branch, i);
        if (output == NULL)
            break;
        set_input(continueTerm, i,
            find_intermediate_result_for_output(continueTerm, output));
    }
}
Ejemplo n.º 2
0
void update_derived_inputs_for_exit_point(Term* term)
{
    // Make sure that this exit point includes every block output as an input.
    // The intermediate value might be different at this location.

    Block* block = find_block_that_exit_point_will_reach(term);
    
    for (int i=0;; i++) {
        Term* inputResult = get_output_placeholder(block, i);
        if (inputResult == NULL)
            break;

        // Don't touch input if it's explicit.
        if (i < term->numInputs() && !is_input_implicit(term, i))
            continue;

        Term* intermediateValue = find_intermediate_result_for_output(term, inputResult);

        set_input(term, i, intermediateValue);
        set_input_implicit(term, i, true);
        set_input_hidden(term, i, true);
    }
}