| void | 
Description
ObjectExtensions can be used to dynamically extend objects inheriting from AttributeProvider with data and functionality at runtime. Internally, it is a unified interface for several different GenericAttributes. There are two types of extensions: 1. non polymorphic and 2. polymorphic.
class MyExtension{
        PROVIDES_TYPE_NAME_NV(MyExtension)
        int someValue;
    public:
        MyExtension(int _someValue) : someValue(_someValue){}
        int getValue()const {   return someValue;   }
}
...
MyObject * a = new MyObject; // MyObject---|>AttributeProvider
Util::addObjectExtension<MyExtension>(42);
...
Util::requireObjectExtension<MyExtension>(a)->getValue();
Functions
| template< typename extension_t , typename object_t , typename… args > | |
| extension_t * | addObjectExtension(object_t * obj, args &&… params) | 
| template< typename extension_t , typename object_t , typename… args > | |
| extension_t * | addObjectExtension(const StringIdentifier & extName, object_t * obj, args &&… params) | 
| template< typename extension_t > | |
| extension_t * | getObjectExtension(const Util::AttributeProvider * obj) | 
| template< typename extension_t > | |
| extension_t * | getObjectExtension(const StringIdentifier & extName, const Util::AttributeProvider * obj) | 
| template< typename extension_t > | |
| extension_t * | requireObjectExtension(const Util::AttributeProvider * obj) | 
| template< typename extension_t > | |
| extension_t * | requireObjectExtension(const StringIdentifier & extName, const Util::AttributeProvider * obj) | 
| template< typename extension_t > | |
| bool | hasObjectExtension(const Util::AttributeProvider * obj) | 
| template< typename extension_t > | |
| bool | hasObjectExtension(const StringIdentifier & extName, const Util::AttributeProvider * obj) Returns true iff the objecthas a extension of type extension_t namedextName. | 
Documentation
function
 addObjectExtension
| public | 
| template< typename extension_t , typename object_t , typename… args > | ||
| extension_t * addObjectExtension( | object_t * | obj, | 
| args &&… | params | |
| ) | 
Create and add an extension of type extension_t to the givenobject.
- 
    Additional parameters are passed to the extension’s constructor. 
- 
    The extension’s name is inquired by calling extension_t::getObjectExtensionName() or extension_t::getClassId() 
- 
    The created extension is returned. 
Defined in Util/ObjectExtension.h:167
function
 addObjectExtension
| public | 
| template< typename extension_t , typename object_t , typename… args > | ||
| extension_t * addObjectExtension( | const StringIdentifier & | extName, | 
| object_t * | obj, | |
| args &&… | params | |
| ) | 
Create and add an extension of type extension_t to the givenobjectnamedextName.
See also: addObjectExtension (obj, params…)
Defined in Util/ObjectExtension.h:175
function
 getObjectExtension
| public | 
| template< typename extension_t > | ||
| extension_t * getObjectExtension( | const Util::AttributeProvider * | obj ) | 
If the givenobjecthas a extension of type extension_t, it is returned; nullptr otherwise.
- The extension’s name is inquired by calling extension_t::getObjectExtensionName() or extension_t::getClassId()
Defined in Util/ObjectExtension.h:182
function
 getObjectExtension
| public | 
| template< typename extension_t > | ||
| extension_t * getObjectExtension( | const StringIdentifier & | extName, | 
| const Util::AttributeProvider * | obj | |
| ) | 
If the givenobjecthas a extension of type extension_t namedextName, it is returned; nullptr otherwise.
See also: getObjectExtension(obj)
Defined in Util/ObjectExtension.h:189
function
 requireObjectExtension
| public | 
| template< typename extension_t > | ||
| extension_t * requireObjectExtension( | const Util::AttributeProvider * | obj ) | 
If the givenobjecthas a extension of type extension_t, it is returned; otherwise, an exception is thrown.
- The extension’s name is inquired by calling extension_t::getObjectExtensionName() or extension_t::getClassId().
Defined in Util/ObjectExtension.h:196
function
 requireObjectExtension
| public | 
| template< typename extension_t > | ||
| extension_t * requireObjectExtension( | const StringIdentifier & | extName, | 
| const Util::AttributeProvider * | obj | |
| ) | 
If the givenobjecthas a extension of type extension_t namedextName, it is returned; otherwise, an exception is thrown.
- The extension’s name is inquired by calling extension_t::getObjectExtensionName() or extension_t::getClassId().
Defined in Util/ObjectExtension.h:203
function
 hasObjectExtension
| public | 
| template< typename extension_t > | ||
| bool hasObjectExtension( | const Util::AttributeProvider * | obj ) | 
Returns true iff theobjecthas a extension of type extension_t.
- The extension’s name is inquired by calling extension_t::getObjectExtensionName() or extension_t::getClassId().
Defined in Util/ObjectExtension.h:212
function
 hasObjectExtension
| public | 
| template< typename extension_t > | ||
| bool hasObjectExtension( | const StringIdentifier & | extName, | 
| const Util::AttributeProvider * | obj | |
| ) | 
Returns true iff theobjecthas a extension of type extension_t namedextName.
Defined in Util/ObjectExtension.h:217