\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)
\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(), eina\+\_\+hash\+\_\+find(), and E\+R\+R.

\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(), E\+R\+R, \+\_\+\+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}
\begin{DoxyReturn}{Returns}
an iterator of all the registered E\+X\+T\+E\+R\+N\+A\+L 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}
1 const Eina\_Hash\_Tuple *tuple;
2 Eina\_Iterator *itr;
3 const Eina\_List *l, *modules;
4 const char *s;
5 
6 modules = edje\_available\_modules\_get();
7 EINA\_LIST\_FOREACH(modules, l, s)
8   \{
9      if (!edje\_module\_load(s))
10        printf("Error loading edje module: %s\(\backslash\)n", s);
11   \}
12 
13 itr = edje\_external\_iterator\_get();
14 EINA\_ITERATOR\_FOREACH(itr, tuple)
15   \{
16      const char *name = tuple->key;
17      const Edje\_External\_Type *type = tuple->data;
18 
19      if ((!type) ||
20          (type->abi\_version != edje\_external\_type\_abi\_version\_get()))
21        \{
22           printf("Error: invalid type %p (abi: %d, expected: %d)\(\backslash\)n",
23                   type, type ? type->abi\_version : 0,
24                   edje\_external\_type\_abi\_version\_get());
25           continue;
26        \}
27 
28      printf("%s: %s (%s) label='%s' desc='%s'\(\backslash\)n",
29             name, type->module, type->module\_name,
30             type->label\_get ? type->label\_get(type->data) : "",
31             type->description\_get ? type->description\_get(type->data) : "");
32   \}
\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{DoxyParams}{Parameters}
{\em type\+\_\+name} & Edje external type name\\
\hline
\end{DoxyParams}
\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().

