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;
next 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