2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gnat.dg / sort1.adb
blobcf0fb5d5fac8f9bbbf5355583a5ef4884c4fea64
1 with GNAT.Heap_Sort_G;
2 function sort1 (S : String) return String is
3 Result : String (1 .. S'Length) := S;
4 Temp : Character;
6 procedure Move (From : Natural; To : Natural) is
7 begin
8 if From = 0 then Result (To) := Temp;
9 elsif To = 0 then Temp := Result (From);
10 else Result (To) := Result (From);
11 end if;
12 end Move;
14 function Lt (Op1, Op2 : Natural) return Boolean is
15 begin
16 if Op1 = 0 then return Temp < Result (Op2);
17 elsif Op2 = 0 then return Result (Op1) < Temp;
18 else return Result (Op1) < Result (Op2);
19 end if;
20 end Lt;
22 package SP is new GNAT.Heap_Sort_G (Move, Lt);
24 begin
25 SP.Sort (S'Length);
26 return Result;
27 end;