comp.lang.ada
 help / color / mirror / Atom feed
From: john.mccabe@emrad.com.nospam (John McCabe)
Subject: Re: on package naming, should the word "_pkg" be part of it?
Date: Wed, 10 Oct 2001 09:47:04 GMT
Date: 2001-10-10T09:47:04+00:00	[thread overview]
Message-ID: <3bc40fef.1827097@news.demon.co.uk> (raw)
In-Reply-To: 3bc3ffb5.826258@news.demon.co.uk

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 realise this may seem like a complex and unrealistic example, but
consider (the implementation we were looking at) the use of lists...

At the Parent level you have a generic that defines a container for a
type.
At the Child level you have a linked list of objects of the type.
At the grandchild level you have a doubly-linked list of object of the
type.
At the great-grandchild you have an ordered list of objects of the
type.

Similarly for Container - Tree - AVL Tree.

There are, of course different implementations possible which may
avoid this problem but, ultimately, the easiest way is to *avoid*
using "Object" as the name of a 'class'.

Hope this helps. The examples were compiled with GNAT 3.13p on Windows
2000.




  reply	other threads:[~2001-10-10  9:47 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 [this message]
2001-10-10 10:17                   ` Francisco Javier Loma Daza
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