\hypertarget{namespacekdb_1_1tools}{\section{kdb\+:\+:tools Namespace Reference}
\label{namespacekdb_1_1tools}\index{kdb\+::tools@{kdb\+::tools}}
}


This namespace is for the libtool library.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classkdb_1_1tools_1_1Backend}{Backend}
\begin{DoxyCompactList}\small\item\em A low-\/level representation of the backend (= set of plugins) that can be mounted. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1BackendBuilder}{Backend\+Builder}
\begin{DoxyCompactList}\small\item\em Highlevel interface to build a backend. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1BackendBuilderInit}{Backend\+Builder\+Init}
\begin{DoxyCompactList}\small\item\em Used as argument of constructor of $\ast$\+Backend\+Builder. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1BackendFactory}{Backend\+Factory}
\begin{DoxyCompactList}\small\item\em Factory for \hyperlink{classkdb_1_1tools_1_1MountBackendInterface}{Mount\+Backend\+Interface}. \end{DoxyCompactList}\item 
struct \hyperlink{structkdb_1_1tools_1_1BackendInfo}{Backend\+Info}
\begin{DoxyCompactList}\small\item\em Info about a backend. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1BackendInterface}{Backend\+Interface}
\begin{DoxyCompactList}\small\item\em Minimal interface to add plugins. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1Backends}{Backends}
\begin{DoxyCompactList}\small\item\em Allows one to list backends. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1ErrorPlugins}{Error\+Plugins}
\begin{DoxyCompactList}\small\item\em \hyperlink{classkdb_1_1tools_1_1Plugins}{Plugins} to handle errors during configuration access. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1GetPlugins}{Get\+Plugins}
\begin{DoxyCompactList}\small\item\em \hyperlink{classkdb_1_1tools_1_1Plugins}{Plugins} to get configuration. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1GlobalPlugins}{Global\+Plugins}
\begin{DoxyCompactList}\small\item\em Low level representation of global plugins. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1GlobalPluginsBuilder}{Global\+Plugins\+Builder}
\begin{DoxyCompactList}\small\item\em Build global plugins. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1ImportExportBackend}{Import\+Export\+Backend}
\begin{DoxyCompactList}\small\item\em \hyperlink{classkdb_1_1tools_1_1Backend}{Backend} for import/export functionality. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1MockPluginDatabase}{Mock\+Plugin\+Database}
\begin{DoxyCompactList}\small\item\em A plugin database that works with added fake data. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1Modules}{Modules}
\begin{DoxyCompactList}\small\item\em Allows one to load plugins. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1ModulesPluginDatabase}{Modules\+Plugin\+Database}
\begin{DoxyCompactList}\small\item\em A plugin database that works with installed modules. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1MountBackendBuilder}{Mount\+Backend\+Builder}
\begin{DoxyCompactList}\small\item\em High-\/level functionality to build a mountpoint. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1MountBackendInterface}{Mount\+Backend\+Interface}
\begin{DoxyCompactList}\small\item\em Interface to work with mountpoints (backends) for factory. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1Plugin}{Plugin}
\begin{DoxyCompactList}\small\item\em This is a C++ representation of a plugin. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1PluginAdder}{Plugin\+Adder}
\begin{DoxyCompactList}\small\item\em Adds plugins in a generic map. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1PluginDatabase}{Plugin\+Database}
\begin{DoxyCompactList}\small\item\em Loads all plugins and allows us to query them. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1Plugins}{Plugins}
\begin{DoxyCompactList}\small\item\em A collection of plugins (either get, set or error) \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec}
\begin{DoxyCompactList}\small\item\em Specifies a plugin by its name and configuration. \end{DoxyCompactList}\item 
struct \hyperlink{structkdb_1_1tools_1_1PluginSpecHash}{Plugin\+Spec\+Hash}
\begin{DoxyCompactList}\small\item\em Only to be used with Plugin\+Spec\+Name! \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1SerializeInterface}{Serialize\+Interface}
\begin{DoxyCompactList}\small\item\em Interface to serialize a backend. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1SetPlugins}{Set\+Plugins}
\begin{DoxyCompactList}\small\item\em \hyperlink{classkdb_1_1tools_1_1Plugins}{Plugins} to set configuration. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1SpecBackendBuilder}{Spec\+Backend\+Builder}
\begin{DoxyCompactList}\small\item\em Build individual backend while reading specification. \end{DoxyCompactList}\item 
class \hyperlink{classkdb_1_1tools_1_1SpecReader}{Spec\+Reader}
\begin{DoxyCompactList}\small\item\em Highlevel interface to build a backend from specification. \end{DoxyCompactList}\item 
struct \hyperlink{structkdb_1_1tools_1_1ToolException}{Tool\+Exception}
\begin{DoxyCompactList}\small\item\em All exceptions from the elektratools library are derived from this exception. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
std\+::ostream \& \hyperlink{namespacekdb_1_1tools_a10b59213ee542e33c7ecc481d4476a79}{operator$<$$<$} (std\+::ostream \&os, \hyperlink{classkdb_1_1tools_1_1Backend}{Backend} const \&b)
\begin{DoxyCompactList}\small\item\em Prints the current status. \end{DoxyCompactList}\item 
\hyperlink{classkdb_1_1KeySet}{kdb\+::\+Key\+Set} \hyperlink{namespacekdb_1_1tools_ad4fdf9477ede38a219b02a7442965f6d}{parse\+Plugin\+Arguments} (std\+::string const \&plugin\+Arguments, std\+::string const \&basepath)
\begin{DoxyCompactList}\small\item\em Parse a string containing information to create a \hyperlink{classkdb_1_1KeySet}{Key\+Set}. \end{DoxyCompactList}\item 
Plugin\+Spec\+Vector \hyperlink{namespacekdb_1_1tools_a3c08f8fdabc7002ff497b247cba6bb21}{parse\+Arguments} (std\+::string const \&cmdline)
\begin{DoxyCompactList}\small\item\em Parse a complete commandline. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Iterator $>$ }\\Plugin\+Spec\+Vector \hyperlink{namespacekdb_1_1tools_ab7ffe14ed9cab32c07ddb55a8a65973a}{parse\+Arguments} (Iterator first, Iterator last)
\begin{DoxyCompactList}\small\item\em Parse a complete commandline that is already tokenized in pluginname pluginconfig. \end{DoxyCompactList}\item 
\hypertarget{namespacekdb_1_1tools_a7a731fb15351e62222ae8763ca6aa876}{std\+::ostream \& \hyperlink{namespacekdb_1_1tools_a7a731fb15351e62222ae8763ca6aa876}{operator$<$$<$} (std\+::ostream \&os, \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&spec)}\label{namespacekdb_1_1tools_a7a731fb15351e62222ae8763ca6aa876}

\begin{DoxyCompactList}\small\item\em Output the name, refname and size of config. \end{DoxyCompactList}\item 
bool \hyperlink{namespacekdb_1_1tools_a6f0740b75d32bfea4ef285e18b9a52f4}{operator==} (\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&self, \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&other)
\begin{DoxyCompactList}\small\item\em Compare two pluginspec if their value is equal. \end{DoxyCompactList}\item 
bool \hyperlink{namespacekdb_1_1tools_a3a09f4414aa2fe068879665d6285093e}{operator!=} (\hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&self, \hyperlink{classkdb_1_1tools_1_1PluginSpec}{Plugin\+Spec} const \&other)
\begin{DoxyCompactList}\small\item\em Compare two pluginspec if their value is not equal. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This namespace is for the libtool library. 

\begin{DoxyNote}{Note}
You have to link against libelektratools if you want to use functionality from it. Contrary to classes in namespace kdb it is not header-\/only.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{classkdb_1_1tools_1_1Backend}{Backend} for an entry point 
\end{DoxySeeAlso}


\subsection{Function Documentation}
\hypertarget{namespacekdb_1_1tools_a3a09f4414aa2fe068879665d6285093e}{\index{kdb\+::tools@{kdb\+::tools}!operator"!=@{operator"!=}}
\index{operator"!=@{operator"!=}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{operator"!=}]{\setlength{\rightskip}{0pt plus 5cm}bool kdb\+::tools\+::operator!= (
\begin{DoxyParamCaption}
\item[{Plugin\+Spec const \&}]{self, }
\item[{Plugin\+Spec const \&}]{other}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_a3a09f4414aa2fe068879665d6285093e}


Compare two pluginspec if their value is not equal. 

