From: Michael Erdmann <michael.erdmann@snafu.de>
To: Jean-Pierre Rosen <rosen@adalog.fr>
Subject: Re: Endless loop by dispatching
Date: Fri, 11 Jul 2003 17:19:06 +0200
Date: 2003-07-11T17:19:06+02:00 [thread overview]
Message-ID: <3F0ED56A.9090807@snafu.de> (raw)
In-Reply-To: <n01meb.8la.ln@skymaster>
Jean-Pierre Rosen wrote:
>
> You missed the point :-)
>
I understood this mean while. It seems that the case A.Object(This) does
not change the tag. I have checked the RM but i found nothing, but this
seems to be accepted as normal behaviour in the community.
> Serialize is a general entry point, which dispatches to Write. If you call it again from Write, it will redispatch
> to Write, hence the loop.
>
> Now do you think that Write of B is really Serialize of A, plus something else?
> Isn't it *Write* of A, plus something else? If you change your package to
>
> package body B is
>
> procedure Write(
> This : in Object ) is
> begin
> A.Write( A.Object( This ) );
> Put_Line( "Q =" & Natural'Image(This.Q));
> end Write;
>
> end B;
>
> It will be OK.
>
> Oh, by the way, why do you need Serialize at all? Since all it does is call Write, why don't you
> call Write directly?
>
Maybe the conseded code i have sent was missleading. Since the
procedure Serialize is intended to do more then just i put it
here as pseudocode:
procedure Serialze( this : in Object'Class ) is
Serialize( Super( This ) );
F := Get( Attribute( this'Tag ) )
while F /= null loop
Unbounded_String'Output( S, F.Name );
Write( This, F.Id );
F := Next(...);
end loop;
end Serialize:
Using write directly is possible but then i have to put the code of
serialze everwhere were i want to do the trick. I there would be
something like the Super operation yielding the references to the
super class then everthing would be fine, i guess!
Michael
next prev parent reply other threads:[~2003-07-11 15:19 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-11 8:22 Q: Endless loop by dispatching Michael Erdmann
2003-07-11 9:46 ` Jean-Pierre Rosen
2003-07-11 15:19 ` Michael Erdmann [this message]
2003-07-11 10:01 ` Q: " Dmitry A. Kazakov
2003-07-11 15:07 ` Michael Erdmann
2003-07-12 1:41 ` Jeffrey Carter
2003-07-14 8:48 ` Dmitry A. Kazakov
2003-07-14 18:38 ` Randy Brukardt
2003-07-15 8:47 ` Dmitry A. Kazakov
2003-07-15 17:23 ` Randy Brukardt
2003-07-16 8:08 ` Dmitry A. Kazakov
2003-07-16 17:44 ` Robert I. Eachus
2003-07-17 1:57 ` Robert A Duff
2003-07-18 9:10 ` Dale Stanbrough
2003-07-18 20:26 ` Robert I. Eachus
2003-07-18 21:35 ` tmoran
2003-07-19 0:25 ` Robert I. Eachus
2003-07-19 2:30 ` tmoran
2003-07-19 5:48 ` Robert I. Eachus
2003-07-21 8:38 ` Dmitry A. Kazakov
2003-07-21 10:08 ` Robert I. Eachus
2003-07-21 13:21 ` Dmitry A. Kazakov
2003-07-21 18:51 ` Robert I. Eachus
2003-07-22 7:41 ` Dmitry A. Kazakov
2003-07-22 10:36 ` Lutz Donnerhacke
2003-07-22 12:11 ` Dmitry A. Kazakov
2003-07-22 12:18 ` Lutz Donnerhacke
2003-07-22 14:46 ` Dmitry A. Kazakov
2003-07-22 15:11 ` Lutz Donnerhacke
2003-07-23 8:12 ` Dmitry A. Kazakov
2003-07-19 14:44 ` Chad R. Meiners
2003-07-20 12:36 ` Robert I. Eachus
2003-07-11 16:27 ` T. Kurt Bond
2003-07-12 8:37 ` Michael Erdmann
2003-07-15 7:11 ` Kenneth Almquist
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox