<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase}{}\doxysection{kdb\+::tools\+::Modules\+Plugin\+Database Class Reference}
\label{classkdb_1_1tools_1_1ModulesPluginDatabase}\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}


A plugin database that works with installed modules.  




{\ttfamily \#include $&lt;$plugindatabase.\+hpp$&gt;$}



Inheritance diagram for kdb\+::tools\+::Modules\+Plugin\+Database\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=253pt]{classkdb_1_1tools_1_1ModulesPluginDatabase__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for kdb\+::tools\+::Modules\+Plugin\+Database\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=227pt]{classkdb_1_1tools_1_1ModulesPluginDatabase__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
std\+::vector$&lt;$ std\+::string $&gt;$ \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a3fa5a08caf47cb79f9889641a96f197b}{list\+All\+Plugins}} () const
\begin{DoxyCompactList}\small\item\em list all plugins \end{DoxyCompactList}\item 
std\+::string \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a3f51beee8aecb4371e7d12e98958f875}{lookup\+Info}} (\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} const \&amp;spec, std\+::string const \&amp;which) const
\begin{DoxyCompactList}\small\item\em lookup contract clauses or dynamic information \end{DoxyCompactList}\item 
func\+\_\+t \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a0e81e1b7b296a52f8040fd966b461c3a}{get\+Symbol}} (\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} const \&amp;whichplugin, std\+::string const \&amp;which) const
\begin{DoxyCompactList}\small\item\em get exported plugin symbol \end{DoxyCompactList}\item 
\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_aa7f244f0271ea9b2a3f5b52779167f55}{lookup\+Metadata}} (std\+::string const \&amp;which) const
\begin{DoxyCompactList}\small\item\em lookup which plugin handles metadata \end{DoxyCompactList}\item 
\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_acdb15c10fc34f74687ecbbf8bac526f6}{lookup\+Provides}} (std\+::string const \&amp;\mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}}) const
\begin{DoxyCompactList}\small\item\em lookup which plugin is a provider for that plugin \end{DoxyCompactList}\item 
std\+::map$&lt;$ int, \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} $&gt;$ \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_abe19487ff2a2e0548288dfa2a5678ae1}{lookup\+All\+Provides\+With\+Status}} (std\+::string const \&amp;\mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}}) const
\begin{DoxyCompactList}\small\item\em looks up all plugins which are a suitable provider \end{DoxyCompactList}\item 
std\+::vector$&lt;$ \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} $&gt;$ \mbox{\hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a306384e88f9cf2874f6ba9ce28973a26}{lookup\+All\+Provides}} (std\+::string const \&amp;\mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}}) const
\begin{DoxyCompactList}\small\item\em looks up all plugins which are a suitable provider \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Additional Inherited Members}


\doxysubsection{Detailed Description}
A plugin database that works with installed modules. 

\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_a0e81e1b7b296a52f8040fd966b461c3a}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_a0e81e1b7b296a52f8040fd966b461c3a}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!getSymbol@{getSymbol}}
\index{getSymbol@{getSymbol}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{getSymbol()}{getSymbol()}}
{\footnotesize\ttfamily Plugin\+Database\+::func\+\_\+t kdb\+::tools\+::\+Modules\+Plugin\+Database\+::get\+Symbol (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} const \&amp;}]{whichplugin,  }\item[{std\+::string const \&amp;}]{which }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



get exported plugin symbol 


\begin{DoxyParams}{Parameters}
{\em whichplugin} &amp; from which plugin? \\
\hline
{\em which} &amp; which symbol would you like to look up?\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the function pointer to the exported symbol or NULL if the symbol was not found 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_a87b5ef6ee66ce1ad46cc590a2b60b9fa}{kdb\+::tools\+::\+Plugin\+Database}}.



Reimplemented in \mbox{\hyperlink{classkdb_1_1tools_1_1MockPluginDatabase_a5a701fd310be0e9f7d14a865c0226517}{kdb\+::tools\+::\+Mock\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_a3fa5a08caf47cb79f9889641a96f197b}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_a3fa5a08caf47cb79f9889641a96f197b}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!listAllPlugins@{listAllPlugins}}
\index{listAllPlugins@{listAllPlugins}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{listAllPlugins()}{listAllPlugins()}}
{\footnotesize\ttfamily std\+::vector$&lt;$ std\+::string $&gt;$ kdb\+::tools\+::\+Modules\+Plugin\+Database\+::list\+All\+Plugins (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



list all plugins 

If Elektra is compiled with plugins, it will search for shared libraries. In any case, if no shared libraries were found it will fallback to an internal list (plugins that were compiled together with Elektra).

\begin{DoxyReturn}{Returns}
a list of all available plugins 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_adc1f43ccefdd7fc15a57db7571420642}{kdb\+::tools\+::\+Plugin\+Database}}.



Reimplemented in \mbox{\hyperlink{classkdb_1_1tools_1_1MockPluginDatabase_a3663848683953bfad7123c48c00ab404}{kdb\+::tools\+::\+Mock\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_a306384e88f9cf2874f6ba9ce28973a26}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_a306384e88f9cf2874f6ba9ce28973a26}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!lookupAllProvides@{lookupAllProvides}}
\index{lookupAllProvides@{lookupAllProvides}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{lookupAllProvides()}{lookupAllProvides()}}
{\footnotesize\ttfamily std\+::vector$&lt;$ \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} $&gt;$ kdb\+::tools\+::\+Modules\+Plugin\+Database\+::lookup\+All\+Provides (\begin{DoxyParamCaption}\item[{std\+::string const \&amp;}]{provides }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



looks up all plugins which are a suitable provider 

\begin{DoxyNote}{Note}
in case a plugin name is provided, the plugin with the name will also be part of the result. But if there are other plugins providing the requirement, then they will also be part of the result. The ordering of the resulting vector has no special meaning.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em provides} &amp; is the provider to find\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a vector of plugins offering the requirement or are named after it 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_a3ed261ad8562c423b64cf34cbc086161}{kdb\+::tools\+::\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_abe19487ff2a2e0548288dfa2a5678ae1}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_abe19487ff2a2e0548288dfa2a5678ae1}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!lookupAllProvidesWithStatus@{lookupAllProvidesWithStatus}}
\index{lookupAllProvidesWithStatus@{lookupAllProvidesWithStatus}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{lookupAllProvidesWithStatus()}{lookupAllProvidesWithStatus()}}
{\footnotesize\ttfamily std\+::map$&lt;$ int, \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} $&gt;$ kdb\+::tools\+::\+Modules\+Plugin\+Database\+::lookup\+All\+Provides\+With\+Status (\begin{DoxyParamCaption}\item[{std\+::string const \&amp;}]{provides }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



looks up all plugins which are a suitable provider 

\begin{DoxyNote}{Note}
in case a plugin name is provided, the plugin with the name will also be part of the result. But if there are other plugins providing the requirement, then they will also be part of the result.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em provides} &amp; is the provider to find\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a map of plugins with their status offering the requirement or are named after it 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_aa918b547973f627a5604fa3b2b3faf30}{kdb\+::tools\+::\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_a3f51beee8aecb4371e7d12e98958f875}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_a3f51beee8aecb4371e7d12e98958f875}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!lookupInfo@{lookupInfo}}
\index{lookupInfo@{lookupInfo}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{lookupInfo()}{lookupInfo()}}
{\footnotesize\ttfamily std\+::string kdb\+::tools\+::\+Modules\+Plugin\+Database\+::lookup\+Info (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} const \&amp;}]{whichplugin,  }\item[{std\+::string const \&amp;}]{which }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



lookup contract clauses or dynamic information 


\begin{DoxyParams}{Parameters}
{\em whichplugin} &amp; about which plugin? \\
\hline
{\em which} &amp; about which clause in the contract?\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the clause of the contract 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_ac0af2ec31a98f4176c19eaf34977abbe}{kdb\+::tools\+::\+Plugin\+Database}}.



Reimplemented in \mbox{\hyperlink{classkdb_1_1tools_1_1MockPluginDatabase_ae352c27aa51bc8c2ea8c708d14f6fc76}{kdb\+::tools\+::\+Mock\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_aa7f244f0271ea9b2a3f5b52779167f55}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_aa7f244f0271ea9b2a3f5b52779167f55}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!lookupMetadata@{lookupMetadata}}
\index{lookupMetadata@{lookupMetadata}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{lookupMetadata()}{lookupMetadata()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} kdb\+::tools\+::\+Modules\+Plugin\+Database\+::lookup\+Metadata (\begin{DoxyParamCaption}\item[{std\+::string const \&amp;}]{which }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



lookup which plugin handles metadata 


\begin{DoxyParams}{Parameters}
{\em which} &amp; the metadata of interest\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the best suited plugin specification which provides it 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_a03a416f66d6525f46929e5a68d9db3f7}{kdb\+::tools\+::\+Plugin\+Database}}.

\mbox{\Hypertarget{classkdb_1_1tools_1_1ModulesPluginDatabase_acdb15c10fc34f74687ecbbf8bac526f6}\label{classkdb_1_1tools_1_1ModulesPluginDatabase_acdb15c10fc34f74687ecbbf8bac526f6}} 
\index{kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}!lookupProvides@{lookupProvides}}
\index{lookupProvides@{lookupProvides}!kdb::tools::ModulesPluginDatabase@{kdb::tools::ModulesPluginDatabase}}
\doxysubsubsection{\texorpdfstring{lookupProvides()}{lookupProvides()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} kdb\+::tools\+::\+Modules\+Plugin\+Database\+::lookup\+Provides (\begin{DoxyParamCaption}\item[{std\+::string const \&amp;}]{provides }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}



lookup which plugin is a provider for that plugin 

\begin{DoxyNote}{Note}
will return a \mbox{\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}} with get\+Name() == provides if the string provides actually is a plugin name.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em provides} &amp; is the provider to find\\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Exceptions}
{\em No\+Plugin} &amp; if no plugin that provides the functionality could be found\\
\hline
\end{DoxyExceptions}
\begin{DoxyReturn}{Returns}
the plugin itself or the best suited plugin specification which provides it 
\end{DoxyReturn}


Implements \mbox{\hyperlink{classkdb_1_1tools_1_1PluginDatabase_a43abe56a024218ecee48526ced699f05}{kdb\+::tools\+::\+Plugin\+Database}}.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{plugindatabase_8hpp}{plugindatabase.\+hpp}}\item 
\mbox{\hyperlink{plugindatabase_8cpp}{plugindatabase.\+cpp}}\end{DoxyCompactItemize}
</pre></body></html>