\hypertarget{group__Eina__Module__Group}{}\section{Module}
\label{group__Eina__Module__Group}\index{Module@{Module}}


Eina module provides some helpers over P\+O\+S\+IX \mbox{\hyperlink{group__Evil__Dlfcn_ga7287ef9a037dbf96810a83ab770c2971}{dlopen()}}.  


\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT}}(f)~E\+X\+P\+O\+R\+T\+A\+PI \mbox{\hyperlink{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}{Eina\+\_\+\+Module\+\_\+\+Init}} \+\_\+\+\_\+eina\+\_\+module\+\_\+init = \&f
\begin{DoxyCompactList}\small\item\em declares the given function as the module initializer (\+\_\+\+\_\+eina\+\_\+module\+\_\+init). \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Module__Group_gacac39c3b104d8b638902165d3eaf8935}{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN}}(f)~E\+X\+P\+O\+R\+T\+A\+PI \mbox{\hyperlink{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}{Eina\+\_\+\+Module\+\_\+\+Shutdown}} \+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown = \&f
\begin{DoxyCompactList}\small\item\em declares the given function as to be called on shutdown (\+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown). \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}\label{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}} 
typedef struct \+\_\+\+Eina\+\_\+\+Module \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}}
\begin{DoxyCompactList}\small\item\em Dynamic module loader handle. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Module__Group_gaafada695dd7ed46ee22aa77201300fa9}\label{group__Eina__Module__Group_gaafada695dd7ed46ee22aa77201300fa9}} 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Module__Group_gaafada695dd7ed46ee22aa77201300fa9}{Eina\+\_\+\+Module\+\_\+\+Cb}}) (\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$m, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Dynamic module loader callback. \end{DoxyCompactList}\item 
typedef \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}($\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}{Eina\+\_\+\+Module\+\_\+\+Init}}) (void)
\begin{DoxyCompactList}\small\item\em If a function with this signature is exported by module as \+\_\+\+\_\+eina\+\_\+module\+\_\+init, it will be called on the first load after \mbox{\hyperlink{group__Evil__Dlfcn_ga7287ef9a037dbf96810a83ab770c2971}{dlopen()}} and if \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} is returned, load will fail, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} means the module was successfully initialized. \end{DoxyCompactList}\item 
typedef void($\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}{Eina\+\_\+\+Module\+\_\+\+Shutdown}}) (void)
\begin{DoxyCompactList}\small\item\em If a function with this signature is exported by module as \+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown, it will be called before calling \mbox{\hyperlink{group__Evil__Dlfcn_gaf483b6c4400965aa885f9f1a144138a5}{dlclose()}} \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}{eina\+\_\+module\+\_\+new}} (const char $\ast$file)
\begin{DoxyCompactList}\small\item\em Returns a new module. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Module__Group_gaf30d4e595f74ab7b7ecff80e683d5d3b}{eina\+\_\+module\+\_\+free}} (\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module)
\begin{DoxyCompactList}\small\item\em Deletes a module. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load}} (\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module)
\begin{DoxyCompactList}\small\item\em Loads a module. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}{eina\+\_\+module\+\_\+unload}} (\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module)
\begin{DoxyCompactList}\small\item\em Unloads a module. \end{DoxyCompactList}\item 
void $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_gab2af6c454e925332ff0f4b40588ea2c7}{eina\+\_\+module\+\_\+symbol\+\_\+get}} (const \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module, const char $\ast$symbol)
\begin{DoxyCompactList}\small\item\em Retrieves the data associated with a symbol. \end{DoxyCompactList}\item 
const char $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_gab214d40634cbd96075c8bee3400a48d3}{eina\+\_\+module\+\_\+file\+\_\+get}} (const \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module)
\begin{DoxyCompactList}\small\item\em Returns the file name associated with the module. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Module__Group_ga25cc79876915b9f0e647a7292991d139}{eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set}} (\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$module, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} global)
\begin{DoxyCompactList}\small\item\em Defines if on module load we should expose all symbol. \end{DoxyCompactList}\item 
char $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga47e0f52901e42e05b0829b6a829d4894}{eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get}} (const void $\ast$symbol, const char $\ast$sub\+\_\+dir)
\begin{DoxyCompactList}\small\item\em Returns the path built from the location of a library and a given sub directory. \end{DoxyCompactList}\item 
char $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga5a80f3b3b965e5339a77bea62dd7dc17}{eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get}} (const char $\ast$env, const char $\ast$sub\+\_\+dir)
\begin{DoxyCompactList}\small\item\em Returns the path built from the value of an environment variable and a given sub directory. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_gaed519754b05fa77a329472294eeacb4d}{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get}} (\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array, const char $\ast$path, const char $\ast$arch)
\begin{DoxyCompactList}\small\item\em Gets an array of modules found on the directory path matching an arch type. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga7a61fc6cae44ea9a085f2fe6b52e1f37}{eina\+\_\+module\+\_\+list\+\_\+get}} (\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array, const char $\ast$path, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} recursive, \mbox{\hyperlink{group__Eina__Module__Group_gaafada695dd7ed46ee22aa77201300fa9}{Eina\+\_\+\+Module\+\_\+\+Cb}} cb, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Gets a list of modules found on the directory path. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Module__Group_gaf894f374f05fa6445a134b7eacc6727d}{eina\+\_\+module\+\_\+list\+\_\+load}} (\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array)
\begin{DoxyCompactList}\small\item\em Loads every module on the list of modules. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Module__Group_gaa0de0b199cd63a5906875a0a2f4c4fc0}{eina\+\_\+module\+\_\+list\+\_\+unload}} (\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array)
\begin{DoxyCompactList}\small\item\em Unloads every module on the list of modules. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Eina__Module__Group_ga12e5611bb58374c893334ff93509fcfa}{eina\+\_\+module\+\_\+list\+\_\+free}} (\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array)
\begin{DoxyCompactList}\small\item\em {\ttfamily Frees} every module on the list of modules. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$ \mbox{\hyperlink{group__Eina__Module__Group_ga2f60ccf09dc1a7c57c7e2b29c57b4da7}{eina\+\_\+module\+\_\+find}} (const \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$array, const char $\ast$module)
\begin{DoxyCompactList}\small\item\em Finds a module in array. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Module__Group_gaf2f65ced856a643e76460b2fb76f34cc}\label{group__Eina__Module__Group_gaf2f65ced856a643e76460b2fb76f34cc}} 
\mbox{\hyperlink{group__Eina__Error__Group_ga95b3cbb33e987e7d92a81ea785001686}{Eina\+\_\+\+Error}} {\bfseries E\+I\+N\+A\+\_\+\+E\+R\+R\+O\+R\+\_\+\+W\+R\+O\+N\+G\+\_\+\+M\+O\+D\+U\+LE}
\item 
\mbox{\Hypertarget{group__Eina__Module__Group_ga8ee7c657caf1577ba992f9162ecc6eb8}\label{group__Eina__Module__Group_ga8ee7c657caf1577ba992f9162ecc6eb8}} 
\mbox{\hyperlink{group__Eina__Error__Group_ga95b3cbb33e987e7d92a81ea785001686}{Eina\+\_\+\+Error}} {\bfseries E\+I\+N\+A\+\_\+\+E\+R\+R\+O\+R\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+I\+T\+\_\+\+F\+A\+I\+L\+ED}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Eina module provides some helpers over P\+O\+S\+IX \mbox{\hyperlink{group__Evil__Dlfcn_ga7287ef9a037dbf96810a83ab770c2971}{dlopen()}}. 

