Public Types | Public Member Functions | Protected Member Functions
efl::eo::inherit< D, E > Struct Template Reference

Template-class that allows client code to inherit from EO C++ Classes without the need to make explicit calls to EO methods — that would naturally be necessary to register itself in the EO Subsystem. More...

Public Types

typedef inherit< D, E... > inherit_base
 

Public Member Functions

 ~inherit ()
 Class destructor.
 
Eo_eo_ptr () const
 Gets the EO Object corresponding to this EO C++ Object. More...
 
Eo_Class const * _eo_class () const
 Gets the EO Class corresponding to this EO C++ Class. More...
 
Eo_release ()
 
template<typename... Args>
 inherit (efl::eo::parent_type _p, Args &&... args)
 Class constructor. More...
 
template<typename... Args>
 inherit (Args &&... args)
 

Protected Member Functions

 inherit (inherit const &other)
 Copy constructor.
 
inheritoperator= (inherit const &other)
 Assignment Operator.
 

Detailed Description

template<typename D, typename... E>
struct efl::eo::inherit< D, E >

Template-class that allows client code to inherit from EO C++ Classes without the need to make explicit calls to EO methods — that would naturally be necessary to register itself in the EO Subsystem.

Parameters
DThe derived class
OThe parent class
EClass extensions (either mixins or interfaces)

The derived class D will inherit all EO operations and event callbacks from the parent class P, as well as from the Base Class (efl::eo::concrete) since every EO C++ Class must inherit from it.

efl::eo::inherit makes use of meta-template elements to build (in compile-time) code capable of registering D as an EO Class within EO Subsystem. Each class is registered only once upon instantiation of an object of its type.

Note
Function overriding is currently not supported.

Constructor & Destructor Documentation

◆ inherit()

template<typename D , typename... E>
template<typename... Args>
efl::eo::inherit< D, E >::inherit ( efl::eo::parent_type  _p,
Args &&...  args 
)
inline

Class constructor.

inherit has a "variadic" constructor implementation that allows from zero to EFL_MAX_ARGS heterogeneous parameters.

Member Function Documentation

◆ _eo_ptr()

template<typename D , typename... E>
Eo* efl::eo::inherit< D, E >::_eo_ptr ( ) const
inline

Gets the EO Object corresponding to this EO C++ Object.

Returns
A pointer to the EO Object.

◆ _eo_class()

template<typename D , typename... E>
Eo_Class const* efl::eo::inherit< D, E >::_eo_class ( ) const
inline

Gets the EO Class corresponding to this EO C++ Class.

Returns
A pointer to the EO Class.