The class visitor, is used for visiting your registered accessors of a type at compile time. More...
#include <visitor.h>
Classes | |
struct | constructor_function_info |
The constructor_function_info class is used to forward all information during registration of a constructor function. More... | |
struct | constructor_info |
The constructor_info class is used to forward all information during registration of a constructor. More... | |
struct | method_info |
The method_info class is used to forward all information during registration of a method. More... | |
struct | property_getter_setter_info |
The method_info class is used to forward all information during registration of a property. More... | |
struct | property_info |
The property_info class is used to forward all information during registration of a property. More... | |
struct | type_info |
The type_info class is used to forward all information during registration of a class. More... | |
Public Member Functions | |
visitor () | |
The constructor of the visitor class. More... | |
virtual | ~visitor () |
The destructor of the visitor class. More... | |
void | visit (type t) |
Calling this function will indirectly call the visit functions for all registered types members (constructors, methods, properties, etc...) This includes also registered base classes. More... | |
void | visit (method meth) |
Calling this function will indirectly call the function visit_method() for the underlying registered type. More... | |
void | visit (constructor ctor) |
Calling this function will indirectly call the function visit_constructor() or visit_constructor_function() for the underlying registered type. More... | |
void | visit (property prop) |
Calling this function will indirectly call one of the functions: More... | |
template<typename T , typename... Ctor_Args> | |
void | visit_constructor (const constructor_info< T > &info) |
This function will be called when you visit a constructor via: visit(type) or directlyvisit(constructor). More... | |
template<typename T > | |
void | visit_constructor_function (const constructor_function_info< T > &info) |
This function will be called when you visit a constructor function via: visit(type) or visit(constructor). More... | |
template<typename T > | |
void | visit_getter_setter_property (const property_getter_setter_info< T > &info) |
This function will be called when you visit a property via: visit(property). More... | |
template<typename T > | |
void | visit_global_getter_setter_property (const property_getter_setter_info< T > &info) |
This function will be called when you visit a global property via: visit(property). More... | |
template<typename T > | |
void | visit_global_method (const method_info< T > &info) |
This function will be called when you visit a global method via: visit(method). More... | |
template<typename T > | |
void | visit_global_property (const property_info< T > &info) |
This function will be called when you visit a global property via: visit(property). More... | |
template<typename T > | |
void | visit_global_readonly_property (const property_info< T > &info) |
This function will be called when you visit a global read only property via: visit(property). More... | |
template<typename T > | |
void | visit_method (const method_info< T > &info) |
This function will be called when you visit a type method via: visit(type) or visit(method). More... | |
template<typename T > | |
void | visit_property (const property_info< T > &info) |
This function will be called when you visit a property via: visit(property). More... | |
template<typename T > | |
void | visit_readonly_property (const property_info< T > &info) |
This function will be called when you visit a read only property via: visit(property). More... | |
template<typename T , typename... Base_Classes> | |
void | visit_type_begin (const type_info< T > &info) |
This function will be called when you visit a type via: visit(type) It is the first function that will be invoked, when visiting a type. More... | |
template<typename T , typename... Base_Classes> | |
void | visit_type_end (const type_info< T > &info) |
This function will be called when you visit a type via: visit(type). More... | |
Detailed Description
The class visitor, is used for visiting your registered accessors of a type at compile time.
Sometimes it might be necessary to get access to the underlying registered accessor (e.g. function pointers, object pointers, etc...) of a type. For example in order to bind a type to a scripting library, which only allows to register concrete types. The generic approach of using a visitor will solve this problem. Furthermore, because it is template based, you can write one visitor to iterate over all your types in a generic way and have access to the static type information.
Own visitor
In order to implement your own visitor class, you have to derive from the class visitor and reimplement the following visitor function templates:
void visitor::visit_type_begin(const type_info<T>& info)
void visitor::visit_type_end(const type_info<T>& info);
void visitor::visit_constructor(const constructor_info<T>& info);
void visitor::visit_constructor_function(const constructor_function_info<T>& info);
void visitor::visit_method(const method_info<T>& info);
void visitor::visit_global_method(const method_info<T>& info);
and add the macro RTTR_ENABLE(visitor);
in the class body.
Using a visitor
It is very important that the include of the visitor is done before the include of <rttr/registration>
, otherwise the visitor will not be found by rttr. The reason for that is, the visit functions will be created at compile time, so the declaration has to be before the instantiation. Because of limitations of the c++ preprocessor, it is not possible to include the visitor or the <rttr/registration>
header in a precompiled header and use the visitor functionality. All custom visitors will not be found.
Constructor & Destructor Documentation
rttr::visitor::visitor | ( | ) |
The constructor of the visitor class.
|
virtual |
The destructor of the visitor class.
Member Function Documentation
void rttr::visitor::visit | ( | type | t | ) |
Calling this function will indirectly call the visit functions for all registered types members (constructors, methods, properties, etc...) This includes also registered base classes.
void rttr::visitor::visit | ( | method | meth | ) |
Calling this function will indirectly call the function visit_method() for the underlying registered type.
void rttr::visitor::visit | ( | constructor | ctor | ) |
Calling this function will indirectly call the function visit_constructor() or visit_constructor_function() for the underlying registered type.
void rttr::visitor::visit | ( | property | prop | ) |
Calling this function will indirectly call one of the functions:
- visit_property()
- visit_readonly_property()
- visit_global_property()
- visit_global_readonly_property() for the underlying registered type.
void rttr::visitor::visit_constructor | ( | const constructor_info< T > & | info | ) |
This function will be called when you visit a constructor via: visit(type) or directlyvisit(constructor).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. Ctor_Args The argument of the constructor info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(constructor)
void rttr::visitor::visit_constructor_function | ( | const constructor_function_info< T > & | info | ) |
This function will be called when you visit a constructor function via: visit(type) or visit(constructor).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(constructor)
void rttr::visitor::visit_getter_setter_property | ( | const property_getter_setter_info< T > & | info | ) |
This function will be called when you visit a property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(property), type::get_property()
void rttr::visitor::visit_global_getter_setter_property | ( | const property_getter_setter_info< T > & | info | ) |
This function will be called when you visit a global property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
void rttr::visitor::visit_global_method | ( | const method_info< T > & | info | ) |
This function will be called when you visit a global method via: visit(method).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(method), type::get_global_method()
void rttr::visitor::visit_global_property | ( | const property_info< T > & | info | ) |
This function will be called when you visit a global property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
void rttr::visitor::visit_global_readonly_property | ( | const property_info< T > & | info | ) |
This function will be called when you visit a global read only property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
void rttr::visitor::visit_method | ( | const method_info< T > & | info | ) |
This function will be called when you visit a type method via: visit(type) or visit(method).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(method), type::get_method()
void rttr::visitor::visit_property | ( | const property_info< T > & | info | ) |
This function will be called when you visit a property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(property), type::get_property()
void rttr::visitor::visit_readonly_property | ( | const property_info< T > & | info | ) |
This function will be called when you visit a read only property via: visit(property).
Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. info This object will be provided by RTTR, use it's public members and the using's
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- visit(property), type::get_property()
void rttr::visitor::visit_type_begin | ( | const type_info< T > & | info | ) |
This function will be called when you visit a type via: visit(type) It is the first function that will be invoked, when visiting a type.
When the visiting type has base classes, it will be first invoked with he most basic type and last step with the current type. Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal template type, do not work with this parameter directly. Base_Classes... A list of base classes, ascending order info This object will be provided by RTTR, use it's public members and the using's
- Remarks
- You have to register your type via: registration::class_ otherwise the static type information for invoke cannot be retrieved. The signature has to match exactly the declaration here, otherwise it will not be invoked.
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- type::get_base_classes()
void rttr::visitor::visit_type_end | ( | const type_info< T > & | info | ) |
This function will be called when you visit a type via: visit(type).
It is the last function that will be invoked, when visiting a type. When the visiting type has base classes, it will be first invoked with he most basic type and last step with the current type. Reimplement this function, when you need the static compile time type information.
- Parameters
-
T Internal type type, do not work with this parameter directly. Base_Classes... A list of base classes, ascending order info This object will be provided by RTTR, use it's public members and the using's
- Remarks
- You have to register your type via: registration::class_ otherwise the static type information for invoke cannot be retrieved. The signature has to match exactly the declaration here, otherwise it will not be invoked.
You normally don't call this function directly. However, make sure this function is declared public, otherwise it cannot be invoked.
- See also
- type::get_base_classes()
The documentation for this class was generated from the following file: