The method class provides several meta information about a method and can be invoked. More...
#include <method.h>
Public Member Functions | |
access_levels | get_access_level () const noexcept |
Returns the access level with which this method was registered. More... | |
type | get_declaring_type () const noexcept |
Returns the class that declares this method. More... | |
variant | get_metadata (const variant &key) const |
Returns the meta data for the given key key . More... | |
string_view | get_name () const noexcept |
Returns the name of this method. More... | |
array_range< parameter_info > | get_parameter_infos () const noexcept |
Returns an ordered range of parameter_info objects, which matches the signature of the method. More... | |
type | get_return_type () const noexcept |
Returns the type object of the return type. More... | |
string_view | get_signature () const noexcept |
Returns the signature of this method as readable string. More... | |
variant | invoke (instance object) const |
Invokes the method represented by the current instance object . More... | |
variant | invoke (instance object, argument arg1) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke (instance object, argument arg1, argument arg2) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke (instance object, argument arg1, argument arg2, argument arg3) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke (instance object, argument arg1, argument arg2, argument arg3, argument arg4) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke (instance object, argument arg1, argument arg2, argument arg3, argument arg4, argument arg5) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke (instance object, argument arg1, argument arg2, argument arg3, argument arg4, argument arg5, argument arg6) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
variant | invoke_variadic (instance object, std::vector< argument > args) const |
Invokes the method represented by the current instance object , using the specified parameters. More... | |
bool | is_static () const noexcept |
Returns true if this method is static method, otherwise false. More... | |
bool | is_valid () const noexcept |
Returns true if this method is valid, otherwise false. More... | |
operator bool () const noexcept | |
Convenience function to check if this method is valid or not. More... | |
bool | operator!= (const method &other) const noexcept |
Returns true if this method is the not the same like the other . More... | |
bool | operator== (const method &other) const noexcept |
Returns true if this method is the same like the other . More... | |
Detailed Description
The method class provides several meta information about a method and can be invoked.
A instance of a method class can only be obtained from the type class. See type::get_method() and type::get_methods().
For registration a method, nested inside a class, see registration::class_<T>::method() and for global methods see registration::method().
Meta Information
A method has a name, a signature, a return type, a list of parameter information as well as attributes that specify its behavior: is_static(). When the method was declared inside a class, then get_declaring_type() can be used to obtain the type of this class.
The method can be invoked with invoke(); When its not a static method you have to provide a valid class instance to invoke the method. This instance can be the raw type on the stack; the current class hierarchy level doesn't matter. It can be also a raw pointer to the object or a variant which contains the instance, again as pointer or stack object. When the method is declared as static you you still have to provide an empty instance object, use therefore the default ctor of instance(), or as shortcut use simply {}
.
A method will be successfully invoked when the provided instance can be converted to the declared class type. When the method has parameters defined, then the same number of arguments must be provided and the type itself must 100% match the type of the registered function. An automatically type conversion is not performed.
The return type of invoke() is variant object. This object contains not only the possible return value of a function, it also indicates whether the method was invoked or not. A valid variant object means, that then the method was successfully invoked, otherwise not. When the invoked method has no return type, i.e. is a void
method, then a valid variant of type void
is returned.
While the invoke() function can directly forward up to six arguments, it is sometime necessary to forward even more arguments. Therefore the function invoke_variadic() should be used; it allows to pack an unlimited amount of arguments into a std::vector and forward them to the function.
Another way to invoke a method is to use the type class through type::invoke().
Copying and Assignment
A method object is lightweight and can be copied by value. However, each copy will refer to the same underlying method.
Typical Usage
- See also
- property, enumeration, constructor and type
Member Function Documentation
|
noexcept |
Returns the access level with which this method was registered.
- Remarks
- When the method is not valid, this function will return level access_levels::public_access.
- Returns
- access_levels of the method.
|
noexcept |
Returns the class that declares this method.
- Remarks
- When this method does not belong to a class (i.e. is a global method) it will return an invalid type. When this method is not valid, this function will return an invalid type object (see type::is_valid).
- Returns
- Type of the declaring class/struct for this method.
Returns the meta data for the given key key
.
- Remarks
- When no meta data is registered with the given
key
, an invalid variant object is returned (see variant::is_valid).
- Returns
- A variant object, containing arbitrary data.
|
noexcept |
Returns the name of this method.
- Returns
- Name of the method.
|
noexcept |
Returns an ordered range of parameter_info objects, which matches the signature of the method.
- Returns
- A range of parameter_info objects of the method signature.
|
noexcept |
Returns the type object of the return type.
- Returns
- The type of the return type.
|
noexcept |
Returns the signature of this method as readable string.
- Returns
- The signature as readable string.
Invokes the method represented by the current instance object
.
- Remarks
- When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- Returns
- The possible return value of the method.
- See also
- get_parameter_infos()
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
variant rttr::method::invoke | ( | instance | object, |
argument | arg1, | ||
argument | arg2, | ||
argument | arg3, | ||
argument | arg4 | ||
) | const |
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
variant rttr::method::invoke | ( | instance | object, |
argument | arg1, | ||
argument | arg2, | ||
argument | arg3, | ||
argument | arg4, | ||
argument | arg5 | ||
) | const |
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
variant rttr::method::invoke | ( | instance | object, |
argument | arg1, | ||
argument | arg2, | ||
argument | arg3, | ||
argument | arg4, | ||
argument | arg5, | ||
argument | arg6 | ||
) | const |
Invokes the method represented by the current instance object
, using the specified parameters.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance().
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
Invokes the method represented by the current instance object
, using the specified parameters.
Use this method when the argument count is higher then six.
- Remarks
- The given argument type has to match exactly the type of the underling method parameter, otherwise the method cannot be invoked and an invalid variant object (see variant::is_valid) will be returned. When it's a static method you still need to provide an instance object, use therefore the default ctor of instance(). Using this invoke function is slower, then specifying the arguments directly.
- See also
- get_parameter_infos()
- Returns
- The possible return value of the method.
|
noexcept |
Returns true if this method is static method, otherwise false.
A static method does not need an instance for performing an invoke.
- Remarks
- When the method is not valid, this function will return false.
- Returns
- True if this is a static method, otherwise false.
|
noexcept |
Returns true if this method is valid, otherwise false.
- Returns
- True if this method is valid, otherwise false.
|
explicitnoexcept |
Convenience function to check if this method is valid or not.
- Returns
- True if this method is valid, otherwise false.
|
noexcept |
Returns true if this method is the not the same like the other
.
- Returns
- True if both methods are different, otherwise false.
|
noexcept |
Returns true if this method is the same like the other
.
- Returns
- True if both methods are equal, otherwise false.
The documentation for this class was generated from the following file: