\hypertarget{group__Edje__External__Plugin__Development__Group}{}\section{Edje Development of External Plugins}
\label{group__Edje__External__Plugin__Development__Group}\index{Edje Development of External Plugins@{Edje Development of External Plugins}}


Functions to register, unregister E\+X\+T\+E\+R\+N\+AL types and develop the plugins.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register} (const char $\ast$type\+\_\+name, const \hyperlink{struct__Edje__External__Type}{Edje\+\_\+\+External\+\_\+\+Type} $\ast$type\+\_\+info)
\begin{DoxyCompactList}\small\item\em Register a type to be used by E\+X\+T\+E\+R\+N\+AL parts. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}{edje\+\_\+external\+\_\+type\+\_\+unregister} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Unregister a previously registered E\+X\+T\+E\+R\+N\+AL type. \end{DoxyCompactList}\item 
void \hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register} (const \hyperlink{struct__Edje__External__Type__Info}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info} $\ast$array)
\begin{DoxyCompactList}\small\item\em Register a batch of types and their information. \end{DoxyCompactList}\item 
void \hyperlink{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister} (const \hyperlink{struct__Edje__External__Type__Info}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info} $\ast$array)
\begin{DoxyCompactList}\small\item\em Unregister a batch of given external type previously registered. \end{DoxyCompactList}\item 
unsigned int \hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Return the current A\+BI version for Edje\+\_\+\+External\+\_\+\+Type structure. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}{edje\+\_\+external\+\_\+iterator\+\_\+get} (void)
\item 
\hyperlink{struct__Edje__External__Param}{Edje\+\_\+\+External\+\_\+\+Param} $\ast$ \hyperlink{group__Edje__External__Plugin__Development__Group_ga5bd53c035c21479d5757116d5939eef3}{edje\+\_\+external\+\_\+param\+\_\+find} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Conevenience function to find a specific parameter in a list of them. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_ga386d6423edeae2bad4275742774734cc}{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key, int $\ast$ret)
\begin{DoxyCompactList}\small\item\em Get the value of the given parameter of integer type. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_ga1c9fb7bb0408ccaf9fc33eacc0a9427f}{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key, double $\ast$ret)
\begin{DoxyCompactList}\small\item\em Get the value of the given parameter of double type. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_gad979376af324a68e0423305d2402c6b2}{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key, const char $\ast$$\ast$ret)
\begin{DoxyCompactList}\small\item\em Get the value of the given parameter of string type. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_gac177865ee5cfc626c632981625e80d19}{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key, \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} $\ast$ret)
\begin{DoxyCompactList}\small\item\em Get the value of the given parameter of boolean type. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Edje__External__Plugin__Development__Group_ga6959e80b3d128a4b11d08548a87c6ad3}{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get} (const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$params, const char $\ast$key, const char $\ast$$\ast$ret)
\begin{DoxyCompactList}\small\item\em Get the value of the given parameter of choice type. \end{DoxyCompactList}\item 
const \hyperlink{group__Edje__External__Group_ga3359e717990957d49d9fb5f32843bcfc}{Edje\+\_\+\+External\+\_\+\+Param\+\_\+\+Info} $\ast$ \hyperlink{group__Edje__External__Plugin__Development__Group_ga3e346e0e3d79892047e54e8ee10c2a72}{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Get the array of parameters information about a type given its name. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}\label{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}} 
const \hyperlink{struct__Edje__External__Type}{Edje\+\_\+\+External\+\_\+\+Type} $\ast$ \hyperlink{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}{edje\+\_\+external\+\_\+type\+\_\+get} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Get the \#\+Edje\+\_\+\+External\+\_\+\+Type that defines an E\+X\+T\+E\+R\+N\+AL type registered with the name {\ttfamily type\+\_\+name}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Functions to register, unregister E\+X\+T\+E\+R\+N\+AL types and develop the plugins. 

This group dicusses functions useful for the development of new plugins. These functions deal with the newly E\+X\+T\+E\+R\+N\+AL types by registering, unregistering and manipulating them. 

\subsection{Function Documentation}
\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}\label{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+type\+\_\+register@{edje\+\_\+external\+\_\+type\+\_\+register}}
\index{edje\+\_\+external\+\_\+type\+\_\+register@{edje\+\_\+external\+\_\+type\+\_\+register}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+type\+\_\+register()}{edje\_external\_type\_register()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+type\+\_\+register (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+\_\+name,  }\item[{const \hyperlink{struct__Edje__External__Type}{Edje\+\_\+\+External\+\_\+\+Type} $\ast$}]{type\+\_\+info }\end{DoxyParamCaption})}



