comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.acm.org>
Subject: Re: using put procedure with a generic package
Date: Thu, 08 May 2008 04:09:25 GMT
Date: 2008-05-08T04:09:25+00:00	[thread overview]
Message-ID: <V1vUj.100363$TT4.42106@attbi_s22> (raw)
In-Reply-To: <151bc418-a6e4-47ef-ab7f-5b93a3cedb58@r66g2000hsg.googlegroups.com>

ophir.geffen@gmail.com wrote:
> 
> * queues.ads:
> with Ada.Text_IO;
> generic
>   type Item is private;
>   with procedure Item_Put(The_Item : in Item);

Item_Put has exactly one parameter.

>   package Int_IO is new Ada.Text_IO.Integer_IO(Integer);
>   package Int_Queues is new Queues(Item => Integer, Item_Put =>
> Int_IO.Put); --- error here
> 
> The package compiles on its own, but when I try to compile Test_Queues
> there is an error:
> no visible subprogram matches the specification for "Item_Put"

Ada.Text_IO.Integer_IO has the following procedures named Put:

procedure Put(File  : in File_Type;
               Item  : in Num;
               Width : in Field       := Default_Width;
               Base  : in Number_Base := Default_Base);

procedure Put(Item  : in Num;
               Width : in Field       := Default_Width;
               Base  : in Number_Base := Default_Base);

procedure Put(To   :    out String;
               Item : in     Num;
               Base : in     Number_Base := Default_Base);

None of these has exactly one parameter. That's why Int_IO.Put doesn't match 
Item_Put.

You can call the 2nd of these with only one explicit parameter:

Int_IO.Put (Item => 7);

but it still has 3 parameters; the other 2 get the default values as the actual 
parameters.

You need to create a procedure that matches Item_Put:

procedure Put (Item : in Integer) is
    -- null;
begin -- Put
    Int_IO.Put (Item => Item);
end Put;

and use it to instantiate your generic package.

-- 
Jeff Carter
"I unclog my nose towards you."
Monty Python & the Holy Grail
11



  reply	other threads:[~2008-05-08  4:09 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-08  3:27 using put procedure with a generic package ophir.geffen
2008-05-08  4:09 ` Jeffrey R. Carter [this message]
2008-05-08  4:48   ` ophir.geffen
2008-05-08  7:24     ` Dmitry A. Kazakov
2008-05-08 15:54     ` Adam Beneschan
replies disabled

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