\hypertarget{struct__Evas__Smart__Interface}{\section{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface Struct Reference}
\label{struct__Evas__Smart__Interface}\index{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}}
}


A smart object's {\bfseries base} interface definition.  


\subsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
\hypertarget{struct__Evas__Smart__Interface_ab13548f7381484b1d535f6932e68d908}{const char $\ast$ \hyperlink{struct__Evas__Smart__Interface_ab13548f7381484b1d535f6932e68d908}{name}}\label{struct__Evas__Smart__Interface_ab13548f7381484b1d535f6932e68d908}

\begin{DoxyCompactList}\small\item\em Name of the given interface. \end{DoxyCompactList}\item 
unsigned \hyperlink{struct__Evas__Smart__Interface_ac9d2d1e288a99c0d35532fca34b143ad}{private\+\_\+size}
\begin{DoxyCompactList}\small\item\em Size, in bytes, of the interface's private dada blob. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ \hyperlink{struct__Evas__Smart__Interface_a06f65adfa5c62e725bc8342e1719ac13}{add} )(\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Function to be called at object creation time. \end{DoxyCompactList}\item 
void($\ast$ \hyperlink{struct__Evas__Smart__Interface_ac37fe02da12655b8c61db350771f1f3f}{del} )(\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Function to be called at object deletion time. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
A smart object's {\bfseries base} interface definition. 

Every Evas interface must have a name field, pointing to a global, constant string variable. This string pointer will be the only way of retrieving back a given interface from a smart object. Two function pointers must be defined, too, which will be called at object creation and deletion times.

See also some \hyperlink{Example_Evas_Smart_Interfaces}{examples} on smart interfaces.

\begin{DoxySince}{Since}
1.\+7 
\end{DoxySince}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{evas-smart-interface_8c-example}{evas-\/smart-\/interface.\+c}.\end{Desc}


\subsection{Field Documentation}
\hypertarget{struct__Evas__Smart__Interface_ac9d2d1e288a99c0d35532fca34b143ad}{\index{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}!private\+\_\+size@{private\+\_\+size}}
\index{private\+\_\+size@{private\+\_\+size}!\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}}
\subsubsection[{private\+\_\+size}]{\setlength{\rightskip}{0pt plus 5cm}unsigned \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface\+::private\+\_\+size}}\label{struct__Evas__Smart__Interface_ac9d2d1e288a99c0d35532fca34b143ad}


Size, in bytes, of the interface's private dada blob. 

This will be allocated and freed automatically for you. Get it with \hyperlink{group__Evas__Smart__Object__Group_gaed3359faaae2d7cffd3e24441591da04}{evas\+\_\+object\+\_\+smart\+\_\+interface\+\_\+data\+\_\+get()}. \hypertarget{struct__Evas__Smart__Interface_a06f65adfa5c62e725bc8342e1719ac13}{\index{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}!add@{add}}
\index{add@{add}!\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}}
\subsubsection[{add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool}($\ast$ \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface\+::add)({\bf Evas\+\_\+\+Object} $\ast$obj)}}\label{struct__Evas__Smart__Interface_a06f65adfa5c62e725bc8342e1719ac13}


Function to be called at object creation time. 

This will take place {\bfseries before} the object's smart {\ttfamily \hyperlink{struct__Evas__Smart__Interface_a06f65adfa5c62e725bc8342e1719ac13}{add()}} function. \hypertarget{struct__Evas__Smart__Interface_ac37fe02da12655b8c61db350771f1f3f}{\index{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}!del@{del}}
\index{del@{del}!\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface@{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface}}
\subsubsection[{del}]{\setlength{\rightskip}{0pt plus 5cm}void($\ast$ \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Interface\+::del)({\bf Evas\+\_\+\+Object} $\ast$obj)}}\label{struct__Evas__Smart__Interface_ac37fe02da12655b8c61db350771f1f3f}


Function to be called at object deletion time. 

This will take place {\bfseries after} the object's smart {\ttfamily \hyperlink{struct__Evas__Smart__Interface_ac37fe02da12655b8c61db350771f1f3f}{del()}} function. 