home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / ada / 2399 < prev    next >
Encoding:
Internet Message Format  |  1992-08-21  |  2.2 KB

  1. Path: sparky!uunet!elroy.jpl.nasa.gov!swrinde!mips!darwin.sura.net!jvnc.net!netnews.upenn.edu!uofs!guinness.cs.uofs.edu!beidler
  2. From: beidler@guinness.cs.uofs.edu (Jack Beidler)
  3. Newsgroups: comp.lang.ada
  4. Subject: Instanciation
  5. Message-ID: <10964@platypus.uofs.uofs.edu>
  6. Date: 21 Aug 92 18:26:04 GMT
  7. References: <1992Aug16.160339.27573@evb.com>
  8. Sender: news@uofs.uofs.edu
  9. Distribution: usa
  10. Organization: Department of Computing Sciences
  11. Lines: 58
  12. Nntp-Posting-Host: guinness.cs.uofs.edu
  13.  
  14. With regard to :
  15.  
  16. >I've got a package which I'm currently coding which uses a static data
  17. >structure (an array of records to be precise).  Now, this package is an
  18. >ADT with a private data type.
  19. >     
  20. >I want to be able to modify the size of this array from within a client
  21. >program at runtime.
  22. >     
  23. >Can anyone suggest how I might be able to go about this?
  24. >     
  25. >Thanks.
  26. >     
  27. >Cheers,
  28. >%Ben%
  29.  
  30. The obvious choice is make your structured object available as a 
  31. private type with a discriminant, as in 
  32.  
  33.     generic
  34.          type Object_Type is private ;
  35.     package Stack_Pt_Pt is
  36.  
  37.         type Stack_Type (Size : positive := 20) is private ;
  38.  
  39.           ....
  40.  
  41. and use the discriminat to determine the size of the stack
  42.  
  43.     private
  44.  
  45.        type stack_array is array ( positive range <>) of Object_Type;
  46.  
  47.        type Stack_Type (Size : positive := 20) is 
  48.          record
  49.             Top   : natural := 0 ;
  50.             Actual: Stack_Array (1 .. Size) ;
  51.          end record ;
  52.  
  53. Once the package is instantiated, 
  54.  
  55.        Int_Stack is new Stack_Pt_Pt (integer) ;
  56.        use Int_Stack ;
  57.  
  58. stacks of various sizes may be declared,
  59.  
  60.         Short_Stack : Stack_Type (4) ;
  61.         Big_Stack    : Stack_Type (1000) ;
  62. -
  63. -- 
  64. +------------------------------------------------------------------+
  65. |  John (Jack) Beidler                                   |
  66. |  Prof. of Computer Science Internet: BEIDLER@JAGUAR.UOFS.ED      |
  67. |  University of Scranton              beidler@guinness.cs.uofs.edu|
  68. |  Scranton, PA 18510          Bitnet : BEIDLER@SCRANTON            |
  69. |                                                                  |
  70. |          Phone: (717) 941-7446     FAX:   (717) 941-4250     |
  71. +------------------------------------------------------------------+
  72.