From: "REH" <spamjunk@stny.rr.com>
Subject: Re: generics in Ada 83
Date: 13 Sep 2005 11:43:05 -0700
Date: 2005-09-13T11:43:05-07:00 [thread overview]
Message-ID: <1126636985.067939.27760@f14g2000cwb.googlegroups.com> (raw)
In-Reply-To: <dg6vgh$hgi$1@nwrdmz02.dmz.ncs.ea.ibs-infra.bt.com>
Martin Dowie wrote:
> 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
That seems reasonable. Two questions:
1) If I have Y1 through Yn, Do I define the ones I care about when I
instantiate B or do I define then in C, before B?
2) is there a way to avoid having to include A?
next prev parent reply other threads:[~2005-09-13 18:43 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
2005-09-13 18:43 ` REH [this message]
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