parquet_argsort_bind_oracle Subroutine

public subroutine parquet_argsort_bind_oracle(argsort_p, partial_p, nth_p, is_sorted_p, runs_p, search_p, merge_p)

Binds the seven C++-engine entry points. Called by parquet_sorting_oracle, and by nothing else; idempotent, so calling it on every engine selection costs nothing.

Arguments

Type IntentOptional Attributes Name
procedure(oracle_argsort_i) :: argsort_p

the whole-permutation entry point.

procedure(oracle_partial_i) :: partial_p

the partial sort.

procedure(oracle_nth_i) :: nth_p

nth-element selection.

procedure(oracle_is_sorted_i) :: is_sorted_p

the already-sorted test.

procedure(oracle_runs_i) :: runs_p

the grouped sort.

procedure(oracle_search_i) :: search_p

the binary search.

procedure(oracle_merge_i) :: merge_p

the merge.


Source Code

    subroutine parquet_argsort_bind_oracle(argsort_p, partial_p, nth_p, is_sorted_p, runs_p, &
            search_p, merge_p)
        procedure(oracle_argsort_i) :: argsort_p       !! the whole-permutation entry point.
        procedure(oracle_partial_i) :: partial_p       !! the partial sort.
        procedure(oracle_nth_i) :: nth_p               !! nth-element selection.
        procedure(oracle_is_sorted_i) :: is_sorted_p   !! the already-sorted test.
        procedure(oracle_runs_i) :: runs_p             !! the grouped sort.
        procedure(oracle_search_i) :: search_p         !! the binary search.
        procedure(oracle_merge_i) :: merge_p           !! the merge.
        !
        p_argsort => argsort_p
        p_partial => partial_p
        p_nth => nth_p
        p_is_sorted => is_sorted_p
        p_runs => runs_p
        p_search => search_p
        p_merge => merge_p
    end subroutine parquet_argsort_bind_oracle