\hypertarget{_plugins_8h}{\section{/opt/ilcsoft/\-H\-E\-A\-D-\/2016-\/12-\/02/\-D\-D4hep/\-H\-E\-A\-D/\-D\-D\-Core/include/\-D\-D4hep/\-Plugins.h File Reference}
\label{_plugins_8h}\index{/opt/ilcsoft/\-H\-E\-A\-D-\/2016-\/12-\/02/\-D\-D4hep/\-H\-E\-A\-D/\-D\-D\-Core/include/\-D\-D4hep/\-Plugins.\-h@{/opt/ilcsoft/\-H\-E\-A\-D-\/2016-\/12-\/02/\-D\-D4hep/\-H\-E\-A\-D/\-D\-D\-Core/include/\-D\-D4hep/\-Plugins.\-h}}
}
{\ttfamily \#include $<$string$>$}\\*
{\ttfamily \#include $<$vector$>$}\\*
{\ttfamily \#include $<$typeinfo$>$}\\*
{\ttfamily \#include \char`\"{}R\-Version.\-h\char`\"{}}\\*
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{class_d_d4hep_1_1_handle}{D\-D4hep\-::\-Handle$<$ T $>$}
\begin{DoxyCompactList}\small\item\em \hyperlink{class_d_d4hep_1_1_handle}{Handle}\-: a templated class like a shared pointer, which allows specialized access to tgeometry objects. \end{DoxyCompactList}\item 
struct \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{D\-D4hep\-::\-Plugin\-Factory\-Base}
\begin{DoxyCompactList}\small\item\em Factory base class implementing some utilities. \end{DoxyCompactList}\item 
struct \hyperlink{struct_d_d4hep_1_1_plugin_debug}{D\-D4hep\-::\-Plugin\-Debug}
\begin{DoxyCompactList}\small\item\em Helper to debug plugin manager calls. \end{DoxyCompactList}\item 
class \hyperlink{class_d_d4hep_1_1_plugin_service}{D\-D4hep\-::\-Plugin\-Service}
\begin{DoxyCompactList}\small\item\em Factory template for the plugin mechanism. \end{DoxyCompactList}\item 
struct \hyperlink{struct_d_d4hep_1_1_plugin_service_1_1_func_pointer}{D\-D4hep\-::\-Plugin\-Service\-::\-Func\-Pointer$<$ F\-U\-N\-C\-T\-I\-O\-N $>$}
\item 
class \hyperlink{class_d_d4hep_1_1_plugin_registry}{D\-D4hep\-::\-Plugin\-Registry$<$ S\-I\-G\-N\-A\-T\-U\-R\-E $>$}
\begin{DoxyCompactList}\small\item\em Factory template for the plugin mechanism. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
\hyperlink{namespace_d_d4hep}{D\-D4hep}
\begin{DoxyCompactList}\small\item\em Namespace for the A\-I\-D\-A detector description toolkit. \end{DoxyCompactList}\item 
\hyperlink{namespace_d_d4hep_1_1_geometry}{D\-D4hep\-::\-Geometry}
\begin{DoxyCompactList}\small\item\em Namespace for the geometry part of the A\-I\-D\-A detector description toolkit. \end{DoxyCompactList}\item 
\hyperlink{namespace_d_d4hep_1_1_x_m_l}{D\-D4hep\-::\-X\-M\-L}
\begin{DoxyCompactList}\small\item\em Namespace containing utilities to parse \hyperlink{namespace_d_d4hep_1_1_x_m_l}{X\-M\-L} files using Xerces\-C or Tiny\-X\-M\-L. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{_plugins_8h_a7d32b09c0ee0a49529f7ac33740206bc}{D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L}(type, name, signature)~\hyperlink{class_d_d4hep_1_1_plugin_registry}{D\-D4hep\-::\-Plugin\-Registry}$<$signature$>$\-::add(name,Factory$<$type,signature$>$\-::call)
\item 
\#define \hyperlink{_plugins_8h_a3b3cf4cafcbb2dcc5311a448259a3b6a}{D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y}(X, Y)
\item 
\#define \hyperlink{_plugins_8h_a7555036476e7a8ad530e7a9c32716f96}{D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N}(ns, name)~namespace ns \{ namespace \{ struct name \{\}; \} \} namespace D\-D4hep
\item 
\#define \hyperlink{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E}(name, serial)~name\#\#\-\_\-dict\-\_\-\#\#serial
\item 
\#define \hyperlink{_plugins_8h_a13a8db65f6501989dba7d2e8fde940c2}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y}(type, name, signature, serial)
\item 
\#define \hyperlink{_plugins_8h_a050ee0294195810965e225fd9175a79d}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0}(R)
\item 
\#define \hyperlink{_plugins_8h_a34c96bd1d17c05e955300dfb90143f8c}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1}(R, A0)
\item 
\#define \hyperlink{_plugins_8h_ae0c6e2852415260fafd218490ed2c402}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2}(R, A0, A1)
\item 
\#define \hyperlink{_plugins_8h_aba8957753d44a8b5460500676b9b8725}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3}(R, A0, A1, A2)
\item 
\#define \hyperlink{_plugins_8h_a409f34fa4c9ce0444c5ae761edb1d2ab}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4}(R, A0, A1, A2, A3)
\item 
\#define \hyperlink{_plugins_8h_a4dfa4ce7e0eecaf92188443a5a4983de}{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5}(R, A0, A1, A2, A3, A4)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$$>$ }\\std\-::string \hyperlink{namespace_d_d4hep_ae6577ad7f48957537cd87301f06b226e}{D\-D4hep\-::\-Plugin\-Factory\-Base\-::value$<$ std\-::string $>$} (const void $\ast$p)
\item 
{\footnotesize template$<$$>$ }\\const std\-::string \& \hyperlink{namespace_d_d4hep_a208fdb2a6bbc3cd955bd99f7a33966d6}{D\-D4hep\-::\-Plugin\-Factory\-Base\-::value$<$ const std\-::string \& $>$} (const void $\ast$p)
\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\hypertarget{_plugins_8h_a7d32b09c0ee0a49529f7ac33740206bc}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L@{D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L}}
\index{D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L@{D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-C\-A\-L\-L(
\begin{DoxyParamCaption}
\item[{}]{type, }
\item[{}]{name, }
\item[{}]{signature}
\end{DoxyParamCaption}
)~{\bf D\-D4hep\-::\-Plugin\-Registry}$<$signature$>$\-::add(name,Factory$<$type,signature$>$\-::call)}}\label{_plugins_8h_a7d32b09c0ee0a49529f7ac33740206bc}


Definition at line 172 of file Plugins.\-h.

\hypertarget{_plugins_8h_a3b3cf4cafcbb2dcc5311a448259a3b6a}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y@{D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y}}
\index{D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y@{D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-I\-M\-P\-L\-E\-M\-E\-N\-T\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-R\-E\-G\-I\-S\-T\-R\-Y(
\begin{DoxyParamCaption}
\item[{}]{X, }
\item[{}]{Y}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a3b3cf4cafcbb2dcc5311a448259a3b6a}


Definition at line 173 of file Plugins.\-h.

\hypertarget{_plugins_8h_a7555036476e7a8ad530e7a9c32716f96}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N@{D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N}}
\index{D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N@{D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-O\-P\-E\-N\-\_\-\-P\-L\-U\-G\-I\-N(
\begin{DoxyParamCaption}
\item[{}]{ns, }
\item[{}]{name}
\end{DoxyParamCaption}
)~namespace ns \{ namespace \{ struct name \{\}; \} \} namespace D\-D4hep}}\label{_plugins_8h_a7555036476e7a8ad530e7a9c32716f96}


Definition at line 176 of file Plugins.\-h.

\hypertarget{_plugins_8h_a050ee0294195810965e225fd9175a79d}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-0(
\begin{DoxyParamCaption}
\item[{}]{R}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a050ee0294195810965e225fd9175a79d}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R()>                           \(\backslash\)
    : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase} \{                                \(\backslash\)
  public:                                                               \(\backslash\)
    static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& ,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
      *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call();                                     \(\backslash\)
    \}                                                                   \(\backslash\)
    static R call();                                                    \(\backslash\)
  \};                                                                    \(\backslash\)
  template <typename P> \textcolor{keyword}{inline} R Factory<P,R()>::call()
\end{DoxyCode}


Definition at line 186 of file Plugins.\-h.

\hypertarget{_plugins_8h_a34c96bd1d17c05e955300dfb90143f8c}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-1(
\begin{DoxyParamCaption}
\item[{}]{R, }
\item[{}]{A0}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a34c96bd1d17c05e955300dfb90143f8c}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R(A0)>                         \(\backslash\)
    : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase}  \{                               \(\backslash\)
  public:                                                               \(\backslash\)
    static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& a,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
      *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call(value<A0>(a[0]));                      \(\backslash\)
    \}                                                                   \(\backslash\)
    static R call(A0 a0);                                               \(\backslash\)
  \};                                                                    \(\backslash\)
  template <typename P> \textcolor{keyword}{inline} R Factory<P,R(A0)>::call(A0 a0)
\end{DoxyCode}


Definition at line 197 of file Plugins.\-h.

\hypertarget{_plugins_8h_ae0c6e2852415260fafd218490ed2c402}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-2(
\begin{DoxyParamCaption}
\item[{}]{R, }
\item[{}]{A0, }
\item[{}]{A1}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_ae0c6e2852415260fafd218490ed2c402}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R(A0,A1)>                      \(\backslash\)
    : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase}  \{                               \(\backslash\)
  public:                                                               \(\backslash\)
    static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& a,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
      *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call(value<A0>(a[0]),value<A1>(a[1]));      \(\backslash\)
    \}                                                                   \(\backslash\)
    static R call(A0 a0,A1 a1);                                         \(\backslash\)
  \};                                                                    \(\backslash\)
  template <typename P> \textcolor{keyword}{inline} R Factory<P,R(A0,A1)>::call(A0 a0, A1 a1)
\end{DoxyCode}


Definition at line 208 of file Plugins.\-h.

\hypertarget{_plugins_8h_aba8957753d44a8b5460500676b9b8725}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-3(
\begin{DoxyParamCaption}
\item[{}]{R, }
\item[{}]{A0, }
\item[{}]{A1, }
\item[{}]{A2}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_aba8957753d44a8b5460500676b9b8725}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R(A0,A1,A2)>                 \(\backslash\)
      : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase}  \{                             \(\backslash\)
    public:                                                             \(\backslash\)
      static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& a,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
        *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2])); \(\backslash\)
      \}                                                                 \(\backslash\)
      static R call(A0 a0,A1 a1,A2 a2);                                 \(\backslash\)
    \};                                                                  \(\backslash\)
    template <typename P> \textcolor{keyword}{inline} R Factory<P,R(A0,A1,A2)>::call(A0 a0, A1 a1, A2 a2)
\end{DoxyCode}


Definition at line 219 of file Plugins.\-h.

\hypertarget{_plugins_8h_a409f34fa4c9ce0444c5ae761edb1d2ab}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-4(
\begin{DoxyParamCaption}
\item[{}]{R, }
\item[{}]{A0, }
\item[{}]{A1, }
\item[{}]{A2, }
\item[{}]{A3}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a409f34fa4c9ce0444c5ae761edb1d2ab}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R(A0,A1,A2,A3)>              \(\backslash\)
      : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase}  \{                             \(\backslash\)
    public:                                                             \(\backslash\)
      static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& a,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
        *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2]),value<A3>(a[3])); \(\backslash\)
      \}                                                                 \(\backslash\)
      static R call(A0 a0,A1 a1,A2 a2, A3 a3);                          \(\backslash\)
    \};                                                                  \(\backslash\)
    template <typename P> \textcolor{keyword}{inline} R Factory<P,R(A0,A1,A2,A3)>::call(A0 a0, A1 a1, A2 a2, A3 a3)
\end{DoxyCode}


Definition at line 230 of file Plugins.\-h.

\hypertarget{_plugins_8h_a4dfa4ce7e0eecaf92188443a5a4983de}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-\_\-\-F\-A\-C\-T\-O\-R\-Y\-\_\-\-A\-R\-G\-S\-\_\-5(
\begin{DoxyParamCaption}
\item[{}]{R, }
\item[{}]{A0, }
\item[{}]{A1, }
\item[{}]{A2, }
\item[{}]{A3, }
\item[{}]{A4}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a4dfa4ce7e0eecaf92188443a5a4983de}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{template} <\textcolor{keyword}{typename} P> \textcolor{keyword}{class }Factory<P, R(A0,A1,A2,A3,A4)>           \(\backslash\)
      : \textcolor{keyword}{public} \hyperlink{struct_d_d4hep_1_1_plugin_factory_base}{DD4hep::PluginFactoryBase}  \{                             \(\backslash\)
    public:                                                             \(\backslash\)
      static \textcolor{keywordtype}{void} wrapper(\textcolor{keywordtype}{void} *ret,\textcolor{keywordtype}{void}*,\textcolor{keyword}{const} std::vector<void*>& a,\textcolor{keywordtype}{void}*) \{ \(\backslash\)
        *(\textcolor{keywordtype}{void}**)ret = (\textcolor{keywordtype}{void}*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2]),value<A3>(a[3]),
      value<A4>(a[4])); \(\backslash\)
      \}                                                                 \(\backslash\)
      static R call(A0 a0,A1 a1,A2 a2, A3 a3, A4 a4);                   \(\backslash\)
    \};                                                                  \(\backslash\)
    template <typename P> \textcolor{keyword}{inline} R Factory<P,R(A0,A1,A2,A3,A4)>::call(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)
\end{DoxyCode}


Definition at line 241 of file Plugins.\-h.

\hypertarget{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-C\-N\-A\-M\-E(
\begin{DoxyParamCaption}
\item[{}]{name, }
\item[{}]{serial}
\end{DoxyParamCaption}
)~name\#\#\-\_\-dict\-\_\-\#\#serial}}\label{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}


Definition at line 177 of file Plugins.\-h.

\hypertarget{_plugins_8h_a13a8db65f6501989dba7d2e8fde940c2}{\index{Plugins.\-h@{Plugins.\-h}!D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y}}
\index{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y@{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y}!Plugins.h@{Plugins.\-h}}
\subsubsection[{D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-D4\-H\-E\-P\-\_\-\-P\-L\-U\-G\-I\-N\-S\-V\-C\-\_\-\-F\-A\-C\-T\-O\-R\-Y(
\begin{DoxyParamCaption}
\item[{}]{type, }
\item[{}]{name, }
\item[{}]{signature, }
\item[{}]{serial}
\end{DoxyParamCaption}
)}}\label{_plugins_8h_a13a8db65f6501989dba7d2e8fde940c2}
{\bfseries Value\-:}
\begin{DoxyCode}
\textcolor{keyword}{namespace }\{                                                           \(\backslash\)
    struct \hyperlink{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{DD4HEP\_PLUGINSVC\_CNAME}(\_\_typeFactory\_\_,serial)  \{            
      \hyperlink{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{\(\backslash\)}
\hyperlink{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{      DD4HEP\_PLUGINSVC\_CNAME}(\_\_typeFactory\_\_,serial)()  \{ 
      \hyperlink{_plugins_8h_a7d32b09c0ee0a49529f7ac33740206bc}{DD4HEP\_FACTORY\_CALL}(type,#name,signature); \} \(\backslash\)
    \} \hyperlink{_plugins_8h_a0f5362e7d8f5e58dac5709185307c9c5}{DD4HEP\_PLUGINSVC\_CNAME}(s\_\_\_\_typeFactory\_\_,serial);                \(\backslash\)
  \}
\end{DoxyCode}


Definition at line 178 of file Plugins.\-h.