\begin{DoxyNote}{Note}
the content of get\+Config() will be only compared with keynames, not content! 
\end{DoxyNote}
\hypertarget{namespacekdb_1_1tools_a10b59213ee542e33c7ecc481d4476a79}{\index{kdb\+::tools@{kdb\+::tools}!operator$<$$<$@{operator$<$$<$}}
\index{operator$<$$<$@{operator$<$$<$}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{operator$<$$<$}]{\setlength{\rightskip}{0pt plus 5cm}std\+::ostream \& kdb\+::tools\+::operator$<$$<$ (
\begin{DoxyParamCaption}
\item[{std\+::ostream \&}]{os, }
\item[{Backend const \&}]{b}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_a10b59213ee542e33c7ecc481d4476a79}


Prints the current status. 


\begin{DoxyParams}{Parameters}
{\em os} & stream to print to \\
\hline
{\em b} & backend to get status from\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
ref to stream 
\end{DoxyReturn}
\hypertarget{namespacekdb_1_1tools_a6f0740b75d32bfea4ef285e18b9a52f4}{\index{kdb\+::tools@{kdb\+::tools}!operator==@{operator==}}
\index{operator==@{operator==}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{operator==}]{\setlength{\rightskip}{0pt plus 5cm}bool kdb\+::tools\+::operator== (
\begin{DoxyParamCaption}
\item[{Plugin\+Spec const \&}]{self, }
\item[{Plugin\+Spec const \&}]{other}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_a6f0740b75d32bfea4ef285e18b9a52f4}


Compare two pluginspec if their value is equal. 

\begin{DoxyNote}{Note}
the content of get\+Config() will be only compared with keynames, not content! 
\end{DoxyNote}
\hypertarget{namespacekdb_1_1tools_a3c08f8fdabc7002ff497b247cba6bb21}{\index{kdb\+::tools@{kdb\+::tools}!parse\+Arguments@{parse\+Arguments}}
\index{parse\+Arguments@{parse\+Arguments}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{parse\+Arguments}]{\setlength{\rightskip}{0pt plus 5cm}Plugin\+Spec\+Vector kdb\+::tools\+::parse\+Arguments (
\begin{DoxyParamCaption}
\item[{std\+::string const \&}]{cmdline}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_a3c08f8fdabc7002ff497b247cba6bb21}


Parse a complete commandline. 


\begin{DoxyParams}{Parameters}
{\em cmdline} & contains space separated plugins with optional plugin configurations\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
currently whitespaces are not allowed within pluginname or config, use iterator interface \hyperlink{namespacekdb_1_1tools_a3c08f8fdabc7002ff497b247cba6bb21}{parse\+Arguments()} if you need it.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{namespacekdb_1_1tools_a3c08f8fdabc7002ff497b247cba6bb21}{parse\+Arguments()} 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
a parsed Plugin\+Spec\+Vector 
\end{DoxyReturn}
\hypertarget{namespacekdb_1_1tools_ab7ffe14ed9cab32c07ddb55a8a65973a}{\index{kdb\+::tools@{kdb\+::tools}!parse\+Arguments@{parse\+Arguments}}
\index{parse\+Arguments@{parse\+Arguments}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{parse\+Arguments}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename Iterator $>$ Plugin\+Spec\+Vector kdb\+::tools\+::parse\+Arguments (
\begin{DoxyParamCaption}
\item[{Iterator}]{first, }
\item[{Iterator}]{last}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_ab7ffe14ed9cab32c07ddb55a8a65973a}


Parse a complete commandline that is already tokenized in pluginname pluginconfig. 


\begin{DoxyTemplParams}{Template Parameters}
{\em Iterator} & forward iterator type\\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em cmdline} & contains space separated plugins with optional plugin configurations\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a parsed Plugin\+Spec\+Vector 
\end{DoxyReturn}
\hypertarget{namespacekdb_1_1tools_ad4fdf9477ede38a219b02a7442965f6d}{\index{kdb\+::tools@{kdb\+::tools}!parse\+Plugin\+Arguments@{parse\+Plugin\+Arguments}}
\index{parse\+Plugin\+Arguments@{parse\+Plugin\+Arguments}!kdb\+::tools@{kdb\+::tools}}
\subsubsection[{parse\+Plugin\+Arguments}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Key\+Set} kdb\+::tools\+::parse\+Plugin\+Arguments (
\begin{DoxyParamCaption}
\item[{std\+::string const \&}]{plugin\+Arguments, }
\item[{std\+::string const \&}]{basepath}
\end{DoxyParamCaption}
)}}\label{namespacekdb_1_1tools_ad4fdf9477ede38a219b02a7442965f6d}


Parse a string containing information to create a \hyperlink{classkdb_1_1KeySet}{Key\+Set}. 


\begin{DoxyParams}{Parameters}
{\em plugin\+Arguments} & comma (,) to separate key=value, contains no whitespaces\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly created keyset with the information found in the string 
\end{DoxyReturn}
