comp.lang.ada
 help / color / mirror / Atom feed
From: cl1motorsports <cwlambert76@yahoo.com>
Subject: Re: how do i implement double-dispatching?
Date: Sat, 20 Dec 2003 00:27:19 -0600
Date: 2003-12-20T00:27:19-06:00	[thread overview]
Message-ID: <pan.2003.12.20.06.27.10.68359@yahoo.com> (raw)
In-Reply-To: pan.2003.12.17.18.08.34.122050@yahoo.com

On Wed, 17 Dec 2003 12:08:41 -0600, cl1motorsports wrote:
<snip>
> package body Abstract_Visitor is
> 
>    procedure Accept_Visitor(V : in out Visitor_Record'Class; Node : in Parse_Tree_Node_Record'Class) is
>    begin
>       Visit(V, Node);
>    end Accept_Visitor;
> 
> end Abstract_Visitor;
> 
> -- END OF CODE
<snip>

thanks for all of your suggestions. after careful consideration i decided
to change the above Accept_Visitor procedure to:

procedure Accept_Vistor(V:in out Visitor_Record'Class; Node : in Parse_Tree_Node_Record'Class) is
begin
  if Node in Equal_Op'Class then
	Visit(V, Equal_Op(Node));
  elsif Node in Number_Node'Class then
	Visit(V, Number_Node(Node));
  ...
  end if;
end Accept_Visitor;

now it only dynamically dispatches on the Visitor_Record'Class and the
Node parameter is determined at compile time. I don't think i would have
figured that out by myself (at least not at this point in time).

and just to let y'all know. I'm trying to write a C to Ada translator. The
first task on my list is to handle #define statements. I'm sure this
should be in another thread if a topic gets started on this. But I thought
it would be nice to let y'all know what you were helping me with here.

Thanks again everyone 

[:^)



  parent reply	other threads:[~2003-12-20  6:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-17 18:08 how do i implement double-dispatching? cl1motorsports
2003-12-18  2:17 ` Stephen Leake
2003-12-18  9:48 ` Dmitry A. Kazakov
2003-12-18 15:13 ` Martin Krischik
2003-12-20  6:27 ` cl1motorsports [this message]
2003-12-20  9:56   ` Martin Krischik
2003-12-20 17:00     ` cl1motorsports
2003-12-21 13:39       ` Stephen Leake
2003-12-21 17:40         ` cl1motorsports
2003-12-22 22:47           ` Stephen Leake
2003-12-22 21:41   ` cl1motorsports
2003-12-22 21:47     ` cl1motorsports
2003-12-23 11:03       ` Dmitry A. Kazakov
2003-12-22 22:49     ` Stephen Leake
2003-12-22 23:04       ` cl1motorsports
replies disabled

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