\hypertarget{group__Efl__Class}{}\section{Efl Class}
\label{group__Efl__Class}\index{Efl Class@{Efl Class}}
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Efl__Op__Description}{\+\_\+\+Efl\+\_\+\+Op\+\_\+\+Description}}
\item 
struct \mbox{\hyperlink{struct__Efl__Object__Ops}{\+\_\+\+Efl\+\_\+\+Object\+\_\+\+Ops}}
\begin{DoxyCompactList}\small\item\em This structure holds the ops and the size of the ops. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{struct__Efl__Class__Description}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Description}}
\begin{DoxyCompactList}\small\item\em This structure holds the class description. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}}(class\+\_\+get\+\_\+func\+\_\+name,  class\+\_\+desc,  parent\+\_\+class, ...)
\begin{DoxyCompactList}\small\item\em A convenient macro to be used for creating the class\+\_\+get function. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Efl__Class_ga2cc2991fe8cb6143c1e042fade1d150f}\label{group__Efl__Class_ga2cc2991fe8cb6143c1e042fade1d150f}} 
\#define \mbox{\hyperlink{group__Efl__Class_ga2cc2991fe8cb6143c1e042fade1d150f}{E\+O\+\_\+\+V\+E\+R\+S\+I\+ON}}~2
\begin{DoxyCompactList}\small\item\em The current version of EO. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Efl__Class_gabb9e425bb7762abd327e9667ca0c9269}{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE}}(ops, ...)
\begin{DoxyCompactList}\small\item\em Define an array of override functions for \mbox{\hyperlink{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}{efl\+\_\+object\+\_\+override}}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Efl__Class_ga09d772acf2ffed4a891dbbd55d88e120}\label{group__Efl__Class_ga09d772acf2ffed4a891dbbd55d88e120}} 
typedef enum \mbox{\hyperlink{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}} \mbox{\hyperlink{group__Efl__Class_ga09d772acf2ffed4a891dbbd55d88e120}{Efl\+\_\+\+Class\+\_\+\+Type}}
\begin{DoxyCompactList}\small\item\em A convenience typedef for \mbox{\hyperlink{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Efl__Class_ga674647600b94683827206bf634819baa}\label{group__Efl__Class_ga674647600b94683827206bf634819baa}} 
typedef struct \mbox{\hyperlink{struct__Efl__Op__Description}{\+\_\+\+Efl\+\_\+\+Op\+\_\+\+Description}} {\bfseries Efl\+\_\+\+Op\+\_\+\+Description}
\item 
\mbox{\Hypertarget{group__Efl__Class_ga71eee6fb50999c30c979b20344005dd1}\label{group__Efl__Class_ga71eee6fb50999c30c979b20344005dd1}} 
typedef struct \mbox{\hyperlink{struct__Efl__Object__Ops}{\+\_\+\+Efl\+\_\+\+Object\+\_\+\+Ops}} {\bfseries Efl\+\_\+\+Object\+\_\+\+Ops}
\item 
\mbox{\Hypertarget{group__Efl__Class_ga98e69ecc6f7b09bc7b9c1283da4910d7}\label{group__Efl__Class_ga98e69ecc6f7b09bc7b9c1283da4910d7}} 
typedef struct \mbox{\hyperlink{struct__Efl__Class__Description}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Description}} \mbox{\hyperlink{group__Efl__Class_ga98e69ecc6f7b09bc7b9c1283da4910d7}{Efl\+\_\+\+Class\+\_\+\+Description}}
\begin{DoxyCompactList}\small\item\em A convenience typedef for \mbox{\hyperlink{struct__Efl__Class__Description}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Description}}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}} \{ \newline
\mbox{\hyperlink{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fae1f3b7d196b0681080544a1e41b39066}{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR}} = 0, 
\newline
\mbox{\hyperlink{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9dac8f61177ee20e594da830ecf55f58}{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT}}, 
\newline
\mbox{\hyperlink{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9ba8f749ac06a38276120984f2003400}{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE}}, 
\newline
\mbox{\hyperlink{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fac2382e76f4171b47b9c30459138833c6}{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN}}
 \}
\begin{DoxyCompactList}\small\item\em An enum representing the possible types of an Eo class. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$ \mbox{\hyperlink{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}{efl\+\_\+class\+\_\+new}} (const \mbox{\hyperlink{group__Efl__Class_ga98e69ecc6f7b09bc7b9c1283da4910d7}{Efl\+\_\+\+Class\+\_\+\+Description}} $\ast$desc, const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$parent,...)
\begin{DoxyCompactList}\small\item\em Create a new class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_gadbaf6015b11535d7d71c715be53d3921}{efl\+\_\+class\+\_\+functions\+\_\+set}} (const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$klass\+\_\+id, const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$object\+\_\+ops, const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$class\+\_\+ops)
\begin{DoxyCompactList}\small\item\em Set the functions of a class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}{efl\+\_\+object\+\_\+override}} (\mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$obj, const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$ops)
\begin{DoxyCompactList}\small\item\em Override Eo functions of this object. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_ga5924dc6e04303305688de466cf13bae8}{efl\+\_\+isa}} (const \mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$obj, const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$klass)
\begin{DoxyCompactList}\small\item\em Check if an object \char`\"{}is a\char`\"{} klass. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char $\ast$ \mbox{\hyperlink{group__Efl__Class_ga973b024213e915fb0ee1c9cc54bc559c}{efl\+\_\+class\+\_\+name\+\_\+get}} (const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$klass)
\begin{DoxyCompactList}\small\item\em Gets the name of the passed class. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char $\ast$ \mbox{\hyperlink{group__Efl__Class_gaab507f509f7c47f465a0dd69496ef6ab}{efl\+\_\+debug\+\_\+name\+\_\+get}} (const \mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$obj\+\_\+id)
\begin{DoxyCompactList}\small\item\em Gets a debug name for this object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}


\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}\label{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}} 
\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS@{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}}
\index{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS@{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}{EFL\_DEFINE\_CLASS}}
{\footnotesize\ttfamily \#define E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS(\begin{DoxyParamCaption}\item[{}]{class\+\_\+get\+\_\+func\+\_\+name,  }\item[{}]{class\+\_\+desc,  }\item[{}]{parent\+\_\+class,  }\item[{}]{... }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keyword}{const} \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\_Class}} * \(\backslash\)
class\_get\_func\_name(\textcolor{keywordtype}{void}) \(\backslash\)
\{ \(\backslash\)
   const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\_Class}} *\_tmp\_parent\_class; \(\backslash\)
   static \textcolor{keyword}{const} \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\_Class}} * \textcolor{keyword}{volatile} \_my\_class = NULL; \(\backslash\)
   static \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} \_my\_init\_generation = 1; \(\backslash\)
   if (\mbox{\hyperlink{group__Eina__Types__Group_ga70675a75a5fb3e9a51d5af985a1fd3aa}{EINA\_UNLIKELY}}(\mbox{\hyperlink{group__Eo_gaae670ec969c91058fba6351d20d53406}{\_efl\_object\_init\_generation}} != 
      \_my\_init\_generation)) \(\backslash\)
     \{ \(\backslash\)
        \_my\_class = NULL; \textcolor{comment}{/* It's freed in efl\_object\_shutdown(). */} \(\backslash\)
     \} \(\backslash\)
   if (\mbox{\hyperlink{group__Eina__Types__Group_gaa9820797ec4c069e571f57e3c0c12216}{EINA\_LIKELY}}(!!\_my\_class)) \textcolor{keywordflow}{return} \_my\_class; \mbox{\hyperlink{group__Eina__Lock__Group_ga2ad27b83cf8562a41fe67557d8d2d753}{\(\backslash\)}}
\mbox{\hyperlink{group__Eina__Lock__Group_ga2ad27b83cf8562a41fe67557d8d2d753}{   \(\backslash\)}}
\mbox{\hyperlink{group__Eina__Lock__Group_ga2ad27b83cf8562a41fe67557d8d2d753}{   eina\_lock\_take}}(&\mbox{\hyperlink{group__Eo_ga330cefab26ab90f1153459ab69ab41d8}{\_efl\_class\_creation\_lock}}); \(\backslash\)
   if (!!\_my\_class) \(\backslash\)
     \{ \(\backslash\)
        eina\_lock\_release(&\mbox{\hyperlink{group__Eo_ga330cefab26ab90f1153459ab69ab41d8}{\_efl\_class\_creation\_lock}}); \(\backslash\)
        return \_my\_class; \(\backslash\)
     \} \(\backslash\)
   \_tmp\_parent\_class = parent\_class; \(\backslash\)
   \_my\_class = \mbox{\hyperlink{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}{efl\_class\_new}}(class\_desc, \_tmp\_parent\_class, \_\_VA\_ARGS\_\_); \(\backslash\)
   \_my\_init\_generation = \mbox{\hyperlink{group__Eo_gaae670ec969c91058fba6351d20d53406}{\_efl\_object\_init\_generation}}; \(\backslash\)
   eina\_lock\_release(&\mbox{\hyperlink{group__Eo_ga330cefab26ab90f1153459ab69ab41d8}{\_efl\_class\_creation\_lock}}); \(\backslash\)
   \(\backslash\)
   return \_my\_class; \(\backslash\)