Register a type to be used by E\+X\+T\+E\+R\+N\+AL parts. 

Parts of type E\+X\+T\+E\+R\+N\+AL will call user defined functions to create and manipulate the object that\textquotesingle{}s allocated in that part. This is done by expecifying in the {\ttfamily source} property of the part the name of the external to use, which must be one registered with this function.


\begin{DoxyParams}{Parameters}
{\em type\+\_\+name} & name to register and be known by edje\textquotesingle{}s \char`\"{}source\+:\char`\"{} parameter of \char`\"{}type\+: E\+X\+T\+E\+R\+N\+A\+L\char`\"{} parts. \\
\hline
{\em type\+\_\+info} & meta-\/information describing how to interact with it.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure (like type already registered).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register()} 
\end{DoxySeeAlso}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+::abi\+\_\+version, and E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}\label{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+type\+\_\+unregister@{edje\+\_\+external\+\_\+type\+\_\+unregister}}
\index{edje\+\_\+external\+\_\+type\+\_\+unregister@{edje\+\_\+external\+\_\+type\+\_\+unregister}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+type\+\_\+unregister()}{edje\_external\_type\_unregister()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+type\+\_\+unregister (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+\_\+name }\end{DoxyParamCaption})}



Unregister a previously registered E\+X\+T\+E\+R\+N\+AL type. 


\begin{DoxyParams}{Parameters}
{\em type\+\_\+name} & name to unregister. It should have been registered with \hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register()} before.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure (like type\+\_\+name did not exist).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, and eina\+\_\+hash\+\_\+del\+\_\+by\+\_\+key().

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}\label{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register@{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register}}
\index{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register@{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register()}{edje\_external\_type\_array\_register()}}
{\footnotesize\ttfamily void edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register (\begin{DoxyParamCaption}\item[{const \hyperlink{struct__Edje__External__Type__Info}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info} $\ast$}]{array }\end{DoxyParamCaption})}



Register a batch of types and their information. 

When several types will be registered it is recommended to use this function instead of several calls to \hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register()}, as it is faster.

\begin{DoxyNote}{Note}
The contents of the array will be referenced directly for as long as the type remains registered, so both the {\ttfamily name} and {\ttfamily info} in the {\ttfamily array} must be kept alive during all this period (usually, the entire program lifetime). The most common case would be to keep the array as a {\ttfamily static} {\ttfamily const} type anyway.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em array} & {\ttfamily N\+U\+LL} terminated array with type name and information. Note that type name or information are referenced directly, so they must be kept alive after this function returns!\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, {\ttfamily E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure (like type already registered).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register()} 
\end{DoxySeeAlso}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+::abi\+\_\+version, \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info\+::info, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info\+::name.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}\label{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister@{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister}}
\index{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister@{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister()}{edje\_external\_type\_array\_unregister()}}
{\footnotesize\ttfamily void edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister (\begin{DoxyParamCaption}\item[{const \hyperlink{struct__Edje__External__Type__Info}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info} $\ast$}]{array }\end{DoxyParamCaption})}



Unregister a batch of given external type previously registered. 


\begin{DoxyParams}{Parameters}
{\em array} & {\ttfamily N\+U\+LL} terminated array, should be the same as the one used to register with \hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register()}\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}{edje\+\_\+external\+\_\+type\+\_\+unregister()} 
\end{DoxySeeAlso}