These functions provide module management.

It is not meant to replace, abstract or make a \char`\"{}portable\char`\"{} version of P\+O\+S\+IX, but enhance its usage by defining some good practices.

Modules are created with \mbox{\hyperlink{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}{eina\+\_\+module\+\_\+new()}} and later loaded with \mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load()}}. Loads are reference counted and there must be the same number of \mbox{\hyperlink{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}{eina\+\_\+module\+\_\+unload()}} in order to have it to call \mbox{\hyperlink{group__Evil__Dlfcn_gaf483b6c4400965aa885f9f1a144138a5}{dlclose()}}. This makes simple to have different users for the same module.

The loaded shared objects may have two visible functions that will be called and might provide initialization and shutdown procedures. The symbols are {\ttfamily \+\_\+\+\_\+eina\+\_\+module\+\_\+init} and {\ttfamily \+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown} and will be defined by the macros \mbox{\hyperlink{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+I\+T()}} and \mbox{\hyperlink{group__Eina__Module__Group_gacac39c3b104d8b638902165d3eaf8935}{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+W\+N()}}.

There are some helpers to automatically create modules based on directory listing. See \mbox{\hyperlink{group__Eina__Module__Group_gaed519754b05fa77a329472294eeacb4d}{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get()}}, \mbox{\hyperlink{group__Eina__Module__Group_ga7a61fc6cae44ea9a085f2fe6b52e1f37}{eina\+\_\+module\+\_\+list\+\_\+get()}} and \mbox{\hyperlink{group__Eina__Module__Group_ga2f60ccf09dc1a7c57c7e2b29c57b4da7}{eina\+\_\+module\+\_\+find()}}. 

\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}\label{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}} 
\index{Module@{Module}!E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT@{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT}}
\index{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT@{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT}!Module@{Module}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT}{EINA\_MODULE\_INIT}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+I\+N\+IT(\begin{DoxyParamCaption}\item[{}]{f }\end{DoxyParamCaption})~E\+X\+P\+O\+R\+T\+A\+PI \mbox{\hyperlink{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}{Eina\+\_\+\+Module\+\_\+\+Init}} \+\_\+\+\_\+eina\+\_\+module\+\_\+init = \&f}



declares the given function as the module initializer (\+\_\+\+\_\+eina\+\_\+module\+\_\+init). 

It must be of signature \mbox{\hyperlink{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}{Eina\+\_\+\+Module\+\_\+\+Init}} \mbox{\Hypertarget{group__Eina__Module__Group_gacac39c3b104d8b638902165d3eaf8935}\label{group__Eina__Module__Group_gacac39c3b104d8b638902165d3eaf8935}} 
\index{Module@{Module}!E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN@{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN}}
\index{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN@{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN}!Module@{Module}}
\subsubsection{\texorpdfstring{E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN}{EINA\_MODULE\_SHUTDOWN}}
{\footnotesize\ttfamily \#define E\+I\+N\+A\+\_\+\+M\+O\+D\+U\+L\+E\+\_\+\+S\+H\+U\+T\+D\+O\+WN(\begin{DoxyParamCaption}\item[{}]{f }\end{DoxyParamCaption})~E\+X\+P\+O\+R\+T\+A\+PI \mbox{\hyperlink{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}{Eina\+\_\+\+Module\+\_\+\+Shutdown}} \+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown = \&f}



declares the given function as to be called on shutdown (\+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown). 

It must be of signature \mbox{\hyperlink{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}{Eina\+\_\+\+Module\+\_\+\+Shutdown}} 

\subsection{Typedef Documentation}
\mbox{\Hypertarget{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}\label{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}} 
\index{Module@{Module}!Eina\+\_\+\+Module\+\_\+\+Init@{Eina\+\_\+\+Module\+\_\+\+Init}}
\index{Eina\+\_\+\+Module\+\_\+\+Init@{Eina\+\_\+\+Module\+\_\+\+Init}!Module@{Module}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Module\+\_\+\+Init}{Eina\_Module\_Init}}
{\footnotesize\ttfamily Eina\+\_\+\+Module\+\_\+\+Init}



