Interface to Generic Binary Search Procedure

Go to Procedure Implementation

GENERIC

  TYPE KeyType IS PRIVATE;
  TYPE ElementType IS PRIVATE;
  TYPE IndexType IS (<>);
  TYPE ListType IS ARRAY (IndexType RANGE <>) OF ElementType;
  WITH FUNCTION KeyOf  (Element: ElementType) RETURN KeyType;
  WITH FUNCTION "<"(Left, Right: KeyType) RETURN Boolean;

PROCEDURE Binary_Search_Generic (List    : IN ListType;
                               Target  : IN KeyType;
                               Location: OUT IndexType;
                               Found   : OUT Boolean);
------------------------------------------------------------------
--| Performs an iterative binary search of an ordered array of
--| keys with bounds List'First..List'Last.
--| Pre :   Target and List are defined, and List is sorted upward
--| Post:   If Target is found in array List, returns True in Found
--|         and the location in Location; otherwise,
--|         returns False in Found and returns in Location
--|         the location in which to insert Target
--| Raises: Ada will raise Constraint_Error
--|         if List'Last = IndexType'Last and Target would be
--|         inserted beyond List'Last.
--| Author: Michael B. Feldman, The George Washington University
--| Last Modified: October 1995
------------------------------------------------------------------