comp.lang.ada
 help / color / mirror / Atom feed
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;





  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