If a function with this signature is exported by module as \+\_\+\+\_\+eina\+\_\+module\+\_\+init, it will be called on the first load after \mbox{\hyperlink{group__Evil__Dlfcn_ga7287ef9a037dbf96810a83ab770c2971}{dlopen()}} and if \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} is returned, load will fail, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} means the module was successfully initialized. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}{Eina\+\_\+\+Module\+\_\+\+Shutdown}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}\label{group__Eina__Module__Group_ga8b5ae1dc6eb935dc463686f1b7bba57c}} 
\index{Module@{Module}!Eina\+\_\+\+Module\+\_\+\+Shutdown@{Eina\+\_\+\+Module\+\_\+\+Shutdown}}
\index{Eina\+\_\+\+Module\+\_\+\+Shutdown@{Eina\+\_\+\+Module\+\_\+\+Shutdown}!Module@{Module}}
\subsubsection{\texorpdfstring{Eina\+\_\+\+Module\+\_\+\+Shutdown}{Eina\_Module\_Shutdown}}
{\footnotesize\ttfamily Eina\+\_\+\+Module\+\_\+\+Shutdown}



If a function with this signature is exported by module as \+\_\+\+\_\+eina\+\_\+module\+\_\+shutdown, it will be called before calling \mbox{\hyperlink{group__Evil__Dlfcn_gaf483b6c4400965aa885f9f1a144138a5}{dlclose()}} 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Module__Group_ga0535053efca6aee20c53fdff65899725}{Eina\+\_\+\+Module\+\_\+\+Init}} 
\end{DoxySeeAlso}


\subsection{Function Documentation}
\mbox{\Hypertarget{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}\label{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+new@{eina\+\_\+module\+\_\+new}}
\index{eina\+\_\+module\+\_\+new@{eina\+\_\+module\+\_\+new}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+new()}{eina\_module\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}}$\ast$ eina\+\_\+module\+\_\+new (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file }\end{DoxyParamCaption})}



Returns a new module. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em file} & The name of the file module to load. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new module. If {\ttfamily file} is {\ttfamily N\+U\+LL}, or if it does not exist, the function returns {\ttfamily N\+U\+LL}, otherwise, it allocates an Eina\+\_\+\+Module, stores a duplicate string of {\ttfamily file}, sets its reference to {\ttfamily 0} and its handle to {\ttfamily N\+U\+LL}.
\end{DoxyReturn}
When the new module is not needed anymore, use \mbox{\hyperlink{group__Eina__Module__Group_gaf30d4e595f74ab7b7ecff80e683d5d3b}{eina\+\_\+module\+\_\+free()}} to free the allocated memory.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Eina__Module__Group_gaf30d4e595f74ab7b7ecff80e683d5d3b}\label{group__Eina__Module__Group_gaf30d4e595f74ab7b7ecff80e683d5d3b}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+free@{eina\+\_\+module\+\_\+free}}
\index{eina\+\_\+module\+\_\+free@{eina\+\_\+module\+\_\+free}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+free()}{eina\_module\_free()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+module\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module }\end{DoxyParamCaption})}



Deletes a module. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em module} & The module to delete. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise.
\end{DoxyReturn}
This function calls \mbox{\hyperlink{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}{eina\+\_\+module\+\_\+unload()}} if {\ttfamily module} has been previously loaded and frees the allocated memory. On success this function returns \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} and \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise. If {\ttfamily module} is {\ttfamily N\+U\+LL}, the function returns immediately. \mbox{\Hypertarget{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}\label{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+load@{eina\+\_\+module\+\_\+load}}
\index{eina\+\_\+module\+\_\+load@{eina\+\_\+module\+\_\+load}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+load()}{eina\_module\_load()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+module\+\_\+load (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module }\end{DoxyParamCaption})}



