From: Georg Bauhaus <sb463ba@l1-hrz.uni-duisburg.de>
Subject: Re: abstract sub programs overriding
Date: Fri, 12 Mar 2004 20:05:32 +0000 (UTC)
Date: 2004-03-12T20:05:32+00:00 [thread overview]
Message-ID: <c2t56c$oph$1@a1-hrz.uni-duisburg.de> (raw)
In-Reply-To: 1079116458.119831@master.nyc.kbcfp.com
Hyman Rosen <hyrosen@mail.com> wrote:
:
: But it also means that initializing a field of B cannot safely use A!
So it seems. Here is an example producing
Init field of B
hook has val -1073743060
Init B
when the main subprogram has a declaration of a variable of type
B but not of type A. When a variable of type A is added before
the B variable, the B variables initial hook val becomes 0.
If an A variable is declared after a B variable, the Natural
hook val stays at -1073743060. (GCC 3.1 Mac OS X)
with Ada.Finalization; use Ada.Finalization;
package Foo is
type Hook is tagged record -- not part of hierarchy
val: Natural; -- should not have negative values
end record;
procedure hook_op(ref: access Hook);
type A is new Controlled with record
a_part: aliased Hook;
end record;
procedure Initialize(Object: in out A);
type In_B is new Controlled with null record;
procedure Initialize(object: in out In_B);
type B is new A with record
field: In_B;
end record;
procedure Initialize(Object: in out B);
end foo;
with Ada.Text_IO; use Ada.Text_IO;
package body Foo is
procedure hook_op(ref: access Hook) is
begin
put_line("hook has val " & Natural'image(ref.val));
end hook_op;
procedure Initialize (Object : in out A) is
begin
Put_Line ("Init A");
end Initialize ;
procedure Initialize (Object : in out B) is
begin
hook_op(Object.a_part'access);
Put_Line ("Init B");
end Initialize ;
procedure Initialize (Object : in out In_B) is
begin
Put_Line ("Init field of B");
end Initialize;
end Foo;
next prev parent reply other threads:[~2004-03-12 20:05 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-03-02 19:01 abstract sub programs overriding Evangelista Sami
2004-03-03 1:43 ` Stephen Leake
2004-03-05 15:02 ` Evangelista Sami
2004-03-05 16:15 ` Marius Amado Alves
2004-03-08 18:54 ` Adam Beneschan
2004-03-08 23:42 ` Marius Amado Alves
2004-03-05 16:26 ` Marius Amado Alves
2004-03-06 9:31 ` Simon Wright
2004-03-06 15:18 ` Evangelista Sami
2004-03-06 19:09 ` Marius Amado Alves
2004-03-07 12:35 ` Simon Wright
2004-03-07 13:39 ` Marius Amado Alves
2004-03-08 19:08 ` Adam Beneschan
2004-03-08 20:03 ` Hyman Rosen
2004-03-09 8:51 ` Dmitry A. Kazakov
2004-03-09 13:34 ` Hyman Rosen
2004-03-09 14:49 ` Dmitry A. Kazakov
2004-03-09 15:14 ` Hyman Rosen
2004-03-09 15:56 ` Dmitry A. Kazakov
2004-03-09 16:32 ` Hyman Rosen
2004-03-10 9:32 ` Dmitry A. Kazakov
2004-03-10 13:08 ` Hyman Rosen
2004-03-10 14:58 ` Robert I. Eachus
2004-03-10 16:00 ` Hyman Rosen
2004-03-10 18:07 ` Robert I. Eachus
2004-03-10 20:04 ` Hyman Rosen
2004-03-11 2:43 ` Robert I. Eachus
2004-03-11 13:55 ` Hyman Rosen
2004-03-12 23:02 ` Robert I. Eachus
2004-03-14 21:33 ` Hyman Rosen
2004-03-15 5:59 ` Robert I. Eachus
2004-03-15 14:39 ` Hyman Rosen
2004-03-16 16:16 ` Robert I. Eachus
2004-03-16 16:51 ` Hyman Rosen
2004-03-16 19:54 ` Hyman Rosen
2004-03-16 23:16 ` Randy Brukardt
2004-03-17 1:54 ` Robert I. Eachus
2004-03-16 23:14 ` Randy Brukardt
2004-03-17 2:43 ` Robert I. Eachus
2004-03-17 17:40 ` Randy Brukardt
2004-03-18 2:39 ` Robert I. Eachus
2004-03-18 5:57 ` Randy Brukardt
2004-03-18 15:03 ` Hyman Rosen
2004-03-18 20:32 ` Randy Brukardt
2004-03-19 3:59 ` Hyman Rosen
2004-03-19 19:37 ` Randy Brukardt
2004-03-16 6:00 ` Randy Brukardt
2004-03-11 10:09 ` Dmitry A. Kazakov
2004-03-11 14:10 ` Hyman Rosen
2004-03-11 14:59 ` Dmitry A. Kazakov
2004-03-11 15:40 ` Hyman Rosen
2004-03-11 16:28 ` Dmitry A. Kazakov
2004-03-11 17:26 ` Hyman Rosen
2004-03-12 8:53 ` Dmitry A. Kazakov
2004-03-12 13:09 ` Hyman Rosen
2004-03-12 14:00 ` Dmitry A. Kazakov
2004-03-12 14:56 ` Hyman Rosen
2004-03-12 18:19 ` Dmitry A. Kazakov
2004-03-12 18:34 ` Hyman Rosen
2004-03-12 20:05 ` Georg Bauhaus [this message]
2004-03-13 10:12 ` Dmitry A. Kazakov
2004-03-12 18:07 ` Robert I. Eachus
2004-03-10 15:51 ` Evangelista Sami
2004-03-11 1:38 ` Dan Eilers
2004-03-06 23:20 ` Dan Eilers
2004-03-03 12:00 ` Marius Amado Alves
2004-03-13 7:51 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox