\hypertarget{classkdb_1_1tools_1_1PluginDatabase}{\section{kdb\+:\+:tools\+:\+:Plugin\+Database Class Reference}
\label{classkdb_1_1tools_1_1PluginDatabase}\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
}


Loads all plugins and allows us to query them.  




{\ttfamily \#include $<$plugindatabase.\+hpp$>$}



Inheritance diagram for kdb\+:\+:tools\+:\+:Plugin\+Database\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=244pt]{classkdb_1_1tools_1_1PluginDatabase__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601}{Status} \{ \hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}, 
\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a2b7279a50ed80231a60b0435340c31a8}{real}, 
\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601ae789aaff1847ebb77eecb027c5ee0401}{missing}
 \}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual std\+::vector$<$ std\+::string $>$ \hyperlink{classkdb_1_1tools_1_1PluginDatabase_adc1f43ccefdd7fc15a57db7571420642}{list\+All\+Plugins} () const =0
\begin{DoxyCompactList}\small\item\em list all plugins \end{DoxyCompactList}\item 
virtual std\+::string \hyperlink{classkdb_1_1tools_1_1PluginDatabase_ac0af2ec31a98f4176c19eaf34977abbe}{lookup\+Info} (\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&whichplugin, std\+::string const \&which) const =0
\begin{DoxyCompactList}\small\item\em lookup contract clauses or dynamic information \end{DoxyCompactList}\item 
virtual \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} \hyperlink{classkdb_1_1tools_1_1PluginDatabase_a03a416f66d6525f46929e5a68d9db3f7}{lookup\+Metadata} (std\+::string const \&which) const =0
\begin{DoxyCompactList}\small\item\em lookup which plugin handles meta data \end{DoxyCompactList}\item 
virtual \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} \hyperlink{classkdb_1_1tools_1_1PluginDatabase_a43abe56a024218ecee48526ced699f05}{lookup\+Provides} (std\+::string const \&\hyperlink{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}) const =0
\begin{DoxyCompactList}\small\item\em lookup which plugin is a provider for that plugin \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static int \hyperlink{classkdb_1_1tools_1_1PluginDatabase_ab901b98a6c7661bbccffa8ab9ff62dc6}{calculate\+Status} (std\+::string status\+String)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Loads all plugins and allows us to query them. 

\subsection{Member Enumeration Documentation}
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!Status@{Status}}
\index{Status@{Status}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{Status}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf kdb\+::tools\+::\+Plugin\+Database\+::\+Status}}}\label{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601}
\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{provides@{provides}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!provides@{provides}}\item[{\em 
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}{provides}\label{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a73ff10d6a07213c277db4326b3df6c4b}
}]does not directly, but can be loaded via provides \index{real@{real}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!real@{real}}\item[{\em 
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a2b7279a50ed80231a60b0435340c31a8}{real}\label{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601a2b7279a50ed80231a60b0435340c31a8}
}]exists and working as given \index{missing@{missing}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!missing@{missing}}\item[{\em 
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601ae789aaff1847ebb77eecb027c5ee0401}{missing}\label{classkdb_1_1tools_1_1PluginDatabase_afc91ff760616ee83c6afb70e5a2f0601ae789aaff1847ebb77eecb027c5ee0401}
}]does not exist or cannot be loaded \end{description}
\end{Desc}


\subsection{Member Function Documentation}
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_ab901b98a6c7661bbccffa8ab9ff62dc6}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!calculate\+Status@{calculate\+Status}}
\index{calculate\+Status@{calculate\+Status}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{calculate\+Status}]{\setlength{\rightskip}{0pt plus 5cm}int kdb\+::tools\+::\+Plugin\+Database\+::calculate\+Status (
\begin{DoxyParamCaption}
\item[{std\+::string}]{status\+String}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classkdb_1_1tools_1_1PluginDatabase_ab901b98a6c7661bbccffa8ab9ff62dc6}

\begin{DoxyParams}{Parameters}
{\em status\+String} & the string encoding the status\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The representing number for a given status. 
\end{DoxyReturn}
\hypertarget{classkdb_1_1tools_1_1PluginDatabase_adc1f43ccefdd7fc15a57db7571420642}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!list\+All\+Plugins@{list\+All\+Plugins}}
\index{list\+All\+Plugins@{list\+All\+Plugins}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{list\+All\+Plugins}]{\setlength{\rightskip}{0pt plus 5cm}virtual std\+::vector$<$std\+::string$>$ kdb\+::tools\+::\+Plugin\+Database\+::list\+All\+Plugins (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classkdb_1_1tools_1_1PluginDatabase_adc1f43ccefdd7fc15a57db7571420642}


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}


Implemented in \hyperlink{classkdb_1_1tools_1_1MockPluginDatabase_afb3aef79c6e8447f2555dae303ce1893}{kdb\+::tools\+::\+Mock\+Plugin\+Database}, and \hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a0aa3ca734a18da8f3818e0278697eaef}{kdb\+::tools\+::\+Modules\+Plugin\+Database}.

\hypertarget{classkdb_1_1tools_1_1PluginDatabase_ac0af2ec31a98f4176c19eaf34977abbe}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!lookup\+Info@{lookup\+Info}}
\index{lookup\+Info@{lookup\+Info}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{lookup\+Info}]{\setlength{\rightskip}{0pt plus 5cm}virtual std\+::string kdb\+::tools\+::\+Plugin\+Database\+::lookup\+Info (
\begin{DoxyParamCaption}
\item[{{\bf Plugin\+Spec} const \&}]{whichplugin, }
\item[{std\+::string const \&}]{which}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classkdb_1_1tools_1_1PluginDatabase_ac0af2ec31a98f4176c19eaf34977abbe}


lookup contract clauses or dynamic information 


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


Implemented in \hyperlink{classkdb_1_1tools_1_1MockPluginDatabase_af1e8fa2f1ff8a1c5ac7005dd65101e93}{kdb\+::tools\+::\+Mock\+Plugin\+Database}, and \hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a3d06a4b33e4bcc879dd6f562a8876390}{kdb\+::tools\+::\+Modules\+Plugin\+Database}.

\hypertarget{classkdb_1_1tools_1_1PluginDatabase_a03a416f66d6525f46929e5a68d9db3f7}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!lookup\+Metadata@{lookup\+Metadata}}
\index{lookup\+Metadata@{lookup\+Metadata}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{lookup\+Metadata}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf Plugin\+Spec} kdb\+::tools\+::\+Plugin\+Database\+::lookup\+Metadata (
\begin{DoxyParamCaption}
\item[{std\+::string const \&}]{which}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classkdb_1_1tools_1_1PluginDatabase_a03a416f66d6525f46929e5a68d9db3f7}


lookup which plugin handles meta data 


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


Implemented in \hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a7a7ccedd922ce214c61495e7a3ec26b9}{kdb\+::tools\+::\+Modules\+Plugin\+Database}.

\hypertarget{classkdb_1_1tools_1_1PluginDatabase_a43abe56a024218ecee48526ced699f05}{\index{kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}!lookup\+Provides@{lookup\+Provides}}
\index{lookup\+Provides@{lookup\+Provides}!kdb\+::tools\+::\+Plugin\+Database@{kdb\+::tools\+::\+Plugin\+Database}}
\subsubsection[{lookup\+Provides}]{\setlength{\rightskip}{0pt plus 5cm}virtual {\bf Plugin\+Spec} kdb\+::tools\+::\+Plugin\+Database\+::lookup\+Provides (
\begin{DoxyParamCaption}
\item[{std\+::string const \&}]{provides}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{classkdb_1_1tools_1_1PluginDatabase_a43abe56a024218ecee48526ced699f05}


lookup which plugin is a provider for that plugin 

\begin{DoxyNote}{Note}
will return a \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} & is the provider to find\\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Exceptions}
{\em No\+Plugin} & 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}


Implemented in \hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase_a24007d69527e5139c2dbb2004bf7a8d0}{kdb\+::tools\+::\+Modules\+Plugin\+Database}.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{plugindatabase_8hpp}{plugindatabase.\+hpp}\item 
\hyperlink{plugindatabase_8cpp}{plugindatabase.\+cpp}\end{DoxyCompactItemize}