Loads a module. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em module} & The module to load. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise.
\end{DoxyReturn}
This function load the shared file object passed in \mbox{\hyperlink{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}{eina\+\_\+module\+\_\+new()}}. If it is a internal Eina module (like the mempools), it also initializes it. If the shared file object cannot be loaded, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} is returned. If it is an internal Eina module and the module cannot be initialized, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} is returned. If the module has already been loaded, its reference counter is increased by one and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} is returned. If {\ttfamily module} is {\ttfamily N\+U\+LL}, the function returns immediately \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}.

When the symbols of the shared file objects are not needed anymore, call \mbox{\hyperlink{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}{eina\+\_\+module\+\_\+unload()}} to unload the module. \mbox{\Hypertarget{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}\label{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+unload@{eina\+\_\+module\+\_\+unload}}
\index{eina\+\_\+module\+\_\+unload@{eina\+\_\+module\+\_\+unload}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+unload()}{eina\_module\_unload()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} eina\+\_\+module\+\_\+unload (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module }\end{DoxyParamCaption})}



Unloads a module. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em module} & The module to load. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} otherwise.
\end{DoxyReturn}
This function unload the module {\ttfamily module} that has been previously loaded by \mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load()}}. If the reference counter of {\ttfamily module} is strictly greater than {\ttfamily 1}, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}} is returned. Otherwise, the shared object file is closed and if it is a internal Eina module, it is shut down just before. In that case, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}} is returned. In all case, the reference counter is decreased. If {\ttfamily module} is {\ttfamily N\+U\+LL}, the function returns immediately \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE}}. \mbox{\Hypertarget{group__Eina__Module__Group_gab2af6c454e925332ff0f4b40588ea2c7}\label{group__Eina__Module__Group_gab2af6c454e925332ff0f4b40588ea2c7}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+symbol\+\_\+get@{eina\+\_\+module\+\_\+symbol\+\_\+get}}
\index{eina\+\_\+module\+\_\+symbol\+\_\+get@{eina\+\_\+module\+\_\+symbol\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+symbol\+\_\+get()}{eina\_module\_symbol\_get()}}
{\footnotesize\ttfamily void$\ast$ eina\+\_\+module\+\_\+symbol\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module,  }\item[{const char $\ast$}]{symbol }\end{DoxyParamCaption})}



Retrieves the data associated with a symbol. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em module} & The module. \\
\hline
\mbox{\tt in}  & {\em symbol} & The symbol. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data associated with the symbol, or {\ttfamily N\+U\+LL} on failure.
\end{DoxyReturn}
This function returns the data associated with {\ttfamily symbol} of {\ttfamily module}. {\ttfamily module} must have been loaded before with \mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load()}}. If {\ttfamily module} is {\ttfamily N\+U\+LL}, or if it has not been correctly loaded before, the function returns immediately {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{group__Eina__Module__Group_gab214d40634cbd96075c8bee3400a48d3}\label{group__Eina__Module__Group_gab214d40634cbd96075c8bee3400a48d3}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+file\+\_\+get@{eina\+\_\+module\+\_\+file\+\_\+get}}
\index{eina\+\_\+module\+\_\+file\+\_\+get@{eina\+\_\+module\+\_\+file\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+file\+\_\+get()}{eina\_module\_file\_get()}}
{\footnotesize\ttfamily const char$\ast$ eina\+\_\+module\+\_\+file\+\_\+get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module }\end{DoxyParamCaption})}



Returns the file name associated with the module. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em module} & The module. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The file name.
\end{DoxyReturn}
This function returns the file name passed in \mbox{\hyperlink{group__Eina__Module__Group_ga51920ac99ce58c98f2227d01992cb93c}{eina\+\_\+module\+\_\+new()}}. If {\ttfamily module} is {\ttfamily N\+U\+LL}, the function returns immediately {\ttfamily N\+U\+LL}. The returned value must no be freed. 

Referenced by eina\+\_\+module\+\_\+find().