\}
\end{DoxyCode}


A convenient macro to be used for creating the class\+\_\+get function. 

This macro is fairly simple and makes for better code. 
\begin{DoxyParams}{Parameters}
{\em class\+\_\+get\+\_\+func\+\_\+name} & the name of the wanted class\+\_\+get function name. \\
\hline
{\em class\+\_\+desc} & the class description. \\
\hline
{\em parent\+\_\+class} & The parent class for the function. See \mbox{\hyperlink{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}{efl\+\_\+class\+\_\+new()}} for more information. \\
\hline
{\em ...} & List of extensions. See \mbox{\hyperlink{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}{efl\+\_\+class\+\_\+new()}} for more information.\\
\hline
\end{DoxyParams}
You must use this macro if you want thread safety in class creation. \mbox{\Hypertarget{group__Efl__Class_gabb9e425bb7762abd327e9667ca0c9269}\label{group__Efl__Class_gabb9e425bb7762abd327e9667ca0c9269}} 
\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE@{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE}}
\index{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE@{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE}{EFL\_OPS\_DEFINE}}
{\footnotesize\ttfamily \#define E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE(\begin{DoxyParamCaption}\item[{}]{ops,  }\item[{}]{... }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keyword}{const} \mbox{\hyperlink{struct__Efl__Op__Description}{Efl\_Op\_Description}} \_##ops##\_descs[] = \{ \_\_VA\_ARGS\_\_ \}; \(\backslash\)
   const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\_Object\_Ops}} ops = \{ \_##ops##\_descs, 
      \mbox{\hyperlink{group__Eina__Types__Group_ga7c1b6f81660b4e30516169e9e7d3261c}{EINA\_C\_ARRAY\_LENGTH}}(\_##ops##\_descs) \}
\end{DoxyCode}


Define an array of override functions for \mbox{\hyperlink{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}{efl\+\_\+object\+\_\+override}}. 


\begin{DoxyParams}{Parameters}
{\em ops} & A name for the Efl\+\_\+\+Object\+\_\+\+Ops local variable to define \\
\hline
{\em ...} & A comma separated list of Efl\+\_\+\+Object\+\_\+\+Op overrides, using \#\+E\+F\+L\+\_\+\+O\+B\+J\+E\+C\+T\+\_\+\+O\+P\+\_\+\+F\+U\+NC or \#\+E\+F\+L\+\_\+\+O\+B\+J\+E\+C\+T\+\_\+\+O\+P\+\_\+\+C\+L\+A\+S\+S\+\_\+\+F\+U\+NC\\
\hline
\end{DoxyParams}
This can be used as follows\+: 
\begin{DoxyCode}
\mbox{\hyperlink{group__Efl__Class_gabb9e425bb7762abd327e9667ca0c9269}{EFL\_OPS\_DEFINE}}(ops, EFL\_OBJECT\_OP\_FUNC(public\_func, \_my\_func));
\mbox{\hyperlink{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}{efl\_object\_override}}(obj, &ops);
\end{DoxyCode}


\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}{efl\+\_\+object\+\_\+override}} 
\end{DoxySeeAlso}


\subsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}\label{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}} 
\index{Efl Class@{Efl Class}!\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type@{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}}
\index{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type@{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}{\_Efl\_Class\_Type}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__Efl__Class_ga27cb5db05d985da8cb3dd0894d98b58f}{\+\_\+\+Efl\+\_\+\+Class\+\_\+\+Type}}}



