Mixin class template for deriving interface implementations. More...
Inherits I.
Public Member Functions | |
Interface_implement (Uint32 initial=1) | |
Constructor. More... |
|
Interface_implement (const Interface_implement< I > &other) | |
Copy constructor. More... |
|
Interface_implement< I > & | operator= (const Interface_implement< I > &other) |
Assignment operator. More... |
|
virtual Uint32 | retain () const |
Increments the reference count. More... |
|
virtual Uint32 | release () const |
Decrements the reference count. More... |
|
virtual const IInterface * | get_interface (const Uuid &interface_id) const |
Acquires a const interface. More... |
|
virtual IInterface * | get_interface (const Uuid &interface_id) |
Acquires a mutable interface. More... |
|
Uuid | get_iid () const |
Returns the interface ID of the most derived interface. More... |
|
Mixin class template for deriving interface implementations.
mi::base::Interface_implement is a mixin class template that allows you to derive interface class implementations easily. It provides you with the full implementation of reference counting and the mi::base::IInterface::get_interface(const Uuid&) method. It requires that you used interfaces derived from the corresponding mixin class template mi::base::Interface_declare.
mi::base::Interface_implement is derived from the interface I
.
I | The interface class that this class implements. |
#include <mi/base/interface_implement.h>
|
inline |
Constructor.
initial | The initial reference count (defaults to 1). |
|
inline |
Copy constructor.
Initializes the reference count to 1.
|
inline |
Returns the interface ID of the most derived interface.
|
inlinevirtual |
Acquires a const interface.
If this interface is derived from or is the interface with the passed interface_id
, then return a non-NULL
const
mi::base::IInterface* that can be casted via static_cast
to an interface pointer of the interface type corresponding to the passed interface_id
. Otherwise return NULL
.
In the case of a non-NULL
return value, the caller receives ownership of the new interface pointer, whose reference count has been retained once. The caller must release the returned interface pointer at the end to prevent a memory leak.
|
inlinevirtual |
Acquires a mutable interface.
If this interface is derived from or is the interface with the passed interface_id
, then return a non-NULL
mi::base::IInterface* that can be casted via static_cast
to an interface pointer of the interface type corresponding to the passed interface_id
. Otherwise return NULL
.
In the case of a non-NULL
return value, the caller receives ownership of the new interface pointer, whose reference count has been retained once. The caller must release the returned interface pointer at the end to prevent a memory leak.
|
inline |
Assignment operator.
The reference count of *this
and other
remain unchanged.
|
inlinevirtual |
Decrements the reference count.
Decrements the reference count of the object referenced through this interface and returns the new reference count. If the reference count dropped to zero, the object will be deleted. The operation is thread-safe.
|
inlinevirtual |
Increments the reference count.
Increments the reference count of the object referenced through this interface and returns the new reference count. The operation is thread-safe.