\mbox{\Hypertarget{group__Eina__Module__Group_ga25cc79876915b9f0e647a7292991d139}\label{group__Eina__Module__Group_ga25cc79876915b9f0e647a7292991d139}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set@{eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set}}
\index{eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set@{eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set()}{eina\_module\_symbol\_global\_set()}}
{\footnotesize\ttfamily void eina\+\_\+module\+\_\+symbol\+\_\+global\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}} $\ast$}]{module,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{global }\end{DoxyParamCaption})}



Defines if on module load we should expose all symbol. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em module} & The module to turn off/on symbol to be exposed \\
\hline
\mbox{\tt in}  & {\em global} & {\ttfamily true} to turn on symbol to be exposed, {\ttfamily false} otherwise\\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+11 
\end{DoxySince}
\mbox{\Hypertarget{group__Eina__Module__Group_ga47e0f52901e42e05b0829b6a829d4894}\label{group__Eina__Module__Group_ga47e0f52901e42e05b0829b6a829d4894}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get@{eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get}}
\index{eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get@{eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get()}{eina\_module\_symbol\_path\_get()}}
{\footnotesize\ttfamily char$\ast$ eina\+\_\+module\+\_\+symbol\+\_\+path\+\_\+get (\begin{DoxyParamCaption}\item[{const void $\ast$}]{symbol,  }\item[{const char $\ast$}]{sub\+\_\+dir }\end{DoxyParamCaption})}



Returns the path built from the location of a library and a given sub directory. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em symbol} & The symbol to search for. \\
\hline
\mbox{\tt in}  & {\em sub\+\_\+dir} & The subdirectory to append. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The built path on success, {\ttfamily N\+U\+LL} otherwise.
\end{DoxyReturn}
This function returns the path built by concatenating the path of the library containing the symbol {\ttfamily symbol} and {\ttfamily sub\+\_\+dir}. {\ttfamily sub\+\_\+dir} can be {\ttfamily N\+U\+LL}. The returned path must be freed when not used anymore. If the symbol is not found, or dl\+\_\+addr() is not supported, or allocation fails, this function returns {\ttfamily N\+U\+LL}. 

Referenced by ecore\+\_\+buffer\+\_\+init().

\mbox{\Hypertarget{group__Eina__Module__Group_ga5a80f3b3b965e5339a77bea62dd7dc17}\label{group__Eina__Module__Group_ga5a80f3b3b965e5339a77bea62dd7dc17}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get@{eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get}}
\index{eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get@{eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get()}{eina\_module\_environment\_path\_get()}}
{\footnotesize\ttfamily char$\ast$ eina\+\_\+module\+\_\+environment\+\_\+path\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{env,  }\item[{const char $\ast$}]{sub\+\_\+dir }\end{DoxyParamCaption})}



Returns the path built from the value of an environment variable and a given sub directory. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em env} & The environment variable to expand. \\
\hline
\mbox{\tt in}  & {\em sub\+\_\+dir} & The subdirectory to append. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The built path on success, {\ttfamily N\+U\+LL} otherwise.
\end{DoxyReturn}
This function returns the path built by concatenating the value of the environment variable named {\ttfamily env} and {\ttfamily sub\+\_\+dir}. {\ttfamily sub\+\_\+dir} can be {\ttfamily N\+U\+LL}. The returned path must be freed when not used anymore. If the symbol is not found, or {\ttfamily env} does not exist, or allocation fails, this function returns {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{group__Eina__Module__Group_gaed519754b05fa77a329472294eeacb4d}\label{group__Eina__Module__Group_gaed519754b05fa77a329472294eeacb4d}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get@{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get}}
\index{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get@{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get()}{eina\_module\_arch\_list\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}}$\ast$ eina\+\_\+module\+\_\+arch\+\_\+list\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array,  }\item[{const char $\ast$}]{path,  }\item[{const char $\ast$}]{arch }\end{DoxyParamCaption})}



