\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 struct 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 struct holds the description of a class. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Efl__Class_ga78f399dd62fea3d35e3304e2928f81c5}\label{group__Efl__Class_ga78f399dd62fea3d35e3304e2928f81c5}} 
\#define \mbox{\hyperlink{group__Efl__Class_ga78f399dd62fea3d35e3304e2928f81c5}{E\+F\+L\+\_\+\+C\+L\+A\+S\+S\+\_\+\+C\+L\+A\+SS}}~efl\+\_\+class\+\_\+class\+\_\+get()
\begin{DoxyCompactList}\small\item\em Abstract Efl class. \end{DoxyCompactList}\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 convenience 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_ga9ffec917f0363d2e2c62c39c86a65f5b}{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 
const \mbox{\hyperlink{group__Eo_ga4f7483d7c5a34a3b81d8f8467fdd566a}{Efl\+\_\+\+Class}} $\ast$ \mbox{\hyperlink{group__Efl__Class_ga502c44579f0b532b0f361f800a264e01}{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__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_ga0c3204683917d6f9f59b4fd778a50f69}{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__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_ga9ffec917f0363d2e2c62c39c86a65f5b}{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__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Efl__Class_ga26f40f0d692d4d4f906c1ffafea855ad}{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 
const char $\ast$ \mbox{\hyperlink{group__Efl__Class_ga4383338f14f80e335d2f503303b3dc28}{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}\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_ga502c44579f0b532b0f361f800a264e01}{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 convenience macro to be used for creating the class\+\_\+get function. 

This macro is fairly simple but should still be used as it\textquotesingle{}ll let us improve things easily. 
\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. Look at \mbox{\hyperlink{group__Efl__Class_ga502c44579f0b532b0f361f800a264e01}{efl\+\_\+class\+\_\+new()}} for more information. \\
\hline
{\em ...} & List of extensions. Look at \mbox{\hyperlink{group__Efl__Class_ga502c44579f0b532b0f361f800a264e01}{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_ga9ffec917f0363d2e2c62c39c86a65f5b}{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_ga9ffec917f0363d2e2c62c39c86a65f5b}{efl\_object\_override}}(obj, &ops);
\end{DoxyCode}


\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Efl__Class_ga9ffec917f0363d2e2c62c39c86a65f5b}{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_ga502c44579f0b532b0f361f800a264e01}\label{group__Efl__Class_ga502c44579f0b532b0f361f800a264e01}} 
\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 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{}s 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 api A\+ND the implementation. Non-\/mixins only inherit the api, so a class which inherits a non-\/mixin as extension must implement the api.
\end{DoxyNote}
You should use \mbox{\hyperlink{group__Efl__Class_ga3161daff203ef3a3ab4b12b7de2b5344}{E\+F\+L\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+C\+L\+A\+SS}}. It\textquotesingle{}ll 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_ga0c3204683917d6f9f59b4fd778a50f69}\label{group__Efl__Class_ga0c3204683917d6f9f59b4fd778a50f69}} 
\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__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_ga9ffec917f0363d2e2c62c39c86a65f5b}\label{group__Efl__Class_ga9ffec917f0363d2e2c62c39c86a65f5b}} 
\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__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 repalce them with ad-\/hoc implementation. The contents of the array are copied so they can for example reside on the stack.

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. 

References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, eina\+\_\+freeq\+\_\+ptr\+\_\+main\+\_\+add(), E\+I\+N\+A\+\_\+\+T\+R\+UE, E\+I\+N\+A\+\_\+\+U\+N\+L\+I\+K\+E\+LY, and E\+RR.



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

\mbox{\Hypertarget{group__Efl__Class_ga26f40f0d692d4d4f906c1ffafea855ad}\label{group__Efl__Class_ga26f40f0d692d4d4f906c1ffafea855ad}} 
\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__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\+\_\+win\+\_\+resize\+\_\+object\+\_\+add(), evas\+\_\+device\+\_\+parent\+\_\+get(), evas\+\_\+object\+\_\+data\+\_\+del(), evas\+\_\+object\+\_\+data\+\_\+get(), evas\+\_\+object\+\_\+data\+\_\+set(), 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_ga4383338f14f80e335d2f503303b3dc28}\label{group__Efl__Class_ga4383338f14f80e335d2f503303b3dc28}} 
\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 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{}s name.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eo_ga6f3c71a5e70fded07fd07becc04a9e47}{efl\+\_\+class\+\_\+get()}} 
\end{DoxySeeAlso}
