home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / generic_ordered_set.ads < prev    next >
Text File  |  1997-03-24  |  2KB  |  60 lines

  1. -- generic_ordered_set.ads
  2. --
  3. -- Copyright (c) 1996 Cadre Technologies Inc, All Rights Reserved
  4. --
  5. -- This file contains the specification for a simple, unoptimized, generic
  6. -- ordered set package that is provided without any express or implied
  7. -- warranties and is intended for interim use in order to allow the
  8. -- compilation and linking of the generated Ada code.  This package should
  9. -- ultimately be replaced by a production quality version such as from the
  10. -- compiler vendor's program library.
  11.  
  12. generic
  13.     type Element is private;
  14. package Generic_Ordered_Set is
  15.  
  16.     type Ordered_Set is private;
  17.  
  18.     Already_Exists : exception;
  19.     Does_Not_Exist : exception;
  20.  
  21.     -- Add element E to set S; raises Already_Exists if E already exists in S
  22.     procedure Add(S : in out Ordered_Set; E : Element);
  23.  
  24.     -- Remove element E from set S; raises Does_Not_Exist if S doesn't have E
  25.     procedure Remove(S : in out Ordered_Set; E : Element);
  26.  
  27.     -- Remove all elements from set S
  28.     procedure Remove_All(S : in out Ordered_Set);
  29.  
  30.     -- Return whether or not set S contains element E
  31.     function Has(S : Ordered_Set; E : Element) return Boolean;
  32.  
  33.     -- Return the number of elements in S
  34.     function Count(S : Ordered_Set) return Natural;
  35.  
  36.     -- Iterator
  37.     generic
  38.     with procedure Process(E : Element);
  39.     procedure Iterate(S : Ordered_Set);
  40.  
  41. private
  42.  
  43.     type Ordered_Set_Item;
  44.  
  45.     type Ordered_Set_Item_Acc is access Ordered_Set_Item;
  46.  
  47.     type Ordered_Set_Item is record
  48.     Elem : Element;
  49.         Next : Ordered_Set_Item_Acc := null;
  50.     end record;
  51.  
  52.     type Ordered_Set is record
  53.     First : Ordered_Set_Item_Acc := null;
  54.     Count : Natural := 0;
  55.     end record;
  56.  
  57.     pragma Inline(Count);
  58.  
  59. end Generic_Ordered_Set;
  60.