Gets an array of modules found on the directory path matching an arch type. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em array} & The array that stores the list of the modules. \\
\hline
\mbox{\tt in}  & {\em path} & The directory\textquotesingle{}s path to search for modules. \\
\hline
\mbox{\tt in}  & {\em arch} & The architecture string. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The array of modules found in {\ttfamily path} matching {\ttfamily arch}.
\end{DoxyReturn}
This function adds to {\ttfamily array} the module names found in {\ttfamily path} which match the cpu architecture {\ttfamily arch}. If {\ttfamily path} or {\ttfamily arch} is {\ttfamily N\+U\+LL}, the function returns immediately {\ttfamily array}. {\ttfamily array} can be {\ttfamily N\+U\+LL}. In that case, it is created with 4 elements. 

Referenced by ecore\+\_\+buffer\+\_\+init().

\mbox{\Hypertarget{group__Eina__Module__Group_ga7a61fc6cae44ea9a085f2fe6b52e1f37}\label{group__Eina__Module__Group_ga7a61fc6cae44ea9a085f2fe6b52e1f37}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+list\+\_\+get@{eina\+\_\+module\+\_\+list\+\_\+get}}
\index{eina\+\_\+module\+\_\+list\+\_\+get@{eina\+\_\+module\+\_\+list\+\_\+get}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+list\+\_\+get()}{eina\_module\_list\_get()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}}$\ast$ eina\+\_\+module\+\_\+list\+\_\+get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array,  }\item[{const char $\ast$}]{path,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{recursive,  }\item[{\mbox{\hyperlink{group__Eina__Module__Group_gaafada695dd7ed46ee22aa77201300fa9}{Eina\+\_\+\+Module\+\_\+\+Cb}}}]{cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



Gets a list of modules found on the directory path. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em array} & The array that stores the list of the modules. \\
\hline
\mbox{\tt in}  & {\em path} & The directory\textquotesingle{}s path to search for modules. \\
\hline
\mbox{\tt in}  & {\em recursive} & Iterate recursively on the path. \\
\hline
\mbox{\tt in}  & {\em cb} & Callback function to call on each module. \\
\hline
\mbox{\tt in}  & {\em data} & Data passed to the callback function. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The array of modules found in {\ttfamily path}.
\end{DoxyReturn}
This function adds to {\ttfamily array} the list of modules found in {\ttfamily path}. If {\ttfamily recursive} is \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE}}, then recursive search is done. The callback {\ttfamily cb} is called on each module found, and {\ttfamily data} is passed to {\ttfamily cb}. If {\ttfamily path} is {\ttfamily N\+U\+LL}, the function returns immediately {\ttfamily array}. If the returned value of {\ttfamily cb} is {\ttfamily 0}, the module will not be added to the list, otherwise it will be added. {\ttfamily array} can be {\ttfamily N\+U\+LL}. In that case, it is created with 4 elements. {\ttfamily cb} can be {\ttfamily N\+U\+LL}. 

Referenced by ecore\+\_\+buffer\+\_\+init().

\mbox{\Hypertarget{group__Eina__Module__Group_gaf894f374f05fa6445a134b7eacc6727d}\label{group__Eina__Module__Group_gaf894f374f05fa6445a134b7eacc6727d}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+list\+\_\+load@{eina\+\_\+module\+\_\+list\+\_\+load}}
\index{eina\+\_\+module\+\_\+list\+\_\+load@{eina\+\_\+module\+\_\+list\+\_\+load}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+list\+\_\+load()}{eina\_module\_list\_load()}}
{\footnotesize\ttfamily void eina\+\_\+module\+\_\+list\+\_\+load (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array }\end{DoxyParamCaption})}



Loads every module on the list of modules. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em array} & The array of modules to load.\\
\hline
\end{DoxyParams}
This function calls \mbox{\hyperlink{group__Eina__Module__Group_ga53e898fe0c85e8c64e045151c3704e59}{eina\+\_\+module\+\_\+load()}} on each element found in {\ttfamily array}. If {\ttfamily array} is {\ttfamily N\+U\+LL}, this function does nothing. 

Referenced by ecore\+\_\+buffer\+\_\+init().

\mbox{\Hypertarget{group__Eina__Module__Group_gaa0de0b199cd63a5906875a0a2f4c4fc0}\label{group__Eina__Module__Group_gaa0de0b199cd63a5906875a0a2f4c4fc0}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+list\+\_\+unload@{eina\+\_\+module\+\_\+list\+\_\+unload}}
\index{eina\+\_\+module\+\_\+list\+\_\+unload@{eina\+\_\+module\+\_\+list\+\_\+unload}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+list\+\_\+unload()}{eina\_module\_list\_unload()}}
{\footnotesize\ttfamily void eina\+\_\+module\+\_\+list\+\_\+unload (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array }\end{DoxyParamCaption})}



Unloads every module on the list of modules. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em array} & The array of modules to unload.\\
\hline
\end{DoxyParams}
This function calls \mbox{\hyperlink{group__Eina__Module__Group_ga3ad28a963a93027359665f06268d95aa}{eina\+\_\+module\+\_\+unload()}} on each element found in {\ttfamily array}. If {\ttfamily array} is {\ttfamily N\+U\+LL}, this function does nothing. \mbox{\Hypertarget{group__Eina__Module__Group_ga12e5611bb58374c893334ff93509fcfa}\label{group__Eina__Module__Group_ga12e5611bb58374c893334ff93509fcfa}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+list\+\_\+free@{eina\+\_\+module\+\_\+list\+\_\+free}}
\index{eina\+\_\+module\+\_\+list\+\_\+free@{eina\+\_\+module\+\_\+list\+\_\+free}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+list\+\_\+free()}{eina\_module\_list\_free()}}
{\footnotesize\ttfamily void eina\+\_\+module\+\_\+list\+\_\+free (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array }\end{DoxyParamCaption})}



{\ttfamily Frees} every module on the list of modules. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in,out}  & {\em array} & The array of modules to free.\\
\hline
\end{DoxyParams}
This function calls \mbox{\hyperlink{group__Eina__Module__Group_gaf30d4e595f74ab7b7ecff80e683d5d3b}{eina\+\_\+module\+\_\+free()}} on each element found in {\ttfamily array}. If {\ttfamily array} is {\ttfamily N\+U\+LL}, this function does nothing. 

Referenced by ecore\+\_\+buffer\+\_\+shutdown().

\mbox{\Hypertarget{group__Eina__Module__Group_ga2f60ccf09dc1a7c57c7e2b29c57b4da7}\label{group__Eina__Module__Group_ga2f60ccf09dc1a7c57c7e2b29c57b4da7}} 
\index{Module@{Module}!eina\+\_\+module\+\_\+find@{eina\+\_\+module\+\_\+find}}
\index{eina\+\_\+module\+\_\+find@{eina\+\_\+module\+\_\+find}!Module@{Module}}
\subsubsection{\texorpdfstring{eina\+\_\+module\+\_\+find()}{eina\_module\_find()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__Eina__Module__Group_ga76c40ee7fea1c69f1eb76b1c6d45d650}{Eina\+\_\+\+Module}}$\ast$ eina\+\_\+module\+\_\+find (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{group__Eina__Array__Group_ga2a57284ee83a7e767485b7ae2f5df86c}{Eina\+\_\+\+Array}} $\ast$}]{array,  }\item[{const char $\ast$}]{module }\end{DoxyParamCaption})}



Finds a module in array. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em array} & The array to find the module. \\
\hline
\mbox{\tt in}  & {\em module} & The name of module to be searched. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The module to find on success, {\ttfamily N\+U\+LL} otherwise.
\end{DoxyReturn}
This function finds a {\ttfamily module} in {\ttfamily array}. If the element is found the function returns the module, else {\ttfamily N\+U\+LL} is returned. 

References alloca(), E\+I\+N\+A\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+I\+T\+E\+R\+\_\+\+N\+E\+XT, and eina\+\_\+module\+\_\+file\+\_\+get().

