Math API nvidia_logo_transpbg.gif Up
mi::base::Interface_declare< id1, ... > Class Template Referenceabstract

Mixin class template for deriving new interface declarations. More...

#include <interface_declare.h>

Inheritance diagram for mi::base::Interface_declare< id1, ... >:

Public Types

typedef Interface_declare< id1, ... > Self
 Own type. More...
 
typedef Uuid_t< id1, ... > IID
 Declares the interface ID (IID) of this interface. More...
 

Public Member Functions

virtual Uint32 retain () const =0
 Increments the reference count. More...
 
virtual Uint32 release () const =0
 Decrements the reference count. More...
 
virtual const IInterfaceget_interface (const Uuid &interface_id) const =0
 Acquires a const interface from another. More...
 
template<class T>
const T * get_interface () const
 Acquires a const interface from another. More...
 
virtual IInterfaceget_interface (const Uuid &interface_id)=0
 Acquires a mutable interface from another. More...
 
template<class T>
T * get_interface ()
 Acquires a mutable interface from another. More...
 
virtual Uuid get_iid () const =0
 Returns the interface ID of the most derived interface. More...
 

Static Public Member Functions

static bool compare_iid (const Uuid &iid)
 Compares the interface ID iid against the interface ID of this interface and of its ancestors. More...
 

Detailed Description

template<Uint32 id1, Uint16 id2, Uint16 id3, Uint8 id4, Uint8 id5, Uint8 id6, Uint8 id7, Uint8 id8, Uint8 id9, Uint8 id10, Uint8 id11, class I = IInterface>
class mi::base::Interface_declare< id1, ... >

Mixin class template for deriving new interface declarations.

mi::base::Interface_declare is a mixin class template that allows you to derive new interface classes easily. It provides you with implementations for the interface ID handling and support for the mi::base::IInterface::get_interface method used by the corresponding mixin class template mi::base::Interface_implement.

It derives from the interface I, which is by default mi::base::IInterface. Each interface needs an interface ID (represented as a universally unique identifier (UUID)), which is defined here as 11 template parameter constants.

Include File:
#include <mi/base/interface_declare.h>