Open Multimethods for C++
Peter Pirkelbauer Yuriy Solodkyy Bjarne Stroustrup
Texas A&M University
Generative Programming and Component Engineering
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 1 / 26
Open Multimethods for C ++ Peter Pirkelbauer Yuriy Solodkyy Bjarne - - PowerPoint PPT Presentation
Open Multimethods for C ++ Peter Pirkelbauer Yuriy Solodkyy Bjarne Stroustrup Texas A&M University Generative Programming and Component Engineering Oct 2 nd , 2007 Open Multimethods for C ++ Parasol Lab (Texas A&M) 1 / 26 Overview
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 1 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 2 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 3 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 4 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 4 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 4 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 4 / 26
◮ Separates classes from virtual functions
◮ EDG based modification of the IA-64 Object Model ◮ Prelinker ◮ Overhead is ~12% of a regular virtual function call Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 5 / 26
◮ Image Format Conversions ◮ Algorithm selection according to dynamic properties of objects ◮ Action System
◮ Shape intersection ◮ Object comparison ◮ Operations in dynamically typed languages Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 6 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 7 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 8 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 9 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 10 / 26
◮ Detected before progam invocation ◮ Classes are available
◮ e.g.: dynamic linking, local classes Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 11 / 26
◮ Overload resolution ◮ Virtual function call ◮ Open Multimethods
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 12 / 26
◮ Overload resolution ◮ Virtual function call ◮ Open Multimethods
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 12 / 26
◮ Overload resolution ◮ Virtual function call ◮ Open Multimethods
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 12 / 26
◮ Overload resolution ◮ Virtual function call ◮ Open Multimethods
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 12 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 13 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 13 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 13 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 13 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 14 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 14 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 15 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 15 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 16 / 26
◮ asymmetric dispatch
◮ whole program view
◮ single inheritance
◮ programmmer resolved through Glue - methods. Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 17 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 18 / 26
◮ deterministic ◮ but non specfied
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 19 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 20 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 21 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 22 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 23 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 24 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 25 / 26
Parasol Lab (Texas A&M) Open Multimethods for C++ Oct 2nd , 2007 26 / 26