\hypertarget{group__Edje__External__Plugin__Development__Group}{}\doxysection{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 EXTERNAL types and develop the plugins.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register}} (const char $\ast$type\+\_\+name, const \mbox{\hyperlink{group__Edje__External__Group_ga04c41d8ec9336cca558aa8e6d10a8f26}{Edje\+\_\+\+External\+\_\+\+Type}} $\ast$type\+\_\+info)
\begin{DoxyCompactList}\small\item\em Registers a type to be used by EXTERNAL parts. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}{edje\+\_\+external\+\_\+type\+\_\+unregister}} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Unregisters a previously registered EXTERNAL type. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register}} (const \mbox{\hyperlink{group__Edje__External__Group_gad172d99027930d8ee859b77d5aa181e8}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info}} $\ast$array)
\begin{DoxyCompactList}\small\item\em Registers a batch of types and their information. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister}} (const \mbox{\hyperlink{group__Edje__External__Group_gad172d99027930d8ee859b77d5aa181e8}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info}} $\ast$array)
\begin{DoxyCompactList}\small\item\em Unregisters a batch of given external type previously registered. \end{DoxyCompactList}\item 
unsigned int \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get}} (void)
\begin{DoxyCompactList}\small\item\em Returns the current ABI version for Edje\+\_\+\+External\+\_\+\+Type structure. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator}} $\ast$ \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}{edje\+\_\+external\+\_\+iterator\+\_\+get}} (void)
\item 
\mbox{\hyperlink{group__Edje__External__Group_gafc8f2e1cb3f31c252f8acb8efe9b9be8}{Edje\+\_\+\+External\+\_\+\+Param}} $\ast$ \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga5bd53c035c21479d5757116d5939eef3}{edje\+\_\+external\+\_\+param\+\_\+find}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key)
\begin{DoxyCompactList}\small\item\em Convenience function to find a specific parameter in a list of them. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga386d6423edeae2bad4275742774734cc}{edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key, int $\ast$ret)
\begin{DoxyCompactList}\small\item\em Gets the value of the given parameter of integer type. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga1c9fb7bb0408ccaf9fc33eacc0a9427f}{edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key, double $\ast$ret)
\begin{DoxyCompactList}\small\item\em Gets the value of the given parameter of double type. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_gad979376af324a68e0423305d2402c6b2}{edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key, const char $\ast$$\ast$ret)
\begin{DoxyCompactList}\small\item\em Gets the value of the given parameter of string type. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_gac177865ee5cfc626c632981625e80d19}{edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} $\ast$ret)
\begin{DoxyCompactList}\small\item\em Gets the value of the given parameter of boolean type. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga6959e80b3d128a4b11d08548a87c6ad3}{edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get}} (const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$params, const char $\ast$key, const char $\ast$$\ast$ret)
\begin{DoxyCompactList}\small\item\em Gets the value of the given parameter of choice type. \end{DoxyCompactList}\item 
const \mbox{\hyperlink{group__Edje__External__Group_ga3359e717990957d49d9fb5f32843bcfc}{Edje\+\_\+\+External\+\_\+\+Param\+\_\+\+Info}} $\ast$ \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga3e346e0e3d79892047e54e8ee10c2a72}{edje\+\_\+external\+\_\+param\+\_\+info\+\_\+get}} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Gets 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 \mbox{\hyperlink{group__Edje__External__Group_ga04c41d8ec9336cca558aa8e6d10a8f26}{Edje\+\_\+\+External\+\_\+\+Type}} $\ast$ \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}{edje\+\_\+external\+\_\+type\+\_\+get}} (const char $\ast$type\+\_\+name)
\begin{DoxyCompactList}\small\item\em Gets the \mbox{\hyperlink{group__Edje__External__Group_ga04c41d8ec9336cca558aa8e6d10a8f26}{Edje\+\_\+\+External\+\_\+\+Type}} that defines an EXTERNAL type registered with the name {\ttfamily type\+\_\+name}. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Functions to register, unregister EXTERNAL types and develop the plugins. 

This group discusses functions useful for the development of new plugins. These functions deal with the newly EXTERNAL types by registering, unregistering and manipulating them. 

\doxysubsection{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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_type\_register()}{edje\_external\_type\_register()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+type\+\_\+register (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+\_\+name,  }\item[{const \mbox{\hyperlink{group__Edje__External__Group_ga04c41d8ec9336cca558aa8e6d10a8f26}{Edje\+\_\+\+External\+\_\+\+Type}} $\ast$}]{type\+\_\+info }\end{DoxyParamCaption})}



Registers a type to be used by EXTERNAL parts. 

Parts of type EXTERNAL 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\+: EXTERNAL\char`\"{} parts. \\
\hline
{\em type\+\_\+info} & Meta-\/information describing how to interact with it.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} on success, {\ttfamily EINA\+\_\+\+FALSE} on failure (like type already registered).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register()}} 
\end{DoxySeeAlso}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+::abi\+\_\+version, EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION, EINA\+\_\+\+FALSE, eina\+\_\+hash\+\_\+add(), eina\+\_\+hash\+\_\+find(), and ERR.

\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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_type\_unregister()}{edje\_external\_type\_unregister()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+type\+\_\+unregister (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+\_\+name }\end{DoxyParamCaption})}



Unregisters a previously registered EXTERNAL type. 


\begin{DoxyParams}{Parameters}
{\em type\+\_\+name} & name to unregister. It should have been registered with \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register()}} before.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} on success, {\ttfamily EINA\+\_\+\+FALSE} on failure (like type\+\_\+name did not exist).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister()}} 
\end{DoxySeeAlso}


References EINA\+\_\+\+FALSE, 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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_type\_array\_register()}{edje\_external\_type\_array\_register()}}
{\footnotesize\ttfamily void edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Edje__External__Group_gad172d99027930d8ee859b77d5aa181e8}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info}} $\ast$}]{array }\end{DoxyParamCaption})}



Registers 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 \mbox{\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 NULL} 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 EINA\+\_\+\+TRUE} on success, {\ttfamily EINA\+\_\+\+FALSE} on failure (like type already registered).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}{edje\+\_\+external\+\_\+type\+\_\+register()}} 
\end{DoxySeeAlso}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Type\+::abi\+\_\+version, EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION, eina\+\_\+hash\+\_\+direct\+\_\+add(), ERR, \+\_\+\+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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_type\_array\_unregister()}{edje\_external\_type\_array\_unregister()}}
{\footnotesize\ttfamily void edje\+\_\+external\+\_\+type\+\_\+array\+\_\+unregister (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Edje__External__Group_gad172d99027930d8ee859b77d5aa181e8}{Edje\+\_\+\+External\+\_\+\+Type\+\_\+\+Info}} $\ast$}]{array }\end{DoxyParamCaption})}



Unregisters a batch of given external type previously registered. 


\begin{DoxyParams}{Parameters}
{\em array} & {\ttfamily NULL} terminated array, should be the same as the one used to register with \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}{edje\+\_\+external\+\_\+type\+\_\+array\+\_\+register()}}\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\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}}
\doxysubsubsection{\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})}



Returns the current ABI 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{NEVER}}, EVER 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 \mbox{\hyperlink{group__Edje__External__Group_gac7e56cf989b6afb416028176655120e3}{EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION}}.
\end{DoxyWarning}
Summary\+:
\begin{DoxyItemize}
\item use \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\+\_\+external\+\_\+type\+\_\+abi\+\_\+version\+\_\+get()}} to check.
\item use \mbox{\hyperlink{group__Edje__External__Group_gac7e56cf989b6afb416028176655120e3}{EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION}} to define/declare.
\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
The external ABI version the Edje library was compiled with. That is, the value \mbox{\hyperlink{group__Edje__External__Group_gac7e56cf989b6afb416028176655120e3}{EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION}} had at that moment. 
\end{DoxyReturn}


References EDJE\+\_\+\+EXTERNAL\+\_\+\+TYPE\+\_\+\+ABI\+\_\+\+VERSION.

\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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_iterator\_get()}{edje\_external\_iterator\_get()}}
{\footnotesize\ttfamily \mbox{\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 EXTERNAL 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 \mbox{\hyperlink{group__Edje__External__Group_ga04c41d8ec9336cca558aa8e6d10a8f26}{Edje\+\_\+\+External\+\_\+\+Type}} as {\ttfamily data}.


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{const} \mbox{\hyperlink{struct__Eina__Hash__Tuple}{Eina\_Hash\_Tuple}} *tuple;}
\DoxyCodeLine{\mbox{\hyperlink{struct__Eina__Iterator}{Eina\_Iterator}} *itr;}
\DoxyCodeLine{\textcolor{keyword}{const} \mbox{\hyperlink{struct__Eina__List}{Eina\_List}} *l, *modules;}
\DoxyCodeLine{\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s;}
\DoxyCodeLine{}
\DoxyCodeLine{modules = \mbox{\hyperlink{group__Edje__General__Group_ga441ef9fb6456e016efeaa837d7fa812c}{edje\_available\_modules\_get}}();}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__List__Group_gac6efafc19f526d916cdb9757240a8773}{EINA\_LIST\_FOREACH}}(modules, l, s)}
\DoxyCodeLine{  \{}
\DoxyCodeLine{     \textcolor{keywordflow}{if} (!\mbox{\hyperlink{group__Edje__General__Group_ga5246370a5f5b2d949cc125b31df72ef9}{edje\_module\_load}}(s))}
\DoxyCodeLine{       printf(\textcolor{stringliteral}{"{}Error loading edje module: \%s\(\backslash\)n"{}}, s);}
\DoxyCodeLine{  \}}
\DoxyCodeLine{}
\DoxyCodeLine{itr = \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}{edje\_external\_iterator\_get}}();}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Iterator__Group_gac7314580e18868ef229f5d2814562794}{EINA\_ITERATOR\_FOREACH}}(itr, tuple)}
\DoxyCodeLine{  \{}
\DoxyCodeLine{     \textcolor{keyword}{const} \textcolor{keywordtype}{char} *name = tuple-\/>\mbox{\hyperlink{struct__Eina__Hash__Tuple_ab8fe9b0df3353720473ecdd5907ca002}{key}};}
\DoxyCodeLine{     \textcolor{keyword}{const} \mbox{\hyperlink{struct__Edje__External__Type}{Edje\_External\_Type}} *type = tuple-\/>\mbox{\hyperlink{struct__Eina__Hash__Tuple_a04b95450a8af76c6bd6e9f93be5efd1e}{data}};}
\DoxyCodeLine{}
\DoxyCodeLine{     \textcolor{keywordflow}{if} ((!type) ||}
\DoxyCodeLine{         (type-\/>abi\_version != \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\_external\_type\_abi\_version\_get}}()))}
\DoxyCodeLine{       \{}
\DoxyCodeLine{          printf(\textcolor{stringliteral}{"{}Error: invalid type \%p (abi: \%d, expected: \%d)\(\backslash\)n"{}},}
\DoxyCodeLine{                  type, type ? type-\/>abi\_version : 0,}
\DoxyCodeLine{                  \mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}{edje\_external\_type\_abi\_version\_get}}());}
\DoxyCodeLine{          \textcolor{keywordflow}{continue};}
\DoxyCodeLine{       \}}
\DoxyCodeLine{}
\DoxyCodeLine{     printf(\textcolor{stringliteral}{"{}\%s: \%s (\%s) label='\%s' desc='\%s'\(\backslash\)n"{}},}
\DoxyCodeLine{            name, type-\/>module, type-\/>module\_name,}
\DoxyCodeLine{            type-\/>label\_get ? type-\/>label\_get(type-\/>data) : \textcolor{stringliteral}{"{}"{}},}
\DoxyCodeLine{            type-\/>description\_get ? type-\/>description\_get(type-\/>data) : \textcolor{stringliteral}{"{}"{}});}
\DoxyCodeLine{  \}}

\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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_find()}{edje\_external\_param\_find()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Edje__External__Group_gafc8f2e1cb3f31c252f8acb8efe9b9be8}{Edje\+\_\+\+External\+\_\+\+Param}}$\ast$ edje\+\_\+external\+\_\+param\+\_\+find (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key }\end{DoxyParamCaption})}



Convenience 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 \mbox{\hyperlink{group__Edje__External__Group_gafc8f2e1cb3f31c252f8acb8efe9b9be8}{Edje\+\_\+\+External\+\_\+\+Param}} or NULL if it\textquotesingle{}s not found. 
\end{DoxyReturn}


References EINA\+\_\+\+LIST\+\_\+\+FOREACH, and \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::name.



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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_int\_get()}{edje\_external\_param\_int\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+param\+\_\+int\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{int $\ast$}]{ret }\end{DoxyParamCaption})}



Gets 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 \mbox{\hyperlink{group__Edje__External__Group_gga33ecfac7110751d5e09bb2e3a4458d24a5e28435fdb6e3c9b4d154a58e6353053}{EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+INT}}, its value will be stored in the int pointed by {\ttfamily ret}, returning EINA\+\_\+\+TRUE. In any other case, the function returns EINA\+\_\+\+FALSE.


\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 NULL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if the parameter was found and is of integer type, {\ttfamily EINA\+\_\+\+FALSE} otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+INT, EINA\+\_\+\+FALSE, EINA\+\_\+\+TRUE, \+\_\+\+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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_double\_get()}{edje\_external\_param\_double\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+param\+\_\+double\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{double $\ast$}]{ret }\end{DoxyParamCaption})}



Gets 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 \mbox{\hyperlink{group__Edje__External__Group_gga33ecfac7110751d5e09bb2e3a4458d24a8bb849a3c33ca88e19965352334017e2}{EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+DOUBLE}}, its value will be stored in the double pointed by {\ttfamily ret}, returning EINA\+\_\+\+TRUE. In any other case, the function returns EINA\+\_\+\+FALSE.


\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 NULL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if the parameter was found and is of double type, {\ttfamily EINA\+\_\+\+FALSE} otherwise. 
\end{DoxyReturn}


References \+\_\+\+Edje\+\_\+\+External\+\_\+\+Param\+::d, edje\+\_\+external\+\_\+param\+\_\+find(), EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+DOUBLE, EINA\+\_\+\+FALSE, EINA\+\_\+\+TRUE, 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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_string\_get()}{edje\_external\_param\_string\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+param\+\_\+string\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{const char $\ast$$\ast$}]{ret }\end{DoxyParamCaption})}



Gets 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 \mbox{\hyperlink{group__Edje__External__Group_gga33ecfac7110751d5e09bb2e3a4458d24a85810dc93197da2114021f63022ccdb4}{EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+STRING}}, its value will be stored in the pointer pointed by {\ttfamily ret}, returning EINA\+\_\+\+TRUE. In any other case, the function returns EINA\+\_\+\+FALSE.

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 NULL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if the parameter was found and is of string type, {\ttfamily EINA\+\_\+\+FALSE} otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+STRING, EINA\+\_\+\+FALSE, EINA\+\_\+\+TRUE, \+\_\+\+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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_bool\_get()}{edje\_external\_param\_bool\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+param\+\_\+bool\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} $\ast$}]{ret }\end{DoxyParamCaption})}



Gets 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 \mbox{\hyperlink{group__Edje__External__Group_gga33ecfac7110751d5e09bb2e3a4458d24ac35b4575945a022aacaf6052030f4cd0}{EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+BOOL}}, its value will be stored in the Eina\+\_\+\+Bool pointed by {\ttfamily ret}, returning EINA\+\_\+\+TRUE. In any other case, the function returns EINA\+\_\+\+FALSE.


\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 NULL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if the parameter was found and is of boolean type, {\ttfamily EINA\+\_\+\+FALSE} otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+BOOL, EINA\+\_\+\+FALSE, EINA\+\_\+\+TRUE, \+\_\+\+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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_choice\_get()}{edje\_external\_param\_choice\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} edje\+\_\+external\+\_\+param\+\_\+choice\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\+\_\+\+List}} $\ast$}]{params,  }\item[{const char $\ast$}]{key,  }\item[{const char $\ast$$\ast$}]{ret }\end{DoxyParamCaption})}



Gets 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 \mbox{\hyperlink{group__Edje__External__Group_gga33ecfac7110751d5e09bb2e3a4458d24a90ac499b47ea610bc347a3890b9e1e66}{EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+CHOICE}}, its value will be stored in the string pointed by {\ttfamily ret}, returning EINA\+\_\+\+TRUE. In any other case, the function returns EINA\+\_\+\+FALSE.

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 NULL.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
EINA\+\_\+\+TRUE if the parameter was found and is of integer type, EINA\+\_\+\+FALSE otherwise. 
\end{DoxyReturn}


References edje\+\_\+external\+\_\+param\+\_\+find(), EDJE\+\_\+\+EXTERNAL\+\_\+\+PARAM\+\_\+\+TYPE\+\_\+\+CHOICE, EINA\+\_\+\+FALSE, EINA\+\_\+\+TRUE, \+\_\+\+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}}
\doxysubsubsection{\texorpdfstring{edje\_external\_param\_info\_get()}{edje\_external\_param\_info\_get()}}
{\footnotesize\ttfamily const \mbox{\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})}



Gets 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{NOT}} translated. One must use \mbox{\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 NULL terminated array, or {\ttfamily NULL} if type is unknown or it does not have any parameter information.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}{edje\+\_\+external\+\_\+type\+\_\+get()}} 
\end{DoxySeeAlso}


References eina\+\_\+hash\+\_\+find().



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

