Re: Multi-method (VBDis)
6 Apr 2002 23:19:38 -0500

          From comp.compilers

Related articles
Multi-method (Jean-Marc Bourguet) (2002-03-31)
Re: Multi-method (2002-04-06)
Re: Multi-method (2002-04-06)
Re: Multi-method (Joachim Durchholz) (2002-04-06)
Re: Multi-method (Jean-Marc Bourguet) (2002-04-07)
Re: Multi-method (Jean-Marc Bourguet) (2002-04-07)
Re: Multi-method (Dmitry A.Kazakov) (2002-04-07)
Re: Multi-method (Joachim Durchholz) (2002-04-07)
Re: Multi-method (Richard Rogers) (2002-04-10)
| List of all articles for this month |

From: (VBDis)
Newsgroups: comp.compilers
Date: 6 Apr 2002 23:19:38 -0500
Organization: AOL Bertelsmann Online GmbH & Co. KG
References: 02-03-190
Keywords: OOP
Posted-Date: 06 Apr 2002 23:19:38 EST

Jean-Marc Bourguet <> schreibt:

>In the first case, the use of "vtable" allows to have an efficient way
>of making this dispatch, even in the context of separate compilation
>(at the cost of constraining the possible types).

IMO the types here are not constrained. Every new type has a new VMT,
and since the invocation goes from the object (instance) through its
VMT to its method, it's a pretty extensible system.

With multiple parameters C++ templates may be useful. The key IMO is
the separation of the various parameters, so that in the best case
every single parameter can be handled separately. Otherwise up to N^M
procedures are required, to handle N parameters of M possible types.

In Delphi the TPersistent class has an Assign mechanism, which allows
to assign one object to another one. When A.Assign(B) is invoked, then
A executes the assignment if B is of a type, which is built into
A.Assign. Otherwise A calls B.AssignTo(A), whereupon B tries to
execute the assignment, in the opposite direction. Both Assign and
AssignTo are virtual methods, which pass unhandled arguments (types)
to their parent class method. If neither A nor B know about the other
type, then the assignment fails.

How would you exclude the latter case, that no procedure can handle a
given combination of dynamic types?


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.