scispace - formally typeset
Search or ask a question

Showing papers on "Multiple dispatch published in 2006"


Journal IssueDOI
TL;DR: This paper proposes an extension of C++ (also applicable to other object-oriented languages) that enables double dispatch as a language feature and defines a translation from the new constructs to standard C++ and presents the preprocessor implementing this translation, called doublecpp.
Abstract: Double dispatch is the ability to dynamically select a method not only according to the run-time type of the receiver (single dispatch), but also according to the run-time type of the argument. This mechanism unleashes the power of dynamic binding in object-oriented languages, so enhancing re-usability and separation of responsibilities. However, many mainstream languages, such as, e.g., C++ and Java, do not provide it, resorting only to single dispatch. In this paper we propose an extension of C++ (also applicable to other object-oriented languages) that enables double dispatch as a language feature. This yields dynamic overloading and covariant specialization of methods. We define a translation from the new constructs to standard C++ and we present the preprocessor implementing this translation, called doublecpp . The translated code enjoys static type safety and implements the semantics of double dispatch by using only standard mechanisms of static overloading and dynamic binding, with minimal impact on the performance of the program. Copyright © 2006 John Wiley & Sons, Ltd.

15 citations


Journal ArticleDOI
TL;DR: A new approach for multimethod implementation in C++ based on recursive deferred dispatching is proposed, which provides multicenthods with strong type safety and constant execution time.
Abstract: The author proposes a new approach for multimethod implementation in C++ based on recursive deferred dispatching. The proposed approach provides a partially broken dependency between target classes and a broken dependency between target classes and multimethods. This approach provides multimethods with strong type safety and constant execution time. A multimethod is a virtual method of several objects. Programming languages such as Dylan and the Common Lisp Object System (CLOS) allow for multimethods

6 citations


Book ChapterDOI
03 Jul 2006
TL;DR: F(Eml) is a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules, and its key novel features are alias declarations, generalized type relations in module signatures, and the nontrivial definition of signature subsumption.
Abstract: We present F(Eml), a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules. Parameterized modules permit subclasses and function extensions to be defined and typechecked once, and then reused to extend multiple argument modules. F(Eml)'s predecessor, Eml, supported classes and extensible functions with multiple dispatch, but its support for parameterized modules was weak. F(Eml)'s key novel features are alias declarations, generalized type relations in module signatures, and a nontrivial definition of signature subsumption.

6 citations


Patent
19 Jun 2006
TL;DR: In this article, the authors present a system and methods for providing dispatch call features, such as the ability to maintain multiple simultaneous dispatch calls and manage multiple dispatch stations, which is similar to the one described in this paper.
Abstract: Systems and methods for providing dispatch call features are provided. The dispatch call features include the ability to maintain multiple simultaneous dispatch calls and the ability to manage multiple dispatch stations. The maintenance of multiple simultaneous dispatch calls feature allows a dispatch station to place a current dispatch call on-hold to either initiate a new dispatch call or to accept an incoming dispatch call. The management of multiple dispatch stations feature allows a number of dispatch stations to be associated with one or more dispatch station identifiers. When a dispatch call is made to one of the dispatch station identifiers, all associated dispatch stations are paged. The first dispatch station to respond to the page is connected to the incoming dispatch call.

2 citations