References eina\+\_\+hash\+\_\+del(), \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info\+::info, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info\+::name.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}\label{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get@{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get}}
\index{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get@{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get()}{edje\_external\_type\_abi\_version\_get()}}
{\footnotesize\ttfamily unsigned int edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Return the current A\+BI version for Edje\+\_\+\+External\+\_\+\+Type structure. 

Always check this number before accessing Edje\+\_\+\+External\+\_\+\+Type in your own software. If the number is not the same, your software may access invalid memory and crash, or just get garbage values.

\begin{DoxyWarning}{Warning}
{\bfseries N\+E\+V\+ER}, E\+V\+ER define your own Edje\+\_\+\+External\+\_\+\+Type using the return of this function as it will change as Edje library (libedje.\+so) changes, but your type definition will not. Instead, use \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+B\+I\+\_\+\+V\+E\+R\+S\+I\+ON.
\end{DoxyWarning}
Summary\+:
\begin{DoxyItemize}
\item use \hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get()} to check.
\item use \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+B\+I\+\_\+\+V\+E\+R\+S\+I\+ON to define/declare.
\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
The external A\+BI version the Edje library was compiled with. That is, the value \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+T\+Y\+P\+E\+\_\+\+A\+B\+I\+\_\+\+V\+E\+R\+S\+I\+ON had at that moment. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}\label{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+iterator\+\_\+get@{edje\+\_\+external\+\_\+iterator\+\_\+get}}
\index{edje\+\_\+external\+\_\+iterator\+\_\+get@{edje\+\_\+external\+\_\+iterator\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+iterator\+\_\+get()}{edje\_external\_iterator\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}$\ast$ edje\+\_\+external\+\_\+iterator\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
an iterator of all the registered E\+X\+T\+E\+R\+N\+AL types.
\end{DoxyReturn}
Each item in the iterator is an {\ttfamily Eina\+\_\+\+Hash\+\_\+\+Tuple} which has the type of the external in the {\ttfamily key} and \#\+Edje\+\_\+\+External\+\_\+\+Type as {\ttfamily data}.


\begin{DoxyCode}
\textcolor{keyword}{const} \hyperlink{struct__Eina__Hash__Tuple}{Eina\_Hash\_Tuple} *tuple;
\hyperlink{struct__Eina__Iterator}{Eina\_Iterator} *itr;
\textcolor{keyword}{const} \hyperlink{struct__Eina__List}{Eina\_List} *l, *modules;
\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s;

modules = \hyperlink{group__Edje__General__Group_ga441ef9fb6456e016efeaa837d7fa812c}{edje\_available\_modules\_get}();
\hyperlink{group__Eina__List__Group_gad02f746a08ee0b12b7ed66d4bc0d71d8}{EINA\_LIST\_FOREACH}(modules, l, s)
  \{
     \textcolor{keywordflow}{if} (!\hyperlink{group__Edje__General__Group_ga5246370a5f5b2d949cc125b31df72ef9}{edje\_module\_load}(s))
       printf(\textcolor{stringliteral}{"Error loading edje module: %s\(\backslash\)n"}, s);
  \}

itr = \hyperlink{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}{edje\_external\_iterator\_get}();
\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}(itr, tuple)
  \{
     \textcolor{keyword}{const} \textcolor{keywordtype}{char} *name = tuple->\hyperlink{struct__Eina__Hash__Tuple_ab8fe9b0df3353720473ecdd5907ca002}{key};
     \textcolor{keyword}{const} \hyperlink{struct__Edje__External__Type}{Edje\_External\_Type} *type = tuple->\hyperlink{struct__Eina__Hash__Tuple_a04b95450a8af76c6bd6e9f93be5efd1e}{data};

     \textcolor{keywordflow}{if} ((!type) ||
         (type->\hyperlink{struct__Edje__External__Type_a695be22c3738025c54b3024d8d18181f}{abi\_version} != \hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\_external\_type\_abi\_version\_get}
      ()))
       \{
          printf(\textcolor{stringliteral}{"Error: invalid type %p (abi: %d, expected: %d)\(\backslash\)n"},
                  type, type ? type->\hyperlink{struct__Edje__External__Type_a695be22c3738025c54b3024d8d18181f}{abi\_version} : 0,
                  \hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\_external\_type\_abi\_version\_get}());
          \textcolor{keywordflow}{continue};
       \}

     printf(\textcolor{stringliteral}{"%s: %s (%s) label='%s' desc='%s'\(\backslash\)n"},
            name, type->\hyperlink{struct__Edje__External__Type_a28b264d64f53e18f02dd4b49803b1a36}{module}, type->\hyperlink{struct__Edje__External__Type_a3b9c0e159af27f92ef72314c307a6ed8}{module\_name},
            type->\hyperlink{struct__Edje__External__Type_a68b1b82309499bfac2d38cc70c888767}{label\_get} ? type->\hyperlink{struct__Edje__External__Type_a68b1b82309499bfac2d38cc70c888767}{label\_get}(type->\hyperlink{struct__Edje__External__Type_a2dafbe0616e3cd02afc2efe5edf52c28}{data}) : \textcolor{stringliteral}{""},
            type->\hyperlink{struct__Edje__External__Type_aee9939a5d674b1113aa32207fd8efc77}{description\_get} ? type->\hyperlink{struct__Edje__External__Type_aee9939a5d674b1113aa32207fd8efc77}{description\_get}(type->
      \hyperlink{struct__Edje__External__Type_a2dafbe0616e3cd02afc2efe5edf52c28}{data}) : \textcolor{stringliteral}{""});
  \}
