DD4hep  1.28.0
Detector Description Toolkit for High Energy Physics
Classes | Namespaces | Macros | Functions
Plugins.h File Reference
#include <DD4hep/config.h>
#include <string>
#include <vector>
#include <typeinfo>
#include <boost/any.hpp>
#include <RVersion.h>

Go to the source code of this file.

Classes

class  dd4hep::Handle< T >
 Handle: a templated class like a shared pointer, which allows specialized access to tgeometry objects. More...
 
struct  dd4hep::PluginFactoryBase
 Factory base class implementing some utilities. More...
 
struct  dd4hep::PluginDebug
 Helper to debug plugin manager calls. More...
 
class  dd4hep::PluginService
 Factory template for the plugin mechanism. More...
 
class  dd4hep::PluginRegistry< DD4HEP_SIGNATURE >
 Factory template for the plugin mechanism. More...
 

Namespaces

 std
 
 dd4hep
 Namespace for the AIDA detector description toolkit.
 

Macros

#define DD4HEP_FACTORY_CALL(type, name, signature)   dd4hep::PluginRegistry<signature>::add(name,Factory<type,signature>::call)
 
#define DD4HEP_IMPLEMENT_PLUGIN_REGISTRY(X, Y)
 
#define DD4HEP_OPEN_PLUGIN(ns, name)   namespace ns { namespace { struct name {}; } } namespace dd4hep
 
#define DD4HEP_PLUGINSVC_CNAME(name, serial)   name##_dict_##serial
 
#define DD4HEP_PLUGINSVC_FACTORY(type, name, signature, serial)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_0(R)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_1(R, A0)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_2(R, A0, A1)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_3(R, A0, A1, A2)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_4(R, A0, A1, A2, A3)
 
#define DD4HEP_PLUGIN_FACTORY_ARGS_5(R, A0, A1, A2, A3, A4)
 

Functions

bool std::any_has_value (std::any a)
 
template<>
std::string dd4hep::PluginFactoryBase::value< std::string > (const void *_p)
 
template<>
const std::string & dd4hep::PluginFactoryBase::value< const std::string & > (const void *_p)
 

Macro Definition Documentation

◆ DD4HEP_FACTORY_CALL

#define DD4HEP_FACTORY_CALL (   type,
  name,
  signature 
)    dd4hep::PluginRegistry<signature>::add(name,Factory<type,signature>::call)

Definition at line 146 of file Plugins.h.

◆ DD4HEP_IMPLEMENT_PLUGIN_REGISTRY

#define DD4HEP_IMPLEMENT_PLUGIN_REGISTRY (   X,
 
)

Definition at line 147 of file Plugins.h.

◆ DD4HEP_OPEN_PLUGIN

#define DD4HEP_OPEN_PLUGIN (   ns,
  name 
)    namespace ns { namespace { struct name {}; } } namespace dd4hep

Definition at line 149 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_0

#define DD4HEP_PLUGIN_FACTORY_ARGS_0 (   R)
Value:
template <typename P> class Factory<P, R()> \
public: \
static R call(); \
}; \
template <typename P> inline R Factory<P,R()>::call()

Definition at line 161 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_1

#define DD4HEP_PLUGIN_FACTORY_ARGS_1 (   R,
  A0 
)
Value:
template <typename P> class Factory<P, R(A0)> \
public: \
static R call(A0 a0); \
}; \
template <typename P> inline R Factory<P,R(A0)>::call(A0 a0)

Definition at line 169 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_2

#define DD4HEP_PLUGIN_FACTORY_ARGS_2 (   R,
  A0,
  A1 
)
Value:
template <typename P> class Factory<P, R(A0,A1)> \
public: \
static R call(A0 a0,A1 a1); \
}; \
template <typename P> inline R Factory<P,R(A0,A1)>::call(A0 a0, A1 a1)

Definition at line 177 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_3

#define DD4HEP_PLUGIN_FACTORY_ARGS_3 (   R,
  A0,
  A1,
  A2 
)
Value:
template <typename P> class Factory<P, R(A0,A1,A2)> \
public: \
static R call(A0 a0,A1 a1,A2 a2); \
}; \
template <typename P> inline R Factory<P,R(A0,A1,A2)>::call(A0 a0, A1 a1, A2 a2)

Definition at line 185 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_4

#define DD4HEP_PLUGIN_FACTORY_ARGS_4 (   R,
  A0,
  A1,
  A2,
  A3 
)
Value:
template <typename P> class Factory<P, R(A0,A1,A2,A3)> \
public: \
static R call(A0 a0,A1 a1,A2 a2, A3 a3); \
}; \
template <typename P> inline R Factory<P,R(A0,A1,A2,A3)>::call(A0 a0, A1 a1, A2 a2, A3 a3)

Definition at line 193 of file Plugins.h.

◆ DD4HEP_PLUGIN_FACTORY_ARGS_5

#define DD4HEP_PLUGIN_FACTORY_ARGS_5 (   R,
  A0,
  A1,
  A2,
  A3,
  A4 
)
Value:
template <typename P> class Factory<P, R(A0,A1,A2,A3,A4)> \
public: \
static R call(A0 a0,A1 a1,A2 a2, A3 a3, A4 a4); \
}; \
template <typename P> inline R Factory<P,R(A0,A1,A2,A3,A4)>::call(A0 a0, A1 a1, A2 a2, A3 a3, A4 a4)

Definition at line 201 of file Plugins.h.

◆ DD4HEP_PLUGINSVC_CNAME

#define DD4HEP_PLUGINSVC_CNAME (   name,
  serial 
)    name##_dict_##serial

Definition at line 150 of file Plugins.h.

◆ DD4HEP_PLUGINSVC_FACTORY

#define DD4HEP_PLUGINSVC_FACTORY (   type,
  name,
  signature,
  serial 
)
Value:
namespace { \
struct DD4HEP_PLUGINSVC_CNAME(__typeFactory__,serial) { \
DD4HEP_PLUGINSVC_CNAME(__typeFactory__,serial)() { \
DD4HEP_FACTORY_CALL(type,#name,signature); }}; \
static const DD4HEP_PLUGINSVC_CNAME(__typeFactory__,serial) \
DD4HEP_PLUGINSVC_CNAME(s____typeFactory__,serial); \
}

Definition at line 151 of file Plugins.h.

dd4hep::PluginFactoryBase
Factory base class implementing some utilities.
Definition: Plugins.h:50
DD4HEP_PLUGINSVC_CNAME
#define DD4HEP_PLUGINSVC_CNAME(name, serial)
Definition: Plugins.h:149