\hypertarget{structefl_1_1eo_1_1inherit}{\section{efl\+:\+:eo\+:\+:inherit$<$ D, E $>$ Struct Template Reference}
\label{structefl_1_1eo_1_1inherit}\index{efl\+::eo\+::inherit$<$ D, E $>$@{efl\+::eo\+::inherit$<$ D, E $>$}}
}


Template-\/class that allows client code to inherit from {\itshape E\+O C++ Classes} without the need to make explicit calls to {\itshape E\+O} methods --- that would naturally be necessary to register itself in the {\itshape E\+O Subsystem}.  


\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{structefl_1_1eo_1_1inherit_ad5b730e9332e496e0b9ec2909bec34db}{typedef \hyperlink{structefl_1_1eo_1_1inherit}{inherit}$<$ D, E...$>$ {\bfseries inherit\+\_\+base}}\label{structefl_1_1eo_1_1inherit_ad5b730e9332e496e0b9ec2909bec34db}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename... Args$>$ }\\\hyperlink{structefl_1_1eo_1_1inherit_aea6ddb2450212514a7de6a057e2a4eba}{inherit} (Args \&\&...args)
\begin{DoxyCompactList}\small\item\em Class constructor. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}{\hyperlink{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}{$\sim$inherit} ()}\label{structefl_1_1eo_1_1inherit_aef06f246c2b89228700755267d9769ab}

\begin{DoxyCompactList}\small\item\em Class destructor. \end{DoxyCompactList}\item 
\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$ \hyperlink{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}{\+\_\+eo\+\_\+ptr} () const 
\begin{DoxyCompactList}\small\item\em Gets the {\itshape E\+O Object} corresponding to this {\itshape E\+O C++ Object}. \end{DoxyCompactList}\item 
\hyperlink{group__Eo_ga88d29df76a2921aa5478803156d83be5}{Eo\+\_\+\+Class} const $\ast$ \hyperlink{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}{\+\_\+eo\+\_\+class} () const 
\begin{DoxyCompactList}\small\item\em Gets the {\itshape E\+O Class} corresponding to this {\itshape E\+O C++ Class}. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eo_1_1inherit_a0a163324b607dc51d9338c58723a5c42}{{\footnotesize template$<$typename T $>$ }\\void {\bfseries parent\+\_\+set} (T \&p\+\_\+)}\label{structefl_1_1eo_1_1inherit_a0a163324b607dc51d9338c58723a5c42}

\item 
\hypertarget{structefl_1_1eo_1_1inherit_aa612bfe20231661a44d9535caab47f56}{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} $\ast$ {\bfseries \+\_\+release} ()}\label{structefl_1_1eo_1_1inherit_aa612bfe20231661a44d9535caab47f56}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}{\hyperlink{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}{inherit} (\hyperlink{structefl_1_1eo_1_1inherit}{inherit} const \&other)}\label{structefl_1_1eo_1_1inherit_ae3bb06a2c954b11c06bcf846bcb98c3d}

\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}{\hyperlink{structefl_1_1eo_1_1inherit}{inherit} \& \hyperlink{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}{operator=} (\hyperlink{structefl_1_1eo_1_1inherit}{inherit} const \&other)}\label{structefl_1_1eo_1_1inherit_ad6585f2ac6fedc07fc68e5c6f5e4003a}

\begin{DoxyCompactList}\small\item\em Assignment Operator. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename D, typename... E$>$struct efl\+::eo\+::inherit$<$ D, E $>$}

Template-\/class that allows client code to inherit from {\itshape E\+O C++ Classes} without the need to make explicit calls to {\itshape E\+O} methods --- that would naturally be necessary to register itself in the {\itshape E\+O Subsystem}. 


\begin{DoxyParams}{Parameters}
{\em D} & The derived class \\
\hline
{\em O} & The parent class \\
\hline
{\em E} & Class extensions (either mixins or interfaces)\\
\hline
\end{DoxyParams}
The derived class {\ttfamily D} will inherit all E\+O operations and event callbacks from the parent class {\ttfamily P}, as well as from the {\ttfamily Base Class} (\hyperlink{structefl_1_1eo_1_1base}{efl\+::eo\+::base}) since every E\+O C++ Class must inherit from it.

\hyperlink{structefl_1_1eo_1_1inherit}{efl\+::eo\+::inherit} makes use of meta-\/template elements to build (in compile-\/time) code capable of registering {\ttfamily D} as an {\itshape E\+O Class} within {\itshape E\+O Subsystem}. Each class is registered only once upon instantiation of an object of its type.

\begin{DoxyNote}{Note}
Function overriding is currently not supported. 
\end{DoxyNote}


\subsection{Constructor \& Destructor Documentation}
\hypertarget{structefl_1_1eo_1_1inherit_aea6ddb2450212514a7de6a057e2a4eba}{\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!inherit@{inherit}}
\index{inherit@{inherit}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{inherit}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ template$<$typename... Args$>$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::{\bf inherit} (
\begin{DoxyParamCaption}
\item[{Args \&\&...}]{args}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eo_1_1inherit_aea6ddb2450212514a7de6a057e2a4eba}


Class constructor. 

\hyperlink{structefl_1_1eo_1_1inherit}{inherit} has a \char`\"{}variadic\char`\"{} constructor implementation that allows from zero to E\+F\+L\+\_\+\+M\+A\+X\+\_\+\+A\+R\+G\+S heterogeneous parameters. 

\subsection{Member Function Documentation}
\hypertarget{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}{\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!\+\_\+eo\+\_\+ptr@{\+\_\+eo\+\_\+ptr}}
\index{\+\_\+eo\+\_\+ptr@{\+\_\+eo\+\_\+ptr}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{\+\_\+eo\+\_\+ptr}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ {\bf Eo}$\ast$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::\+\_\+eo\+\_\+ptr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eo_1_1inherit_aaf2f829f60297bc40b1d27a54b1f0f39}


Gets the {\itshape E\+O Object} corresponding to this {\itshape E\+O C++ Object}. 

\begin{DoxyReturn}{Returns}
A pointer to the {\itshape E\+O Object}. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}{\index{efl\+::eo\+::inherit@{efl\+::eo\+::inherit}!\+\_\+eo\+\_\+class@{\+\_\+eo\+\_\+class}}
\index{\+\_\+eo\+\_\+class@{\+\_\+eo\+\_\+class}!efl\+::eo\+::inherit@{efl\+::eo\+::inherit}}
\subsubsection[{\+\_\+eo\+\_\+class}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename D , typename... E$>$ {\bf Eo\+\_\+\+Class} const$\ast$ {\bf efl\+::eo\+::inherit}$<$ D, E $>$\+::\+\_\+eo\+\_\+class (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{structefl_1_1eo_1_1inherit_a5b93ac471b6e71a6817007f68fd44f0a}


Gets the {\itshape E\+O Class} corresponding to this {\itshape E\+O C++ Class}. 

\begin{DoxyReturn}{Returns}
A pointer to the {\itshape E\+O Class}. 
\end{DoxyReturn}
