comp.lang.ada
 help / color / mirror / Atom feed
From: Geoff Bull <gbull@acenet.com.au>
Subject: Re: C/C++ programmer giving Ada95 a chance -- writing an emulator.
Date: 2000/03/31
Date: 2000-03-31T00:00:00+00:00	[thread overview]
Message-ID: <38E44CC7.4206E027@acenet.com.au> (raw)
In-Reply-To: 2YSE4.251$sy6.25957@news.pacbell.net


tmoran@bix.com wrote:
> 
> > This_Delimiter := Delimiter(File_Name'Class(File_Name));
> >   (he presumably meant to say:
> > This_Delimiter := Delimiter(Heirarchical_File_Name_Type'Class(File_Name));
> >   )

Another of the many minor mistakes in what is still an excellent book.


> > The assignment to File_Name_Copy throws away
> > the tag of File_Name, and the call on Delimiter always dispatches
> > to the Heirarchical_File_Name_Type version of the function.

That makes sense.

If I Initialise the array like so:

   Op_Table : array (Opcode) of Op_Root 
     := (0 => Op_Root (O0),
         others => OU);

then make the assignments:
    Op_Table (1) := Op_Root (O1);
    Op_Table (2) := Op_Root (O2);
    Op_Table (3) := Op_Root (O3);

I get the output:

opcode 00
undefined opcode
undefined opcode
undefined opcode
undefined opcode

What is going on here?
It look like the assigments throw away the tag (like Cohen
says it should) but the initializer keeps the tag.
Indeed the RM says in section 3.9 (22):
"The tag of an object of a class-wide tagged type is that of its
initialization expression. "
The trouble is Op_Table components are not of a class wide type.

Instead section 3.9 (20) applies:
"The tag of a stand-alone object, a component, or an aggregate of a
specific tagged type T identifies T"


>   I think we have here both an error in Gnat and an error in
> Cohen's book!

Unless somebody can show me where the RM says otherwise, I agree.
I guess I'd better report this.

Thanks for the enlightenment.
Cheers
Geoff




  reply	other threads:[~2000-03-31  0:00 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <38E3DBD7.27F5B246@acenet.com.au>
2000-03-31  0:00 ` C/C++ programmer giving Ada95 a chance -- writing an emulator tmoran
2000-03-31  0:00   ` Geoff Bull [this message]
2000-04-01  0:00     ` Tucker Taft
2000-04-02  0:00       ` Geoff Bull
2000-04-02  0:00       ` Robert Dewar
2000-04-02  0:00         ` Geoff Bull
     [not found] <38e148e2.5089627@news.shreve.net>
2000-03-28  0:00 ` Geoff Bull
2000-03-28  0:00   ` Jean-Marc Bourguet
2000-03-28  0:00 ` Juergen Pfeifer
2000-03-28  0:00   ` Jim Rogers
2000-03-29  0:00     ` Ed Falis
2000-03-29  0:00       ` James S. Rogers
2000-03-29  0:00         ` Jean-Marc Bourguet
2000-03-29  0:00         ` Robert Dewar
2000-03-30  0:00         ` Geoff Bull
2000-03-30  0:00           ` tmoran
2000-04-01  0:00           ` Robert Dewar
2000-03-28  0:00 ` Ken Garlington
2000-03-30  0:00 ` Geoff Bull
     [not found]   ` <38e7e951.8384503@news.shreve.net>
2000-04-02  0:00     ` Jean-Pierre Rosen
2000-04-02  0:00       ` Robert Dewar
2000-04-03  0:00         ` Paul Graham
2000-04-06  0:00           ` Robert Dewar
2000-04-06  0:00             ` Larry Kilgallen
2000-04-06  0:00               ` Robert Dewar
2000-04-06  0:00                 ` Gautier
2000-04-07  0:00                   ` Robert Dewar
2000-04-07  0:00                     ` Gautier
     [not found] ` <38e19656.17008608@news.shreve.net>
2000-03-29  0:00   ` Marin D. Condic
2000-03-29  0:00   ` swhalen
2000-03-29  0:00     ` Robert Dewar
2000-03-30  0:00       ` swhalen
2000-03-29  0:00   ` Marc A. Criley
2000-03-29  0:00   ` David Starner
2000-03-29  0:00     ` Robert A Duff
2000-03-30  0:00       ` Geoff Bull
2000-04-01  0:00         ` Robert Dewar
2000-03-29  0:00     ` Robert Dewar
2000-03-29  0:00       ` Marin D. Condic
2000-03-29  0:00         ` Robert A Duff
2000-03-29  0:00           ` Marin D. Condic
2000-03-29  0:00       ` Jean-Marc Bourguet
2000-03-29  0:00         ` Robert Dewar
2000-03-30  0:00           ` Jean-Marc Bourguet
2000-04-01  0:00             ` Robert Dewar
2000-03-30  0:00       ` Geoff Bull
2000-04-01  0:00         ` Robert Dewar
2000-04-02  0:00           ` Geoff Bull
2000-04-02  0:00             ` Robert Dewar
2000-04-02  0:00             ` swhalen
2000-03-30  0:00   ` Samuel T. Harris
2000-04-01  0:00     ` Robert Dewar
2000-04-05  0:00       ` Robert A Duff
2000-03-30  0:00   ` Ken Garlington
replies disabled

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