
--
-- THIS PACKAGE IMPLEMENTS A GENERIC BINARY SEARCH FUNCTION.
-- IT WAS DESIGNED TO ALLOW USE OF AN ENUMERATION TYPE FOR THE TABLE
-- INDEX(A FEATURE OF POSSIBLY DUBIOUS UTILITY, BUT INCLUDED HERE FOR
-- UNIFORMITY WITH OTHER GENERIC OPERATIONS ON UNCONSTRAINED ARRAYS).

--
generic

    type Index is (<>);
    type Item is limited private;
    type Table is array (Index range <>) of Item;

    with function "=" (Left, Right : Item) return Boolean is <>;
    with function ">" (Left, Right : Item) return Boolean is <>;

package Searching is

    function Index_Of (Key : in Item; Within : in Table) return Index;
    -- RETURNS THE INDEX OF THE ITEM IN WITHIN WHICH MATCHES KEY
    -- IF THERE IS ONE, OTHERWISE RAISES NOT_FOUND.

    Not_Found : exception;
    -- RAISED IF THE SEARCH FAILS.

end Searching;
