comp.lang.ada
 help / color / mirror / Atom feed
From: Martin Dowie <martin.dowie@btopenworld.com>
Subject: Re: generics in Ada 83
Date: Tue, 13 Sep 2005 16:41:53 +0000 (UTC)
Date: 2005-09-13T16:41:53+00:00	[thread overview]
Message-ID: <dg6vgh$hgi$1@nwrdmz02.dmz.ncs.ea.ibs-infra.bt.com> (raw)
In-Reply-To: <1126629046.328151.40970@g47g2000cwa.googlegroups.com>

REH wrote:
> Martin Dowie wrote:
> 
>>REH wrote:
>>
>>>Is there a way to define a default for the with'd procedure in the
>>>following example in Ada 83:
>>>
>>>generic
>>>    type X is private;
>>>    with procedure Y(Z : in X);
>>>package Foo;
>>>
>>>I want to define a default for Y, but how can I without knowing X?
>>>
>>>I have a generic package that has several with'd procedures, but
>>>depending on what services the package provides are use, only a few of
>>>the procedures may need to be defined.  I'd like to just default the
>>>unused ones to stubs.
>>
>>Same as Ada95:
>>
>>generic
>>   type X is private;
>>   with procedure Y (Z : X) is <>;
>>package Foo is
>>end Foo;
>>
>>Or do you mean you want the compiler to magically insert a 'null' procedure
>>if there isn't a matching procedure Y for whatever type X happens to be? If
>>that's the case you can't do that. There has to be some procedure (even one
>>that's only 'begin null end;') for each type.
>>
>>Cheers
>>
>>-- Martin
> 
> 
> defining it with a box won't work.  There would have to a procedure
> already defined.  What I want is something like:
> 
> generic
>     type X is private;
>     with procedure Y(Z : in X) is P;
> package Foo
> 
> 
> but of course P must already take into account X.  With '95 I think I
> could just with a generic package containing the stubs, but I can
> figure out a way in '83.

Yes, how can you have 'P' know which X?

The best I can see is:

package A is
    type A_T is private;
    procedure Y (Z : A_T);
private
    type A_T is new Integer;
end A;

generic
    type X is private;
    with procedure Y (Z : X) is <>;
package B is
end B;

with A; use A;
with B;

package C is
    new B (A_T);  -- Picks up 'Y' by default

Cheers

-- Martin



  reply	other threads:[~2005-09-13 16:41 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-13 13:26 generics in Ada 83 REH
2005-09-13 13:30 ` Georg Bauhaus
2005-09-13 16:25   ` REH
2005-09-13 19:23     ` Georg Bauhaus
2005-09-13 13:50 ` Martin Dowie
2005-09-13 16:30   ` REH
2005-09-13 16:41     ` Martin Dowie [this message]
2005-09-13 18:43       ` REH
2005-09-13 19:37         ` Ludovic Brenta
2005-09-13 19:53           ` REH
2005-09-13 16:56 ` Jeffrey Carter
2005-09-13 18:53   ` REH
2005-09-13 22:16     ` Jeffrey Carter
2005-09-13 22:44       ` REH
2005-09-14  8:14   ` Jean-Pierre Rosen
2005-09-14 12:40     ` REH
2005-09-14 13:15     ` Hyman Rosen
2005-09-14 14:08       ` Jean-Pierre Rosen
2005-09-14 15:23         ` Hyman Rosen
2005-09-14 15:41           ` Robert A Duff
2005-09-19 17:58             ` REH
2005-09-20  4:58               ` Hyman Rosen
2005-09-20 12:36                 ` REH
2005-09-20  1:34             ` adaworks
2005-09-20  4:14               ` Jim Rogers
2005-09-21 22:58               ` Robert A Duff
2005-09-22 15:18                 ` adaworks
replies disabled

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