From: collard@software.org (David Collard)
Subject: Re: How to NOT give new default to parameter of generic procedure parameter?...
Date: 15 Feb 91 13:55:05 GMT [thread overview]
Message-ID: <1991Feb15.135505.6333@software.org> (raw)
In-Reply-To: 1991Feb14.224435.1512@software.org
In article <1991Feb14.224435.1512@software.org> stluka@software.org (Fred Stluka) writes:
> Here's one for the language lawyers. I don't think there is
> a way to do this. Someone please tell me that I'm wrong.
>
> From within a generic body GEN, I want to call a procedure PROC1
> which was was passed in as a generic parameter PROC. I want to
> make the call without specifying any parameters, allowing all of
> them to default to the default expressions specified in the
> declaration of PROC1. I also do not want to re-specify the default
> expressions in my declaration of PROC as a generic formal parameter
> to GEN, because this would override the defaults of PROC1 which may
> someday be changed.
>
Are either of these options better? the first takes in your constant
as a generic formal and the second takes in a visible function
as a generic formal (default).
-- (1) --
generic
default_for_x : integer;
with procedure proc1(x : integer := default_for_x);
procedure gen;
procedure gen is
begin
proc1;
end gen;
with gen;
with Text_IO; use Text_IO;
procedure boss is
def : integer := 1;
procedure proc(x : integer := 1) is
begin
put_line(integer'image(x));
end proc;
procedure mygen is new gen(proc1, def);
begin
mygen;
end boss;
\f
-- (2) --
generic
with function default_for_x return integer is <>;
with procedure proc1(x : integer := default_for_x);
procedure gen;
procedure gen is
begin
proc1;
end gen;
with gen;
with Text_IO; use Text_IO;
procedure boss is
function default_for_x return integer is begin return 1; end;
procedure proc(x : integer := 1) is
begin
put_line(integer'image(x));
end proc;
procedure mygen is new gen(proc1 => proc);
begin
mygen;
end boss;
--
-----------------------------------------------------------------------
D. Thor Collard Internet: collard@software.org
Software Productivity Consortium UUNET: ...!uunet!software!collard
2214 Rock Hill Rd, Herndon VA 22070
prev parent reply other threads:[~1991-02-15 13:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
1991-02-14 22:44 How to NOT give new default to parameter of generic procedure parameter? Fred Stluka
1991-02-15 13:55 ` David Collard [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox