1------------------------------------------------------------------------------ 2-- -- 3-- GNAT LIBRARY COMPONENTS -- 4-- -- 5-- ADA.CONTAINERS.GENERIC_SORT -- 6-- -- 7-- S p e c -- 8-- -- 9-- Copyright (C) 2011-2019, Free Software Foundation, Inc. -- 10-- -- 11-- GNAT is free software; you can redistribute it and/or modify it under -- 12-- terms of the GNU General Public License as published by the Free Soft- -- 13-- ware Foundation; either version 3, or (at your option) any later ver- -- 14-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 15-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 16-- or FITNESS FOR A PARTICULAR PURPOSE. -- 17-- -- 18-- As a special exception under Section 7 of GPL version 3, you are granted -- 19-- additional permissions described in the GCC Runtime Library Exception, -- 20-- version 3.1, as published by the Free Software Foundation. -- 21-- -- 22-- You should have received a copy of the GNU General Public License and -- 23-- a copy of the GCC Runtime Library Exception along with this program; -- 24-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 25-- <http://www.gnu.org/licenses/>. -- 26-- -- 27-- This unit was originally developed by Matthew J Heaney. -- 28------------------------------------------------------------------------------ 29 30-- Allows an anonymous array (or array-like container) to be sorted. Generic 31-- formal Before returns the result of comparing the elements designated by 32-- the indexes, and generic formal Swap exchanges the designated elements. 33 34generic 35 type Index_Type is (<>); 36 with function Before (Left, Right : Index_Type) return Boolean; 37 with procedure Swap (Left, Right : Index_Type); 38 39procedure Ada.Containers.Generic_Sort (First, Last : Index_Type'Base); 40pragma Pure (Ada.Containers.Generic_Sort); 41-- Reorders the elements of an indexable structure, over the range 42-- First .. Last, such that the elements are sorted in the ordering determined 43-- by the generic formal function Before; Before should return True if Left is 44-- to be sorted before Right. The generic formal Before compares the elements 45-- having the given indices, and the generic formal Swap exchanges the values 46-- of the indicated elements. Any exception raised during evaluation of Before 47-- or Swap is propagated. 48-- 49-- The actual function for the generic formal function "<" is expected to 50-- return the same value each time it is called with a particular pair of 51-- element values. It should not modify Container and it should define a 52-- strict weak ordering relationship: irreflexive, asymmetric, transitive, and 53-- in addition, if x < y for any values x and y, then for all other values z, 54-- (x < z) or (z < y). If the actual for "<" behaves in some other manner, 55-- the behavior of the instance of Generic_Sort is unspecified. The number of 56-- times Generic_Sort calls "<" is unspecified. 57