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


These functions provide module management.  


\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Eina__Module__Group_gaece3c6f3487786f9a2b62d38bf556d0b}\label{group__Eina__Module__Group_gaece3c6f3487786f9a2b62d38bf556d0b}} 
\#define \mbox{\hyperlink{group__Eina__Module__Group_gaece3c6f3487786f9a2b62d38bf556d0b}{EINA\+\_\+\+MODULE\+\_\+\+LICENSE}}(\+\_\+license)~EINA\+\_\+\+MODINFO(license, \+\_\+license)
\begin{DoxyCompactList}\small\item\em This macro is used for defining license. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Module__Group_ga5bc710b6d3ad91173994fbf5d32775c8}{EINA\+\_\+\+MODULE\+\_\+\+AUTHOR}}(\+\_\+author)~EINA\+\_\+\+MODINFO(author, \+\_\+author)
\begin{DoxyCompactList}\small\item\em This macro is used for defining author Use \char`\"{}name $<$email$>$\char`\"{} or just \char`\"{}name\char`\"{} for multiple authors, use multiple lines like below. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{group__Eina__Module__Group_ga12ea0226448a79a8ba35edf8df1bed48}\label{group__Eina__Module__Group_ga12ea0226448a79a8ba35edf8df1bed48}} 
\#define \mbox{\hyperlink{group__Eina__Module__Group_ga12ea0226448a79a8ba35edf8df1bed48}{EINA\+\_\+\+MODULE\+\_\+\+VERSION}}(\+\_\+ver)~EINA\+\_\+\+MODINFO(ver, \+\_\+ver)
\begin{DoxyCompactList}\small\item\em This macro is used for defining version. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Module__Group_ga3b281f5a69c95059348f53eedda76283}{EINA\+\_\+\+MODULE\+\_\+\+DESCRIPTION}}(\+\_\+desc)~EINA\+\_\+\+MODINFO(desc, \+\_\+desc)
\begin{DoxyCompactList}\small\item\em This macro is used for defining description. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}{EINA\+\_\+\+MODULE\+\_\+\+INIT}}(f)~\mbox{\hyperlink{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}{EXPORTAPI}} \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}{EINA\+\_\+\+MODULE\+\_\+\+SHUTDOWN}}(f)~\mbox{\hyperlink{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}{EXPORTAPI}} \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}
\doxysubsection*{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}{EINA\+\_\+\+FALSE}} is returned, load will fail, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} 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}
\doxysubsection*{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}
\doxysubsection*{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 EINA\+\_\+\+ERROR\+\_\+\+WRONG\+\_\+\+MODULE}
\item 
\mbox{\Hypertarget{group__Eina__Module__Group_ga8ee7c657caf1577ba992f9162ecc6eb8}\label{group__Eina__Module__Group_ga8ee7c657caf1577ba992f9162ecc6eb8}} 
\mbox{\hyperlink{group__Eina__Error__Group_ga95b3cbb33e987e7d92a81ea785001686}{Eina\+\_\+\+Error}} {\bfseries EINA\+\_\+\+ERROR\+\_\+\+MODULE\+\_\+\+INIT\+\_\+\+FAILED}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
These functions provide module management. 

Eina module provides some helpers over POSIX \mbox{\hyperlink{group__Evil__Dlfcn_ga7287ef9a037dbf96810a83ab770c2971}{dlopen()}}. It is not meant to replace, abstract or make a \char`\"{}portable\char`\"{} version of POSIX, 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}{EINA\+\_\+\+MODULE\+\_\+\+INIT()}} and \mbox{\hyperlink{group__Eina__Module__Group_gacac39c3b104d8b638902165d3eaf8935}{EINA\+\_\+\+MODULE\+\_\+\+SHUTDOWN()}}.

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()}}.

\mbox{\hyperlink{group__Eina__Module__Group_gaece3c6f3487786f9a2b62d38bf556d0b}{EINA\+\_\+\+MODULE\+\_\+\+LICENSE}}, \mbox{\hyperlink{group__Eina__Module__Group_ga5bc710b6d3ad91173994fbf5d32775c8}{EINA\+\_\+\+MODULE\+\_\+\+AUTHOR}}, \mbox{\hyperlink{group__Eina__Module__Group_ga12ea0226448a79a8ba35edf8df1bed48}{EINA\+\_\+\+MODULE\+\_\+\+VERSION}} and \mbox{\hyperlink{group__Eina__Module__Group_ga3b281f5a69c95059348f53eedda76283}{EINA\+\_\+\+MODULE\+\_\+\+DESCRIPTION}} allow you to define module information that can be retrieved with the {\ttfamily eina\+\_\+modinfo} tool. 
\begin{DoxyCode}{0}
\DoxyCodeLine{\$ eina\_modinfo module.so}
\DoxyCodeLine{version: 0.1}
\DoxyCodeLine{description:   Entry test}
\DoxyCodeLine{license: GPLv2}
\DoxyCodeLine{author:  Enlightenment Community}