An enum representing the possible types of an Eo class. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR}!Efl Class@{Efl Class}}\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR}}}\mbox{\Hypertarget{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fae1f3b7d196b0681080544a1e41b39066}\label{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fae1f3b7d196b0681080544a1e41b39066}} 
E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR&Regular class. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT}!Efl Class@{Efl Class}}\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT}}}\mbox{\Hypertarget{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9dac8f61177ee20e594da830ecf55f58}\label{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9dac8f61177ee20e594da830ecf55f58}} 
E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT&Regular non instant-\/able class. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE}!Efl Class@{Efl Class}}\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE}}}\mbox{\Hypertarget{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9ba8f749ac06a38276120984f2003400}\label{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fa9ba8f749ac06a38276120984f2003400}} 
E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE&Interface. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN}!Efl Class@{Efl Class}}\index{Efl Class@{Efl Class}!E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN@{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN}}}\mbox{\Hypertarget{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fac2382e76f4171b47b9c30459138833c6}\label{group__Efl__Class_gga27cb5db05d985da8cb3dd0894d98b58fac2382e76f4171b47b9c30459138833c6}} 
E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN&Mixin. \\
\hline

\end{DoxyEnumFields}


\subsection{Function Documentation}
\mbox{\Hypertarget{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}\label{group__Efl__Class_ga76ae54040b4f7d188ef18524998dff8c}} 
\index{Efl Class@{Efl Class}!efl\+\_\+class\+\_\+new@{efl\+\_\+class\+\_\+new}}
\index{efl\+\_\+class\+\_\+new@{efl\+\_\+class\+\_\+new}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+class\+\_\+new()}{efl\_class\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}}$\ast$ efl\+\_\+class\+\_\+new (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Efl__Class_ga98e69ecc6f7b09bc7b9c1283da4910d7}{Efl\+\_\+\+Class\+\_\+\+Description}} $\ast$}]{desc,  }\item[{const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$}]{parent,  }\item[{}]{... }\end{DoxyParamCaption})}



Create a new class. 


\begin{DoxyParams}{Parameters}
{\em desc} & the class description to create the class with. \\
\hline
{\em parent} & the class to inherit from. \\
\hline
{\em ...} & A N\+U\+LL terminated list of extensions (interfaces, mixins and the classes of any composite objects). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The new class\textquotesingle{} handle on success or N\+U\+LL otherwise.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
There are two types of extensions, mixins and none-\/mixins. Mixins are inheriting both the A\+PI A\+ND the implementation. Non-\/mixins only inherit the A\+PI, so a class which inherits a non-\/mixin as an extension must implement the api.
\end{DoxyNote}
Use \mbox{\hyperlink{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}}. This will provide thread safety and other features easily.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Efl__Class_gadbaf6015b11535d7d71c715be53d3921}\label{group__Efl__Class_gadbaf6015b11535d7d71c715be53d3921}} 
\index{Efl Class@{Efl Class}!efl\+\_\+class\+\_\+functions\+\_\+set@{efl\+\_\+class\+\_\+functions\+\_\+set}}
\index{efl\+\_\+class\+\_\+functions\+\_\+set@{efl\+\_\+class\+\_\+functions\+\_\+set}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+class\+\_\+functions\+\_\+set()}{efl\_class\_functions\_set()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} efl\+\_\+class\+\_\+functions\+\_\+set (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$}]{klass\+\_\+id,  }\item[{const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$}]{object\+\_\+ops,  }\item[{const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$}]{class\+\_\+ops }\end{DoxyParamCaption})}



Set the functions of a class. 


\begin{DoxyParams}{Parameters}
{\em klass\+\_\+id} & the class whose functions we are setting. \\
\hline
{\em object\+\_\+ops} & The function structure we are setting for object functions \\
\hline
{\em class\+\_\+ops} & The function structure we are setting for class functions \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True on success, False otherwise.
\end{DoxyReturn}
This should only be called from within the initializer function.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}} 
\end{DoxySeeAlso}


References \+\_\+\+Efl\+\_\+\+Object\+\_\+\+Ops\+::count, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, and E\+RR.

