comp.lang.ada
 help / color / mirror / Atom feed
From: rdtjmcnabb@covad.net (Tanya)
Subject: HELP !  Problems with  Get and Put in Generic Procedure
Date: 10 Jul 2003 15:01:42 -0700
Date: 2003-07-10T22:01:43+00:00	[thread overview]
Message-ID: <9f383bcd.0307101401.60625c77@posting.google.com> (raw)

I am having problems compiling a program that uses a generic GetData
procedure.  Inside this procedure I try to Get data from the keyboard
and store into an array.  My generic specification and body both
compile fine...but when I try to instantiate the generic procedure in
the main driver, I get errors:
"procedure or entry name expected" and "expect valid subprogram name
in renaming".  What am I doing wrong ??  I can't find any examples of
how to do this.  Any help would be greatly appreciated !!!  Thanks !

Here is my program:

(generic spec file)  ******************************************

 GENERIC
      
      TYPE ElementType IS PRIVATE;         -- any nonlimited type
      TYPE IndexType IS ( <> );            -- any discrete type for
                                           -- index value
      TYPE ArrayType IS ARRAY (IndexType RANGE <>) OF ElementType;
      
      WITH PROCEDURE Read (Item : IN ElementType);
      
   PROCEDURE Get_Array_Generic (List : IN OUT ArrayType);
   -- Input : Array type and input file stream.
   -- Action: Will read in elements and store in array.
   -- Output: Array filled with elements.


(generic body file)  ********************************************

PROCEDURE Get_Array_Generic (List : IN OUT ArrayType) IS
   -------------------------------------------------------------------
   -- Input : Array type and input file stream.
   -- Action: Will read in elements and store in array.
   -- Output: Array filled with elements.
   -------------------------------------------------------------------
   
      Index : IndexType;
      Element : ElementType;
      
   BEGIN  -- Get_Array_Generic
      
      Index := List'Last;               -- initialize array index to
                                        -- first subscript
      
      FOR Index IN List'RANGE LOOP
                     
            Read (Item => Element);        -- read elements into array
         
         -- store data into the array
         
            List (Index) := Element;
         
         END LOOP;
 
   END Get_Array_Generic;


(Main driver )  ********************************************


WITH Ada.Text_IO;
USE Ada.Text_IO;
WITH Ada.Integer_Text_IO;
USE Ada.Integer_Text_IO;


PROCEDURE Generic_Test IS
----------------------------------------------------------------------
-- Input : None
-- Action: 
-- Output: None                                    
----------------------------------------------------------------------

   MaxInt : CONSTANT Integer := 10;
   SUBTYPE IntegerRange IS Integer RANGE 1..MaxInt;
   TYPE Integer_Array IS ARRAY (IntegerRange RANGE <>) OF Integer;
      

  ***  This is where I am having problems (in the instantiation)  ***


   PROCEDURE GetIntegers IS NEW Get_Array_Generic
      (ElementType => Integer,
       IndexType => IntegerRange,
       ArrayType => Integer_Array,
       Read => Ada.Integer_Text_IO);
       
   
   IntArray : Integer_Array(IntegerRange);
   
   TargetInteger : Integer;

BEGIN  -- Generic_Test
   
   Ada.Text_IO.Put (Item => "Please enter ");
   Ada.Integer_Text_IO.Put (Item => MaxInt, Width => 2);
   Ada.Text_IO.Put (Item => " integer values: ");
   Ada.Text_IO.New_Line;  

   GetIntegers (List => IntArray);
  
END Generic_Test;



             reply	other threads:[~2003-07-10 22:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-10 22:01 Tanya [this message]
2003-07-10 22:37 ` HELP ! Problems with Get and Put in Generic Procedure Robert I. Eachus
2003-07-11  1:59 ` Jeffrey Carter
2003-07-15  1:40 ` Richard Riehle
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox