\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\-A\-L 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\-A\-L 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\-A\-L 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\-B\-I 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)
\begin{DoxyCompactList}\small\item\em Returns an interator of all the registered E\-X\-T\-E\-R\-N\-A\-L types. \end{DoxyCompactList}\item 
\hyperlink{group__Edje__External__Group_gafc8f2e1cb3f31c252f8acb8efe9b9be8}{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 
\hypertarget{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)}\label{group__Edje__External__Plugin__Development__Group_ga53d3116ca7d1d8feb2d39e0bb652564a}

\begin{DoxyCompactList}\small\item\em Get the \#\-Edje\-\_\-\-External\-\_\-\-Type that defines an E\-X\-T\-E\-R\-N\-A\-L 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\-A\-L 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\-A\-L types by registering, unregistering and manipulating them. 

\subsection{Function Documentation}
\hypertarget{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[{edje\-\_\-external\-\_\-type\-\_\-register}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-type\-\_\-register (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{type\-\_\-name, }
\item[{const {\bf Edje\-\_\-\-External\-\_\-\-Type} $\ast$}]{type\-\_\-info}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga6328117e55ec1a92efc84adeadc9da97}


Register a type to be used by E\-X\-T\-E\-R\-N\-A\-L parts. 

Parts of type E\-X\-T\-E\-R\-N\-A\-L will call user defined functions to create and manipulate the object that'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'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\-U\-E} on success, {\ttfamily E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E} 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, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, eina\-\_\-hash\-\_\-add(), and eina\-\_\-hash\-\_\-find().

\hypertarget{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[{edje\-\_\-external\-\_\-type\-\_\-unregister}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-type\-\_\-unregister (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{type\-\_\-name}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_gaa41f94d4ab5e7bfd525de5f9a11aad93}


Unregister a previously registered E\-X\-T\-E\-R\-N\-A\-L 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\-U\-E} on success, {\ttfamily E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E} 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\-S\-E, and eina\-\_\-hash\-\_\-del\-\_\-by\-\_\-key().

\hypertarget{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[{edje\-\_\-external\-\_\-type\-\_\-array\-\_\-register}]{\setlength{\rightskip}{0pt plus 5cm}void edje\-\_\-external\-\_\-type\-\_\-array\-\_\-register (
\begin{DoxyParamCaption}
\item[{const {\bf Edje\-\_\-\-External\-\_\-\-Type\-\_\-\-Info} $\ast$}]{array}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga99ad55e4a9091e68e6d01d152e82635e}


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\-L\-L} 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\-U\-E} on success, {\ttfamily E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E} 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, eina\-\_\-hash\-\_\-direct\-\_\-add(), \-\_\-\-Edje\-\_\-\-External\-\_\-\-Type\-\_\-\-Info\-::info, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Type\-\_\-\-Info\-::name.

\hypertarget{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[{edje\-\_\-external\-\_\-type\-\_\-array\-\_\-unregister}]{\setlength{\rightskip}{0pt plus 5cm}void edje\-\_\-external\-\_\-type\-\_\-array\-\_\-unregister (
\begin{DoxyParamCaption}
\item[{const {\bf Edje\-\_\-\-External\-\_\-\-Type\-\_\-\-Info} $\ast$}]{array}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga2326fd0e1fd00eaa2062269c6005a290}


Unregister a batch of given external type previously registered. 


\begin{DoxyParams}{Parameters}
{\em array} & {\ttfamily N\-U\-L\-L} 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.

\hypertarget{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[{edje\-\_\-external\-\_\-type\-\_\-abi\-\_\-version\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int edje\-\_\-external\-\_\-type\-\_\-abi\-\_\-version\-\_\-get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga33735e783f82c80b63885d067e48777b}


Return the current A\-B\-I 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\-E\-R}, E\-V\-E\-R 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\-O\-N.
\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\-O\-N to define/declare.
\end{DoxyItemize}

\begin{DoxyReturn}{Returns}
The external A\-B\-I 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\-O\-N had at that moment. 
\end{DoxyReturn}
\hypertarget{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[{edje\-\_\-external\-\_\-iterator\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Iterator}$\ast$ edje\-\_\-external\-\_\-iterator\-\_\-get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_gae1fb3233fcd31164e36d346f891e0744}


Returns an interator of all the registered E\-X\-T\-E\-R\-N\-A\-L types. 

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_gad2f796ac4df0e500d25235c29821faa3}{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_abe97d2c23d5f4f1f6bf4be23627f0478}{label\_get} ? type->\hyperlink{struct__Edje__External__Type_abe97d2c23d5f4f1f6bf4be23627f0478}{label\_get}(type->\hyperlink{struct__Edje__External__Type_a2dafbe0616e3cd02afc2efe5edf52c28}{data}) : \textcolor{stringliteral}{""},
            type->\hyperlink{struct__Edje__External__Type_ae8cbe4621c0763accbe91cf61729961f}{description\_get} ? type->\hyperlink{struct__Edje__External__Type_ae8cbe4621c0763accbe91cf61729961f}{description\_get}(type->
      \hyperlink{struct__Edje__External__Type_a2dafbe0616e3cd02afc2efe5edf52c28}{data}) : \textcolor{stringliteral}{""});
  \}
\end{DoxyCode}
 

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

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Edje\-\_\-\-External\-\_\-\-Param}$\ast$ edje\-\_\-external\-\_\-param\-\_\-find (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga5bd53c035c21479d5757116d5939eef3}


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 \hyperlink{group__Edje__External__Group_gafc8f2e1cb3f31c252f8acb8efe9b9be8}{Edje\-\_\-\-External\-\_\-\-Param} or N\-U\-L\-L if it's not found. 
\end{DoxyReturn}


References E\-I\-N\-A\-\_\-\-L\-I\-S\-T\-\_\-\-F\-O\-R\-E\-A\-C\-H, 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().

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-int\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-param\-\_\-int\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key, }
\item[{int $\ast$}]{ret}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga386d6423edeae2bad4275742774734cc}


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 \hyperlink{group__Edje__External__Group_gga02e318814b9b26eb10bc1c332943d114a5e28435fdb6e3c9b4d154a58e6353053}{E\-D\-J\-E\-\_\-\-E\-X\-T\-E\-R\-N\-A\-L\-\_\-\-P\-A\-R\-A\-M\-\_\-\-T\-Y\-P\-E\-\_\-\-I\-N\-T}, its value will be stored in the int pointed by {\ttfamily ret}, returning E\-I\-N\-A\-\_\-\-T\-R\-U\-E. In any other case, the function returns E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E.


\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\-L\-L.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the parameter was found and is of integer type, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise. 
\end{DoxyReturn}


References edje\-\_\-external\-\_\-param\-\_\-find(), E\-D\-J\-E\-\_\-\-E\-X\-T\-E\-R\-N\-A\-L\-\_\-\-P\-A\-R\-A\-M\-\_\-\-T\-Y\-P\-E\-\_\-\-I\-N\-T, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, E\-I\-N\-A\-\_\-\-T\-R\-U\-E, \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::i, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::type.

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-double\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-param\-\_\-double\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key, }
\item[{double $\ast$}]{ret}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga1c9fb7bb0408ccaf9fc33eacc0a9427f}


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 \hyperlink{group__Edje__External__Group_gga02e318814b9b26eb10bc1c332943d114a8bb849a3c33ca88e19965352334017e2}{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\-L\-E}, its value will be stored in the double pointed by {\ttfamily ret}, returning E\-I\-N\-A\-\_\-\-T\-R\-U\-E. In any other case, the function returns E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E.


\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\-L\-L.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the parameter was found and is of double type, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise. 
\end{DoxyReturn}


References \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::d, edje\-\_\-external\-\_\-param\-\_\-find(), 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\-L\-E, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, E\-I\-N\-A\-\_\-\-T\-R\-U\-E, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::type.

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-string\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-param\-\_\-string\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key, }
\item[{const char $\ast$$\ast$}]{ret}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_gad979376af324a68e0423305d2402c6b2}


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 \hyperlink{group__Edje__External__Group_gga02e318814b9b26eb10bc1c332943d114a85810dc93197da2114021f63022ccdb4}{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\-N\-G}, its value will be stored in the pointer pointed by {\ttfamily ret}, returning E\-I\-N\-A\-\_\-\-T\-R\-U\-E. In any other case, the function returns E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E.

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\-L\-L.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the parameter was found and is of string type, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise. 
\end{DoxyReturn}


References edje\-\_\-external\-\_\-param\-\_\-find(), 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\-N\-G, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, E\-I\-N\-A\-\_\-\-T\-R\-U\-E, \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::s, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::type.

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-bool\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-param\-\_\-bool\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key, }
\item[{{\bf Eina\-\_\-\-Bool} $\ast$}]{ret}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_gac177865ee5cfc626c632981625e80d19}


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 \hyperlink{group__Edje__External__Group_gga02e318814b9b26eb10bc1c332943d114ac35b4575945a022aacaf6052030f4cd0}{E\-D\-J\-E\-\_\-\-E\-X\-T\-E\-R\-N\-A\-L\-\_\-\-P\-A\-R\-A\-M\-\_\-\-T\-Y\-P\-E\-\_\-\-B\-O\-O\-L}, its value will be stored in the Eina\-\_\-\-Bool pointed by {\ttfamily ret}, returning E\-I\-N\-A\-\_\-\-T\-R\-U\-E. In any other case, the function returns E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E.


\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\-L\-L.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the parameter was found and is of boolean type, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise. 
\end{DoxyReturn}


References edje\-\_\-external\-\_\-param\-\_\-find(), E\-D\-J\-E\-\_\-\-E\-X\-T\-E\-R\-N\-A\-L\-\_\-\-P\-A\-R\-A\-M\-\_\-\-T\-Y\-P\-E\-\_\-\-B\-O\-O\-L, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, E\-I\-N\-A\-\_\-\-T\-R\-U\-E, \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::i, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::type.

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-choice\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} edje\-\_\-external\-\_\-param\-\_\-choice\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\-\_\-\-List} $\ast$}]{params, }
\item[{const char $\ast$}]{key, }
\item[{const char $\ast$$\ast$}]{ret}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga6959e80b3d128a4b11d08548a87c6ad3}


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 \hyperlink{group__Edje__External__Group_gga02e318814b9b26eb10bc1c332943d114a90ac499b47ea610bc347a3890b9e1e66}{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\-C\-E}, its value will be stored in the string pointed by {\ttfamily ret}, returning E\-I\-N\-A\-\_\-\-T\-R\-U\-E. In any other case, the function returns E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E.

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\-L\-L.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the parameter was found and is of integer type, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise. 
\end{DoxyReturn}


References edje\-\_\-external\-\_\-param\-\_\-find(), 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\-C\-E, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, E\-I\-N\-A\-\_\-\-T\-R\-U\-E, \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::s, and \-\_\-\-Edje\-\_\-\-External\-\_\-\-Param\-::type.

\hypertarget{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[{edje\-\_\-external\-\_\-param\-\_\-info\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Edje\-\_\-\-External\-\_\-\-Param\-\_\-\-Info}$\ast$ edje\-\_\-external\-\_\-param\-\_\-info\-\_\-get (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{type\-\_\-name}
\end{DoxyParamCaption}
)}}\label{group__Edje__External__Plugin__Development__Group_ga3e346e0e3d79892047e54e8ee10c2a72}


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\-O\-T} translated. One must use \hyperlink{struct__Edje__External__Type_a12122a67e693234f06f0cc28aebda89b}{Edje\-\_\-\-External\-\_\-\-Type\-::translate()} to translate those.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
the N\-U\-L\-L terminated array, or {\ttfamily N\-U\-L\-L} 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().