\end{DoxyCode}
 

References eina\+\_\+hash\+\_\+iterator\+\_\+tuple\+\_\+new().

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga5bd53c035c21479d5757116d5939eef3}\label{group__Edje__External__Plugin__Development__Group_ga5bd53c035c21479d5757116d5939eef3}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+find@{edje\+\_\+external\+\_\+param\+\_\+find}}
\index{edje\+\_\+external\+\_\+param\+\_\+find@{edje\+\_\+external\+\_\+param\+\_\+find}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+find()}{edje\_external\_param\_find()}}
{\footnotesize\ttfamily \hyperlink{struct__Edje__External__Param}{Edje\+\_\+\+External\+\_\+\+Param}$\ast$ edje\+\_\+external\+\_\+param\+\_\+find (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key }\end{DoxyParamCaption})}



Conevenience function to find a specific parameter in a list of them. 


\begin{DoxyParams}{Parameters}
{\em params} & The list of parameters for the external \\
\hline
{\em key} & The parameter to look for\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The matching \#\+Edje\+\_\+\+External\+\_\+\+Param or N\+U\+LL if it\textquotesingle{}s not found. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+L\+I\+S\+T\+\_\+\+F\+O\+R\+E\+A\+CH.



Referenced by edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get(), edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get(), edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get(), edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get(), and edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get().

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga386d6423edeae2bad4275742774734cc}\label{group__Edje__External__Plugin__Development__Group_ga386d6423edeae2bad4275742774734cc}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get()}{edje\_external\_param\_int\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{int $\ast$}]{ret }\end{DoxyParamCaption})}



Get the value of the given parameter of integer type. 

Look for the {\ttfamily key} parameter in the {\ttfamily params} list and return its value in {\ttfamily ret}. If the parameter is found and is of type \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+I\+NT, its value will be stored in the int pointed by {\ttfamily ret}, returning E\+I\+N\+A\+\_\+\+T\+R\+UE. In any other case, the function returns E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.


\begin{DoxyParams}{Parameters}
{\em params} & List of parameters where to look \\
\hline
{\em key} & Name of the parameter to fetch \\
\hline
{\em ret} & Int pointer where to store the value, must not be N\+U\+LL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if the parameter was found and is of integer type, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::i, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::type.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga1c9fb7bb0408ccaf9fc33eacc0a9427f}\label{group__Edje__External__Plugin__Development__Group_ga1c9fb7bb0408ccaf9fc33eacc0a9427f}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get()}{edje\_external\_param\_double\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{double $\ast$}]{ret }\end{DoxyParamCaption})}



Get the value of the given parameter of double type. 

Look for the {\ttfamily key} parameter in the {\ttfamily params} list and return its value in {\ttfamily ret}. If the parameter is found and is of type \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+D\+O\+U\+B\+LE, its value will be stored in the double pointed by {\ttfamily ret}, returning E\+I\+N\+A\+\_\+\+T\+R\+UE. In any other case, the function returns E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.


\begin{DoxyParams}{Parameters}
{\em params} & List of parameters where to look \\
\hline
{\em key} & Name of the parameter to fetch \\
\hline
{\em ret} & Double pointer where to store the value, must not be N\+U\+LL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if the parameter was found and is of double type, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::d, edje\+\_\+external\+\_\+param\+\_\+find(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::type.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_gad979376af324a68e0423305d2402c6b2}\label{group__Edje__External__Plugin__Development__Group_gad979376af324a68e0423305d2402c6b2}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get()}{edje\_external\_param\_string\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{const char $\ast$$\ast$}]{ret }\end{DoxyParamCaption})}



Get the value of the given parameter of string type. 

Look for the {\ttfamily key} parameter in the {\ttfamily params} list and return its value in {\ttfamily ret}. If the parameter is found and is of type \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+S\+T\+R\+I\+NG, its value will be stored in the pointer pointed by {\ttfamily ret}, returning E\+I\+N\+A\+\_\+\+T\+R\+UE. In any other case, the function returns E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.

The string stored in {\ttfamily ret} must not be freed or modified.