\end{DoxyCode}
 

\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__Eina__Module__Group_ga5bc710b6d3ad91173994fbf5d32775c8}\label{group__Eina__Module__Group_ga5bc710b6d3ad91173994fbf5d32775c8}} 
\index{Module@{Module}!EINA\_MODULE\_AUTHOR@{EINA\_MODULE\_AUTHOR}}
\index{EINA\_MODULE\_AUTHOR@{EINA\_MODULE\_AUTHOR}!Module@{Module}}
\doxysubsubsection{\texorpdfstring{EINA\_MODULE\_AUTHOR}{EINA\_MODULE\_AUTHOR}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+MODULE\+\_\+\+AUTHOR(\begin{DoxyParamCaption}\item[{}]{\+\_\+author }\end{DoxyParamCaption})~EINA\+\_\+\+MODINFO(author, \+\_\+author)}



This macro is used for defining author Use \char`\"{}name $<$email$>$\char`\"{} or just \char`\"{}name\char`\"{} for multiple authors, use multiple lines like below. 


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Eina__Module__Group_ga5bc710b6d3ad91173994fbf5d32775c8}{EINA\_MODULE\_AUTHOR}}(\textcolor{stringliteral}{"{}Author 1 <author1.email>\(\backslash\)n"{}}}
\DoxyCodeLine{                   \textcolor{stringliteral}{"{}Author 2 <author2.email>"{}});}

\end{DoxyCode}
 \mbox{\Hypertarget{group__Eina__Module__Group_ga3b281f5a69c95059348f53eedda76283}\label{group__Eina__Module__Group_ga3b281f5a69c95059348f53eedda76283}} 
\index{Module@{Module}!EINA\_MODULE\_DESCRIPTION@{EINA\_MODULE\_DESCRIPTION}}
\index{EINA\_MODULE\_DESCRIPTION@{EINA\_MODULE\_DESCRIPTION}!Module@{Module}}
\doxysubsubsection{\texorpdfstring{EINA\_MODULE\_DESCRIPTION}{EINA\_MODULE\_DESCRIPTION}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+MODULE\+\_\+\+DESCRIPTION(\begin{DoxyParamCaption}\item[{}]{\+\_\+desc }\end{DoxyParamCaption})~EINA\+\_\+\+MODINFO(desc, \+\_\+desc)}



This macro is used for defining description. 

Explain what your module does. \mbox{\Hypertarget{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}\label{group__Eina__Module__Group_gab11c2306e567ea3f24d8da4f004e1257}} 
\index{Module@{Module}!EINA\_MODULE\_INIT@{EINA\_MODULE\_INIT}}
\index{EINA\_MODULE\_INIT@{EINA\_MODULE\_INIT}!Module@{Module}}
\doxysubsubsection{\texorpdfstring{EINA\_MODULE\_INIT}{EINA\_MODULE\_INIT}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+MODULE\+\_\+\+INIT(\begin{DoxyParamCaption}\item[{}]{f }\end{DoxyParamCaption})~\mbox{\hyperlink{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}{EXPORTAPI}} \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}!EINA\_MODULE\_SHUTDOWN@{EINA\_MODULE\_SHUTDOWN}}
\index{EINA\_MODULE\_SHUTDOWN@{EINA\_MODULE\_SHUTDOWN}!Module@{Module}}
\doxysubsubsection{\texorpdfstring{EINA\_MODULE\_SHUTDOWN}{EINA\_MODULE\_SHUTDOWN}}
{\footnotesize\ttfamily \#define EINA\+\_\+\+MODULE\+\_\+\+SHUTDOWN(\begin{DoxyParamCaption}\item[{}]{f }\end{DoxyParamCaption})~\mbox{\hyperlink{group__Eina__Types__Group_ga1a53601915c5087ff37780aad3e2ec98}{EXPORTAPI}} \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}} 

\doxysubsection{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}}
\doxysubsubsection{\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}{EINA\+\_\+\+FALSE}} is returned, load will fail, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} 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}}
\doxysubsubsection{\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}


\doxysubsection{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}}
\doxysubsubsection{\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{\texttt{ 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 NULL}, or if it does not exist, the function returns {\ttfamily NULL}, otherwise, it allocates an Eina\+\_\+\+Module, stores a duplicate string of {\ttfamily file}, sets its reference to {\ttfamily 0} and its handle to {\ttfamily NULL}.
\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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em module} & The module to delete. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} 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}{EINA\+\_\+\+TRUE}} and \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} otherwise. If {\ttfamily module} is {\ttfamily NULL}, 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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em module} & The module to load. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} 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}{EINA\+\_\+\+FALSE}} is returned. If it is an internal Eina module and the module cannot be initialized, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} is returned. If the module has already been loaded, its reference counter is increased by one and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} is returned. If {\ttfamily module} is {\ttfamily NULL}, the function returns immediately \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}.

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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em module} & The module to load. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} on success, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} 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}{EINA\+\_\+\+FALSE}} 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}{EINA\+\_\+\+TRUE}} is returned. In all case, the reference counter is decreased. If {\ttfamily module} is {\ttfamily NULL}, the function returns immediately \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}. \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}}
\doxysubsubsection{\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{\texttt{ in}}  & {\em module} & The module. \\
\hline
\mbox{\texttt{ in}}  & {\em symbol} & The symbol. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data associated with the symbol, or {\ttfamily NULL} 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 NULL}, or if it has not been correctly loaded before, the function returns immediately {\ttfamily NULL}. 

Referenced by ecore\+\_\+evas\+\_\+cocoa\+\_\+new(), ecore\+\_\+evas\+\_\+drm\+\_\+new(), ecore\+\_\+evas\+\_\+extn\+\_\+plug\+\_\+new(), ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+get(), ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+events\+\_\+block\+\_\+set(), ecore\+\_\+evas\+\_\+extn\+\_\+socket\+\_\+new(), ecore\+\_\+evas\+\_\+fb\+\_\+new(), ecore\+\_\+evas\+\_\+gl\+\_\+drm\+\_\+new(), ecore\+\_\+evas\+\_\+gl\+\_\+sdl\+\_\+new(), ecore\+\_\+evas\+\_\+psl1ght\+\_\+new(), ecore\+\_\+evas\+\_\+sdl\+\_\+new(), ecore\+\_\+evas\+\_\+software\+\_\+ddraw\+\_\+new(), ecore\+\_\+evas\+\_\+software\+\_\+gdi\+\_\+new(), and ecore\+\_\+evas\+\_\+vnc\+\_\+start().

\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}}
\doxysubsubsection{\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{\texttt{ 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 NULL}, the function returns immediately {\ttfamily NULL}. 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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em module} & The module to turn off/on symbol to be exposed \\
\hline
\mbox{\texttt{ 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}}
\doxysubsubsection{\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{\texttt{ in}}  & {\em symbol} & The symbol to search for. \\
\hline
\mbox{\texttt{ in}}  & {\em sub\+\_\+dir} & The subdirectory to append. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The built path on success, {\ttfamily NULL} 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 NULL}. 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 NULL}. 

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}}
\doxysubsubsection{\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{\texttt{ in}}  & {\em env} & The environment variable to expand. \\
\hline
\mbox{\texttt{ in}}  & {\em sub\+\_\+dir} & The subdirectory to append. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The built path on success, {\ttfamily NULL} 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 NULL}. 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 NULL}. \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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em array} & The array that stores the list of the modules. \\
\hline
\mbox{\texttt{ in}}  & {\em path} & The directory\textquotesingle{}s path to search for modules. \\
\hline
\mbox{\texttt{ 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 NULL}, the function returns immediately {\ttfamily array}. {\ttfamily array} can be {\ttfamily NULL}. 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}}
\doxysubsubsection{\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{\texttt{ in,out}}  & {\em array} & The array that stores the list of the modules. \\
\hline
\mbox{\texttt{ in}}  & {\em path} & The directory\textquotesingle{}s path to search for modules. \\
\hline
\mbox{\texttt{ in}}  & {\em recursive} & Iterate recursively on the path. \\
\hline
\mbox{\texttt{ in}}  & {\em cb} & Callback function to call on each module. \\
\hline
\mbox{\texttt{ 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}{EINA\+\_\+\+TRUE}}, 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 NULL}, 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 NULL}. In that case, it is created with 4 elements. {\ttfamily cb} can be {\ttfamily NULL}. 

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}}
\doxysubsubsection{\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{\texttt{ 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 NULL}, 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}}
\doxysubsubsection{\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{\texttt{ 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 NULL}, 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}}
\doxysubsubsection{\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{\texttt{ 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 NULL}, 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}}
\doxysubsubsection{\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{\texttt{ in}}  & {\em array} & The array to find the module. \\
\hline
\mbox{\texttt{ in}}  & {\em module} & The name of module to be searched. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The module to find on success, {\ttfamily NULL} otherwise.
\end{DoxyReturn}
This function finds a {\ttfamily module} in {\ttfamily array}. If the element is found the function returns the module, else {\ttfamily NULL} is returned. 

References alloca(), EINA\+\_\+\+ARRAY\+\_\+\+ITER\+\_\+\+NEXT, and eina\+\_\+module\+\_\+file\+\_\+get().