\mbox{\Hypertarget{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}\label{group__Efl__Class_ga2543f1bfec65cd5e2e58b50e649f9525}} 
\index{Efl Class@{Efl Class}!efl\+\_\+object\+\_\+override@{efl\+\_\+object\+\_\+override}}
\index{efl\+\_\+object\+\_\+override@{efl\+\_\+object\+\_\+override}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+object\+\_\+override()}{efl\_object\_override()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} efl\+\_\+object\+\_\+override (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$}]{obj,  }\item[{const \mbox{\hyperlink{struct__Efl__Object__Ops}{Efl\+\_\+\+Object\+\_\+\+Ops}} $\ast$}]{ops }\end{DoxyParamCaption})}



Override Eo functions of this object. 


\begin{DoxyParams}{Parameters}
{\em ops} & The op description to override with. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false otherwise.
\end{DoxyReturn}
This lets you override all of the Eo functions of this object (this one included) and replace them with ad-\/hoc implementation. The contents of the array are copied so they can reside on the stack for instance.

You are only allowed to override functions that are defined in the class or any of its interfaces (that is, efl\+\_\+isa returning true).

If {\ttfamily ops} is \#\+N\+U\+LL, this will revert the {\ttfamily obj} to its original class without any function overrides.

It is not possible to override a function table of an object when it\textquotesingle{}s already been overridden. Call efl\+\_\+object\+\_\+override(obj, N\+U\+L\+L) first if you really need to do that.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Efl__Class_gabb9e425bb7762abd327e9667ca0c9269}{E\+F\+L\+\_\+\+O\+P\+S\+\_\+\+D\+E\+F\+I\+NE}} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, and E\+RR.



Referenced by efl\+\_\+reuse().

\mbox{\Hypertarget{group__Efl__Class_ga5924dc6e04303305688de466cf13bae8}\label{group__Efl__Class_ga5924dc6e04303305688de466cf13bae8}} 
\index{Efl Class@{Efl Class}!efl\+\_\+isa@{efl\+\_\+isa}}
\index{efl\+\_\+isa@{efl\+\_\+isa}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+isa()}{efl\_isa()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} efl\+\_\+isa (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$}]{obj,  }\item[{const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$}]{klass }\end{DoxyParamCaption})}



Check if an object \char`\"{}is a\char`\"{} klass. 


\begin{DoxyParams}{Parameters}
{\em obj} & The object to check \\
\hline
{\em klass} & The klass to check against. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+UE} if obj implements klass, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise.
\end{DoxyReturn}
Notice\+: This function does not support composite objects. 

References E\+F\+L\+\_\+\+I\+D\+\_\+\+D\+O\+M\+A\+I\+N\+\_\+\+S\+H\+A\+R\+ED, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+L\+I\+K\+E\+LY, eina\+\_\+lock\+\_\+release(), eina\+\_\+lock\+\_\+take(), E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY, and E\+RR.



Referenced by ecore\+\_\+con\+\_\+client\+\_\+fd\+\_\+get(), ecore\+\_\+con\+\_\+client\+\_\+flush(), ecore\+\_\+con\+\_\+server\+\_\+fd\+\_\+get(), ecore\+\_\+con\+\_\+server\+\_\+flush(), ecore\+\_\+exe\+\_\+auto\+\_\+limits\+\_\+set(), ecore\+\_\+exe\+\_\+callback\+\_\+pre\+\_\+free\+\_\+set(), ecore\+\_\+exe\+\_\+close\+\_\+stdin(), ecore\+\_\+exe\+\_\+data\+\_\+get(), ecore\+\_\+exe\+\_\+data\+\_\+set(), ecore\+\_\+exe\+\_\+event\+\_\+data\+\_\+get(), ecore\+\_\+exe\+\_\+flags\+\_\+get(), ecore\+\_\+exe\+\_\+free(), ecore\+\_\+exe\+\_\+hup(), ecore\+\_\+exe\+\_\+interrupt(), ecore\+\_\+exe\+\_\+kill(), ecore\+\_\+exe\+\_\+pid\+\_\+get(), ecore\+\_\+exe\+\_\+quit(), ecore\+\_\+exe\+\_\+send(), ecore\+\_\+exe\+\_\+signal(), ecore\+\_\+exe\+\_\+tag\+\_\+get(), ecore\+\_\+exe\+\_\+tag\+\_\+set(), ecore\+\_\+exe\+\_\+terminate(), ecore\+\_\+ipc\+\_\+client\+\_\+ip\+\_\+get(), ecore\+\_\+ipc\+\_\+server\+\_\+ip\+\_\+get(), elm\+\_\+layout\+\_\+signal\+\_\+callback\+\_\+add(), elm\+\_\+layout\+\_\+signal\+\_\+callback\+\_\+del(), elm\+\_\+object\+\_\+focus\+\_\+set(), elm\+\_\+object\+\_\+focused\+\_\+object\+\_\+get(), elm\+\_\+win\+\_\+resize\+\_\+object\+\_\+add(), evas\+\_\+device\+\_\+parent\+\_\+get(), evas\+\_\+object\+\_\+data\+\_\+del(), evas\+\_\+object\+\_\+data\+\_\+get(), evas\+\_\+object\+\_\+data\+\_\+set(), evas\+\_\+object\+\_\+del(), evas\+\_\+object\+\_\+name\+\_\+get(), evas\+\_\+object\+\_\+name\+\_\+set(), evas\+\_\+object\+\_\+smart\+\_\+type\+\_\+check(), evas\+\_\+object\+\_\+smart\+\_\+type\+\_\+check\+\_\+ptr(), and evas\+\_\+object\+\_\+top\+\_\+at\+\_\+pointer\+\_\+get().