\begin{DoxyParams}{Parameters}
{\em params} & List of parameters where to look \\
\hline
{\em key} & Name of the parameter to fetch \\
\hline
{\em ret} & String pointer where to store the value, must not be N\+U\+LL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if the parameter was found and is of string type, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::s, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::type.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_gac177865ee5cfc626c632981625e80d19}\label{group__Edje__External__Plugin__Development__Group_gac177865ee5cfc626c632981625e80d19}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get()}{edje\_external\_param\_bool\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} $\ast$}]{ret }\end{DoxyParamCaption})}



Get the value of the given parameter of boolean type. 

Look for the {\ttfamily key} parameter in the {\ttfamily params} list and return its value in {\ttfamily ret}. If the parameter is found and is of type \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+B\+O\+OL, its value will be stored in the Eina\+\_\+\+Bool pointed by {\ttfamily ret}, returning E\+I\+N\+A\+\_\+\+T\+R\+UE. In any other case, the function returns E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.


\begin{DoxyParams}{Parameters}
{\em params} & List of parameters where to look \\
\hline
{\em key} & Name of the parameter to fetch \\
\hline
{\em ret} & Eina\+\_\+\+Bool pointer where to store the value, must not be N\+U\+LL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if the parameter was found and is of boolean type, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::i, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::type.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga6959e80b3d128a4b11d08548a87c6ad3}\label{group__Edje__External__Plugin__Development__Group_ga6959e80b3d128a4b11d08548a87c6ad3}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get()}{edje\_external\_param\_choice\_get()}}
{\footnotesize\ttfamily \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get (\begin{DoxyParamCaption}\item[{const \hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{const char $\ast$$\ast$}]{ret }\end{DoxyParamCaption})}



Get the value of the given parameter of choice type. 

Look for the {\ttfamily key} parameter in the {\ttfamily params} list and return its value in {\ttfamily ret}. If the parameter is found and is of type \#\+E\+D\+J\+E\+\_\+\+E\+X\+T\+E\+R\+N\+A\+L\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+Y\+P\+E\+\_\+\+C\+H\+O\+I\+CE, its value will be stored in the string pointed by {\ttfamily ret}, returning E\+I\+N\+A\+\_\+\+T\+R\+UE. In any other case, the function returns E\+I\+N\+A\+\_\+\+F\+A\+L\+SE.

The string stored in {\ttfamily ret} must not be freed or modified.


\begin{DoxyParams}{Parameters}
{\em params} & List of parameters where to look \\
\hline
{\em key} & Name of the parameter to fetch \\
\hline
{\em ret} & String pointer where to store the value, must not be N\+U\+LL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\+I\+N\+A\+\_\+\+T\+R\+UE if the parameter was found and is of integer type, E\+I\+N\+A\+\_\+\+F\+A\+L\+SE otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), E\+I\+N\+A\+\_\+\+F\+A\+L\+SE, E\+I\+N\+A\+\_\+\+T\+R\+UE, \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::s, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::type.

\mbox{\Hypertarget{group__Edje__External__Plugin__Development__Group_ga3e346e0e3d79892047e54e8ee10c2a72}\label{group__Edje__External__Plugin__Development__Group_ga3e346e0e3d79892047e54e8ee10c2a72}} 
\index{Edje Development of External Plugins@{Edje Development of External Plugins}!edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get}}
\index{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get@{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get}!Edje Development of External Plugins@{Edje Development of External Plugins}}
\subsubsection{\texorpdfstring{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get()}{edje\_external\_param\_info\_get()}}
{\footnotesize\ttfamily const \hyperlink{group__Edje__External__Group_ga3359e717990957d49d9fb5f32843bcfc}{Edje\+\_\+\+External\+\_\+\+Param\+\_\+\+Info}$\ast$ edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+\_\+name }\end{DoxyParamCaption})}



Get the array of parameters information about a type given its name. 

\begin{DoxyNote}{Note}
the type names and other strings are static, that means they are {\bfseries N\+OT} translated. One must use \hyperlink{struct__Edje__External__Type_ae3b1faffa651ecc55193d4afff6c201d}{Edje\+\_\+\+External\+\_\+\+Type\+::translate()} to translate those.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em type\+\_\+name} & Edje external type name\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the N\+U\+LL terminated array, or {\ttfamily N\+U\+LL} if type is unknown or it does not have any parameter information.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}{edje\+\_\+external\+\_\+type\+\_\+get()} 
\end{DoxySeeAlso}


References eina\+\_\+hash\+\_\+find(), and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+::parameters\+\_\+info.



Referenced by edje\+\_\+edit\+\_\+state\+\_\+add().

