All pastes #928501 Raw Edit

kantis

public text v1 · immutable
·published 2008-03-05 02:48 UTC
rendered paste body
with Generic_Sorted_List;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Text_IO; use Ada.Text_IO;

procedure Pakettest is

   type Test_Type is
      record
         Name : String(1 .. 20);
         Name_Length : Integer;
         Age : Integer;
      end record;

   function Get_Key(Object : in Test_Type) return Integer is
   begin
      return Object.Age;
   end Get_Key;

   function ">"(Left : in Test_Type;
                Right : in Test_Type) return Boolean is
   begin
      return Get_Key(Left) > Get_Key(Right);
   end ">";

   function "="(Left : in Test_Type;
                Right : in Test_Type) return Boolean is
   begin
      return Get_Key(Left) = Get_Key(Right);
   end "=";

   procedure Put(Object : in Test_Type) is
   begin
      Put_Line(Object.Name(1..Object.Name_Length));
      Put(Object.Age);
      New_Line;
   end Put;

   package My_Sorted_List is
      new Generic_Sorted_List(Data_Type => Test_Type,
                              Key_Type => Integer,
                              Get_Key => Get_Key,
                              Put => Put,
                              ">" => ">",
                              "=" => ">");

   procedure Get(Item : out Test_Type) is
   begin
      Get_Line(Item.Name,Item.Name_Length);
      if Item.Name_Length = 20 then
         Skip_Line;
      end if;
      Get(Item.Age);
      Skip_Line;
   end Get;


   My_List : My_Sorted_List.List_Type;
   Temp : Test_Type;

begin
   For I in 1..3 loop
      Get(Temp);
      My_Sorted_List.Insert(Temp,My_List);
   end loop;
   My_Sorted_List.Remove(20,My_list);
   My_Sorted_List.Put(My_List);
   Put(My_Sorted_List.Length(My_List));
end Pakettest;