\mbox{\Hypertarget{group__Efl__Class_ga973b024213e915fb0ee1c9cc54bc559c}\label{group__Efl__Class_ga973b024213e915fb0ee1c9cc54bc559c}} 
\index{Efl Class@{Efl Class}!efl\+\_\+class\+\_\+name\+\_\+get@{efl\+\_\+class\+\_\+name\+\_\+get}}
\index{efl\+\_\+class\+\_\+name\+\_\+get@{efl\+\_\+class\+\_\+name\+\_\+get}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+class\+\_\+name\+\_\+get()}{efl\_class\_name\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char$\ast$ efl\+\_\+class\+\_\+name\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$}]{klass }\end{DoxyParamCaption})}



Gets the name of the passed class. 


\begin{DoxyParams}{Parameters}
{\em klass} & the class to work on. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The class\textquotesingle{} name.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eo_ga49a6f50e0361e9d1975eb6e8bdd5b3c2}{efl\+\_\+class\+\_\+get()}} 
\end{DoxySeeAlso}


Referenced by efl\+\_\+object\+\_\+shutdown(), and evas\+\_\+object\+\_\+del().

\mbox{\Hypertarget{group__Efl__Class_gaab507f509f7c47f465a0dd69496ef6ab}\label{group__Efl__Class_gaab507f509f7c47f465a0dd69496ef6ab}} 
\index{Efl Class@{Efl Class}!efl\+\_\+debug\+\_\+name\+\_\+get@{efl\+\_\+debug\+\_\+name\+\_\+get}}
\index{efl\+\_\+debug\+\_\+name\+\_\+get@{efl\+\_\+debug\+\_\+name\+\_\+get}!Efl Class@{Efl Class}}
\subsubsection{\texorpdfstring{efl\+\_\+debug\+\_\+name\+\_\+get()}{efl\_debug\_name\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Elua_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+PI}} const char$\ast$ efl\+\_\+debug\+\_\+name\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo}} $\ast$}]{obj\+\_\+id }\end{DoxyParamCaption})}



Gets a debug name for this object. 


\begin{DoxyParams}{Parameters}
{\em obj\+\_\+id} & The object (or class) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A name to use in logs and for other debugging purposes
\end{DoxyReturn}
Note that subclasses can override Efl.\+Object \char`\"{}debug\+\_\+name\+\_\+override\char`\"{} to provide more meaningful debug strings. The standard format includes the class name, the object ID (this {\ttfamily obj\+\_\+id}), the reference count and optionally the object name (as defined by Efl.\+Object.\+name).

This might return a temporary string, as created by eina\+\_\+slstr, which means that a main loop should probably be running.

\begin{DoxySince}{Since}
1.\+21 
\end{DoxySince}


References efl\+\_\+cast(), E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+N\+T\+E\+R\+F\+A\+CE, E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+M\+I\+X\+IN, E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+AR, E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+T\+Y\+P\+E\+\_\+\+R\+E\+G\+U\+L\+A\+R\+\_\+\+N\+O\+\_\+\+I\+N\+S\+T\+A\+NT, efl\+\_\+super(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+strbuf\+\_\+append\+\_\+printf(), and eina\+\_\+strbuf\+\_\+new().

