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

  1. -- generic_dictionary.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. -- dictionary 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 Key   is private;
  14.     type Value is private;
  15. package Generic_Dictionary is
  16.  
  17.     type Dictionary is private;
  18.  
  19.     Already_Exists : exception;
  20.     Does_Not_Exist : exception;
  21.  
  22.     -- Add value V with key K to dictionary D
  23.     procedure Add(D : in out Dictionary; K : Key; V : Value);
  24.     -- Raises Already_Exists if value with key K already exists in D
  25.  
  26.     -- Remove value with key K from dictionary D
  27.     procedure Remove(D : in out Dictionary; K : Key);
  28.     -- Raises Does_Not_Exist if value with key K does not exist in D
  29.  
  30.     -- Remove all values from dictionary D
  31.     procedure Remove_All(D : in out Dictionary);
  32.  
  33.     -- Return whether or not dictionary D contains value with key K
  34.     function Has(D : Dictionary; K : Key) return Boolean;
  35.  
  36.     -- Return value for key K from dictionary D
  37.     function Find_Value(D : Dictionary; K : Key) return Value;
  38.     -- Raises Does_Not_Exist if value for key K does not exist in D
  39.  
  40.     -- Return the number of values in D
  41.     function Count(D : Dictionary) return Natural;
  42.  
  43.     -- Iterator
  44.     generic
  45.     with procedure Process(K : Key; V : Value);
  46.     procedure Iterate(D : Dictionary);
  47.  
  48. private
  49.  
  50.     type Dictionary_Item;
  51.  
  52.     type Dictionary_Item_Acc is access Dictionary_Item;
  53.  
  54.     type Dictionary_Item is record
  55.     K    : Key;
  56.      V    : Value;
  57.         Next : Dictionary_Item_Acc := null;
  58.     end record;
  59.  
  60.     type Dictionary is record
  61.     First : Dictionary_Item_Acc := null;
  62.     Count : Natural := 0;
  63.     end record;
  64.  
  65.     pragma Inline(Count);
  66.  
  67. end Generic_Dictionary;
  68.