Used to implement IObject::GetInterface() methods with given interfaces to expose.
More...
#include <adtf_iid.h>
Inherits BASE_OBJECT, and EXTEND_INTERFACE.
|
|
typedef BASE_OBJECT | base_type |
| | base object type
|
| |
|
|
virtual | ~extend_object () |
| | Protected destructor --> Only the final implementation can be destroyed!
|
| |
| virtual tResult | GetInterface (const char *i_strIID, void *&o_pInterface) noexcept |
| | Default implementation of IObject::GetInterface()
|
| |
| virtual tResult | GetInterface (const char *i_strIID, const void *&o_pInterface) const noexcept |
| | Default implementation of IObject::GetInterface() provided for const correctness.
|
| |
|
virtual void | Destroy () const |
| | Default implementation to destroy an object of this type.
|
| |
template<typename BASE_OBJECT, typename EXTEND_INTERFACE, typename Child>
class adtf::ucom::ant::extend_object< BASE_OBJECT, EXTEND_INTERFACE, Child >
Used to implement IObject::GetInterface() methods with given interfaces to expose.
- Template Parameters
-
| BASE_OBJECT | The implemented object to extend. |
| EXTEND_INTERFACE | The interface to extend the BASE_OBJECT with. |
| If | multiple inheritance leads to ambiguous calls, use a hierarchy here. Otherwise only EXTEND_INTERFACE is allowed. |
| Child | Child type of this extend_object and is only needed if UCOM_RESOLVE() is given in child class Child. |
This template class is intended as subclass of a concrete implementation of IObject. When inheriting from this class, two template parameters of type inherit_from and expose_interfaces, both being variadic templates themselves, must be given. With struct inherit_from those types are given which default_object itself uses as its parents in form of multiple inheritance. As default_object itself must be inherited by the concrete implementation of the given subclassed interfaces, it marks some kind of intermediate layer only used to implement IObject::GetInterface() methods. With struct expose_interfaces the interfaces to expose are given.
- See also
- uCOM Cast
◆ GetInterface() [1/2]
template<typename BASE_OBJECT, typename EXTEND_INTERFACE, typename Child>
|
|
inlineprotectedvirtualnoexcept |
Default implementation of IObject::GetInterface() provided for const correctness.
Using the interface types given with expose_interfaces, meta struct template interface_expose is used to evaluate whether the interface identified with i_strIID is exposed by this.
- Parameters
-
| [in] | i_strIID | Identifier of the interface being requested. |
| [out] | o_pInterface | Address of pointer variable that receives the interface pointer requested in idInterface. Upon successful return, *o_pInterface contains the requested interface pointer to the object. If the object does not expose the interface specified in i_strIID, i_pInterface is set to NULL. |
- Returns
- Standard error.
- Return values
-
| ERR_NOERROR | The interface identified by i_strIID was implemented and exposed by the implementation of *this. o_pInterface points to the queried interface. |
| ERR_NO_INTERFACE | The requested interface is not exposed. o_pInterface==NULL |
◆ GetInterface() [2/2]
template<typename BASE_OBJECT, typename EXTEND_INTERFACE, typename Child>
|
|
inlineprotectedvirtualnoexcept |
Default implementation of IObject::GetInterface()
Using the interface types given with expose_interfaces, meta struct template interface_expose is used to evaluate whether the interface identified with i_strIID is exposed by this.
- Parameters
-
| [in] | i_strIID | Identifier of the interface being requested. |
| [out] | o_pInterface | Address of pointer variable that receives the interface pointer requested in idInterface. Upon successful return, *o_pInterface contains the requested interface pointer to the object. If the object does not expose the interface specified in i_strIID, i_pInterface is set to NULL. |
- Returns
- Standard error.
- Return values
-
| ERR_NOERROR | The interface identified by i_strIID was implemented and exposed by the implementation of *this. o_pInterface points to the queried interface. |
| ERR_NO_INTERFACE | The requested interface is not exposed. o_pInterface==NULL |
The documentation for this class was generated from the following file: