From: Francisco Javier Loma Daza <Francisco.Loma@isotrol.com>
To: comp.lang.ada@ada.eu.org
Subject: Re: on package naming, should the word "_pkg" be part of it?
Date: Wed, 10 Oct 2001 12:17:05 +0200
Date: 2001-10-10T12:17:05+02:00 [thread overview]
Message-ID: <mailman.1002709038.2503.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: <3bc40fef.1827097@news.demon.co.uk>
On Wed, 10 Oct 2001, john.mccabe@emrad.com.nospam (John McCabe) wrote:
> Date: Wed, 10 Oct 2001 09:47:04 GMT
> To: comp.lang.ada@ada.eu.org
> From: john.mccabe@emrad.com.nospam (John McCabe)
> Reply-To: comp.lang.ada@ada.eu.org
> Sender: comp.lang.ada-admin@ada.eu.org
> Subject: Re: on package naming, should the word "_pkg" be part of it?
>
> On Wed, 10 Oct 2001 08:04:10 GMT, john.mccabe@emrad.com.nospam (John
> McCabe) wrote:
>
> Francisco
>
> I've just been reminded of where the problem lies with respect to the
> use of Object as a 'class' name (with thanks to Martin Ellerker).
>
> Consider the following Parent and Child classes (similar to what I
> mentioned in my earlier message):
>
> File: GParent.ads
> -----------------
> generic
> package GParent is
> type Object is abstract tagged null record;
> end GParent;
>
> File: GParent-GChild.ads
> ------------------------
> with GParent;
> generic
> package GParent.GChild is
> type Object is new GParent.Object with null record;
> end GParent.GChild;
>
> Separate library level instantiations are provided as follows:
>
> File: IParent.ads
> -----------------
> with GParent;
> package IParent is new GParent;
>
> File: IChild.ads
> ----------------
> with IParent;
> with GParent.GChild;
> package IChild is new IParent.GChild;
>
> So far so good. A test program as follows compiles and runs without
> error (unless I've typed something in wrongly)
>
> File: TestG.adb
> ---------------
> with IChild;
> procedure TestG is
> begin
> null;
> end TestG;
>
>
> Now, however, if you then have a third level of Generic class, say..
>
> File: GParent-GChild-GGChild.ads
> --------------------------------
> with GParent.GChild;
> generic
> package GParent.GChild.GGChild is
> type Object is new GParent.GChild.Object with null record;
> end GParent.GChild.GGChild;
>
> and instantiate it with:
>
> File: IGChild.ads
> -----------------
> with IChild;
> with GParent.GChild.GGChild;
> package IGChild is new IChild.GGChild;
>
> and change the test program to:
>
> File: TestG.adb
> ---------------
> with IGChild; -- Change to IGChild from IChild.
> procedure TestG is
> begin
> null;
> end TestG;
>
> we get the error:
>
> igchild.ads:3:01: instantiation error at gparent-gchild-ggchild.ads:4
> igchild.ads:3:01: "GChild" not declared in "IParent".
>
> The cause of this is the explicit reference in line 4 of
> GParent-GChild-GGChild.ads to GParent.GChild.Object. Since IChild is
> the instantiation of GChild, it is IChild that, at this point,
> declares the GGChild 'class' we're interested in, not GParent.GChild.
>
> We could attempt to use the child-to-parent visibility rules to allow
> use to change GParent.Object and GParent.GChild.Object into just
> Object and Object, but then the scoping rules cause problems with
> errors:
>
> gparent-gchild.ads:4:24: object "Object" cannot be used before end of
> its declaration
> gparent-gchild-ggchild.ads:4:24: object "Object" cannot be used before
> end of its declaration
>
> So there you go.
>
I would use the following to desambiguate
-- with GParent.GChild; -- this is not needed
generic
package GParent.GChild.GGChild is
type Object is new GChild.Object with null record;
end GParent.GChild.GGChild;
That is the schema I actually use. For anothe level of genericity
generic
package GParent.GChild.GGChild.GGGChild is
type Object is new GGChild.Object with null record;
subtype Class is Object'Class;
type Handle is access all Object'Class;
type Pointer is access all Object;
--another useful (sometimes) trick
package Parent renames GGChild;
-- and then use Parent.Object to call parent methods
end;
and so for.
next prev parent reply other threads:[~2001-10-10 10:17 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-04 19:58 on package naming, should the word "_pkg" be part of it? mike
2001-10-04 20:34 ` Larry Hazel
2001-10-04 20:54 ` Pascal Obry
2001-10-04 21:04 ` on package naming, should the word Ted Dennison
2001-10-04 22:00 ` Preben Randhol
2001-10-04 22:13 ` Brian Rogoff
2001-10-04 23:38 ` Larry Kilgallen
2001-10-04 23:43 ` Preben Randhol
2001-10-05 0:40 ` MM
2001-10-05 3:22 ` Brian Rogoff
2001-10-04 22:09 ` tmoran
2001-10-05 14:21 ` Ted Dennison
2001-10-04 20:53 ` on package naming, should the word "_pkg" be part of it? Marin David Condic
2001-10-05 9:24 ` John McCabe
2001-10-05 10:35 ` mike
2001-10-05 13:29 ` Stephen Leake
2001-10-05 14:17 ` mike
2001-10-05 14:39 ` on package naming, should the word Ted Dennison
2001-10-05 15:07 ` mike
2001-10-05 15:56 ` Ted Dennison
2001-10-05 16:12 ` Francisco Javier Loma Daza
2001-10-06 9:16 ` Simon Wright
2001-10-06 12:36 ` Marc A. Criley
2001-10-05 16:52 ` on package naming, should the word "_pkg" be part of it? Jeffrey Carter
2001-10-05 12:54 ` Marin David Condic
2001-10-05 17:11 ` Jeffrey Carter
2001-10-05 18:52 ` Wes Groleau
2001-10-05 19:17 ` Vincent Marciante
2001-10-08 8:26 ` John McCabe
2001-10-05 1:55 ` Jeffrey Carter
2001-10-06 9:25 ` Simon Wright
2001-10-07 19:49 ` Jeffrey Carter
2001-10-07 21:12 ` Brian Rogoff
2001-10-08 14:51 ` Stephen Leake
2001-10-08 16:11 ` Francisco Javier Loma Daza
2001-10-08 16:17 ` John McCabe
2001-10-09 7:41 ` Francisco Javier Loma Daza
2001-10-10 8:04 ` John McCabe
2001-10-10 9:47 ` John McCabe
2001-10-10 10:17 ` Francisco Javier Loma Daza [this message]
2001-10-10 10:27 ` Francisco Javier Loma Daza
2001-10-10 12:50 ` John McCabe
2001-10-10 13:41 ` Francisco Javier Loma Daza
2001-10-08 16:25 ` Robert*
2001-10-08 19:50 ` Matthew Woodcraft
2001-10-08 16:37 ` on package naming, should the word Ted Dennison
2001-10-08 16:41 ` on package naming, should the word "_pkg" be part of it? Vincent Marciante
2001-10-08 18:50 ` Stephen Leake
2001-10-08 19:46 ` Vincent Marciante
2001-10-08 16:58 ` Jeffrey Carter
2001-10-08 19:06 ` Stephen Leake
2001-10-08 19:43 ` Brian Rogoff
2001-10-09 14:22 ` on package naming, should the word Ted Dennison
2001-10-10 5:24 ` Richard Riehle
2001-10-09 23:02 ` on package naming, should the word "_pkg" be part of it? Darren New
2001-10-10 0:55 ` Brian Rogoff
2001-10-10 1:48 ` Robert*
2001-10-10 2:28 ` Brian Rogoff
2001-10-10 15:10 ` Darren New
2001-10-10 18:38 ` tmoran
2001-10-10 19:30 ` Darren New
2001-10-10 9:51 ` Larry Kilgallen
2001-10-10 13:05 ` John McCabe
2001-10-10 15:37 ` Pascal Obry
2001-10-10 17:05 ` Steven Deller
2001-10-10 17:54 ` Pascal Obry
2001-10-11 8:35 ` John McCabe
2001-10-10 15:53 ` M. A. Alves
2001-10-10 18:53 ` Robert*
2001-10-11 6:54 ` Preben Randhol
2001-10-11 12:07 ` Robert*
2001-10-11 12:40 ` Lutz Donnerhacke
2001-10-11 14:24 ` Marin David Condic
2001-10-11 15:17 ` Larry Kilgallen
2001-10-11 15:34 ` Robert*
2001-10-11 17:41 ` David Starner
2001-10-12 8:25 ` John McCabe
2001-10-12 9:07 ` Ian Wild
2001-10-12 10:16 ` John McCabe
2001-10-12 12:04 ` Ian Wild
2001-10-12 17:01 ` Jeffrey Carter
2001-10-15 8:18 ` John McCabe
2001-10-15 18:21 ` Jeffrey Carter
2001-10-15 19:00 ` Pascal Obry
2001-10-15 20:26 ` on package naming, should the word Ted Dennison
2001-10-15 20:52 ` Robert*
2001-10-15 21:57 ` Ted Dennison
2001-10-15 22:40 ` Jeffrey Carter
2001-10-16 8:40 ` Jean-Pierre Rosen
2001-10-16 12:49 ` John McCabe
2001-10-16 16:57 ` Jeffrey Carter
2001-10-17 8:23 ` John McCabe
2001-10-11 18:37 ` on package naming, should the word "_pkg" be part of it? M. A. Alves
2001-10-11 19:39 ` on package naming, should the word Ted Dennison
2001-10-12 11:23 ` M. A. Alves
2001-10-13 17:32 ` Richard Riehle
2001-10-11 21:03 ` on package naming, should the word "_pkg" be part of it? Preben Randhol
2001-10-12 8:35 ` John McCabe
2001-10-12 11:35 ` M. A. Alves
2001-10-11 21:01 ` Preben Randhol
2001-10-12 2:04 ` David Starner
2001-10-12 9:02 ` Preben Randhol
2001-10-12 19:15 ` David Starner
2001-10-13 11:26 ` Preben Randhol
2001-10-12 2:29 ` Brian Rogoff
2001-10-12 8:45 ` Preben Randhol
2001-10-12 10:20 ` John McCabe
2001-10-12 14:54 ` on package naming, should the word Ted Dennison
2001-10-12 19:21 ` on package naming, should the word "_pkg" be part of it? David Starner
2001-10-12 21:23 ` Vector..
2001-10-13 2:13 ` Brian Rogoff
2001-10-13 3:21 ` Mark Biggar
2001-10-15 16:18 ` John McCabe
2001-10-11 13:19 ` Preben Randhol
2001-10-11 13:42 ` on package naming, should the word Ted Dennison
2001-10-11 15:18 ` Robert*
2001-10-11 15:47 ` Ted Dennison
2001-10-11 16:15 ` Larry Kilgallen
2001-10-11 16:15 ` Marin David Condic
2001-10-11 20:16 ` Simon Wright
2001-10-12 8:33 ` John McCabe
2001-10-12 16:27 ` Darren New
2001-10-14 20:34 ` Jacob Sparre Andersen
2001-10-14 22:03 ` Robert*
2001-10-15 12:04 ` Lutz Donnerhacke
2001-10-15 21:17 ` Florian Weimer
2001-10-15 6:50 ` on package naming, should the word "_pkg" be part of it? Mats Karlssohn
2001-10-15 10:24 ` Larry Kilgallen
2001-10-18 16:23 ` Robert A Duff
2001-10-05 6:05 ` MM
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox