lumiera::visitor::Dispatcher< TAR, TOOL > Class Template Reference

For each posible call entry point via some subclass of the visitable hierarchy, we maintain a dispatcher table to keep track of all concrete tool implementations able to recieve and process calls on objects of this subclass.

#include <visitordispatcher.hpp>

List of all members.

Public Member Functions

template<class TOOLImpl>
void enroll (TOOLImpl *typeref)
ReturnType forwardCall (TAR &target, TOOL &tool)

Static Public Attributes

static Singleton< Dispatcher
< TAR, TOOL > > 
instance
 storage for the dispatcher table(s)

Private Types

typedef TOOL::ReturnType ReturnType
typedef ReturnType(* Trampoline )(TAR &, TOOL &)

Private Member Functions

void accomodate (size_t index)
bool is_known (size_t id)
Trampoline storedTrampoline (size_t id)
void storePtr (size_t id, Trampoline func)

Static Private Member Functions

template<class TOOLImpl>
static ReturnType callTrampoline (TAR &obj, TOOL &tool)
 generator for Trampoline functions, used to dispatch calls down to the right "treat"-Function on the correct concrete tool implementation class
static ReturnType errorHandler (TAR &target, TOOL &tool)

Private Attributes

std::vector< Trampoline > table_
 VTable for storing the Trampoline pointers.


Detailed Description

template<class TAR, class TOOL>
class lumiera::visitor::Dispatcher< TAR, TOOL >

Definition at line 108 of file visitordispatcher.hpp.


The documentation for this class was generated from the following file:

Generated on Sat Aug 16 18:10:45 2008 for Lumiera by  doxygen 1.5.5