|
siplasplas
A library for C++ reflection and introspection
|
Implements a type-erased object container with support for dynamic method and attribute invokation. More...
#include <siplasplas/typeerasure/any.hpp>
Public Types | |
| using | Base = SimpleAny< Storage > |
| using | Method = cpp::typeerasure::Function< FunctionsStorage, FunctionArgsStorage > |
| using | Attribute = cpp::typeerasure::Field< AttributesStorage > |
Public Member Functions | |
| MethodProxy | operator() (const std::string &name) |
| Gives access to an object method. More... | |
| ConstMethodProxy | operator() (const std::string &name) const |
| Gives access to an object method. More... | |
| AttributeProxy | operator[] (const std::string &name) |
| ConstAttributeProxy | operator[] (const std::string &name) const |
| bool | hasMethod (const std::string &name) const |
| Checks if the object has a method with a given name. More... | |
| bool | hasAttribute (const std::string &name) const |
| Checks if the object has an attribute with a given name. More... | |
| ::cpp::SimpleAny< Storage > & | simpleAny () |
| Returns the any object as a SimpleAny. | |
| const ::cpp::SimpleAny< Storage > & | simpleAny () const |
| Returns the any object as a SimpleAny. | |
Public Member Functions inherited from cpp::SimpleAny< Storage > | |
| SimpleAny () | |
| Constructs an empty SimpleAny. | |
| SimpleAny (const cpp::typeerasure::TypeInfo &typeInfo) | |
| Default constructs a value of the given type. More... | |
| bool | empty () const |
| Checks whether the any has an object hosted in or if is empty. More... | |
| template<typename T , typename = std::enable_if_t< !std::is_base_of< SimpleAny, std::decay_t<T> >::value >> | |
| SimpleAny (const T &value) | |
| Constructs an any of type T from an lvalue of type T. More... | |
| template<typename OtherStorage > | |
| SimpleAny (const SimpleAny< OtherStorage > &other) | |
| template<typename OtherStorage > | |
| SimpleAny (SimpleAny< OtherStorage > &&other) | |
| SimpleAny (const SimpleAny &other) | |
| SimpleAny (SimpleAny &&other) | |
| template<typename T > | |
| bool | hasType () const |
| Checks if the any has a value of type T. More... | |
| template<typename T > | |
| const std::decay_t< T > & | get () const |
| Returns a readonly reference to the hosted object. More... | |
| template<typename T > | |
| std::decay_t< T > & | get () |
| Returns a reference to the hosted object. More... | |
| cpp::typeerasure::TypeInfo | typeInfo () const |
| Returns the type information of the hosted type. | |
| cpp::SimpleAny< cpp::NonOwningStorage > | getReference () |
| Returns a reference any to the hosted object. | |
| cpp::SimpleAny< cpp::ConstNonOwningStorage > | getReference () const |
| Returns a const reference any to the hosted object. | |
| template<typename T > | |
| SimpleAny & | operator= (const T &value) |
| Assigns a value of type T. More... | |
| SimpleAny & | operator= (const SimpleAny &other) |
| SimpleAny & | operator= (SimpleAny &&other) |
| const Storage & | getStorage () const |
| Returns the storage backend of the SimpleAny object. | |
Static Public Member Functions | |
| template<typename Class , typename... Args> | |
| static Any | create (Args &&...args) |
Static Public Member Functions inherited from cpp::SimpleAny< Storage > | |
| template<typename T , typename... Args> | |
| static SimpleAny | create (Args &&...args) |
| Constructs a SimpleAny with an in-place constructed value of type T. More... | |
Implements a type-erased object container with support for dynamic method and attribute invokation.
cpp::Any extends the interface of cpp::SimpleAny to add dynamic manipulation of the object's interface. cpp::Any keeps track of a set of methods and attributes the instace has assigned, so it can behave as an instance of a class with its interface and associated data members:
The behavior is undefined if the user access a method or attribute the any object doesn't have
| Storage | Storage for the type erased object |
| FunctionsStorage | Storage for the type erased methods. Storage by default |
| FunctionArgsStorage | Storage for the type erased method call arguments. FunctionsStorage by default |
| AttributesStorage | Storage for the type erased attributes. Storage by default |
|
inline |
Checks if the object has an attribute with a given name.
| name | name of the attribute |
|
inline |
Checks if the object has a method with a given name.
| name | name of the method |
|
inline |
Gives access to an object method.
| name | Name of the object. If the object has no method with that name, the behavior is undefined |
|
inline |
Gives access to an object method.
| name | Name of the object. If the object has no method with that name, the behavior is undefined |