DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces | Macros | Functions
Plugins.h File Reference
#include <string>
#include <vector>
#include <typeinfo>
#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...
 
struct  DD4hep::PluginService::FuncPointer< FUNCTION >
 
class  DD4hep::PluginRegistry< SIGNATURE >
 Factory template for the plugin mechanism. More...
 

Namespaces

 DD4hep
 Namespace for the AIDA detector description toolkit.
 
 DD4hep::Geometry
 Namespace for the geometry part of the AIDA detector description toolkit.
 
 DD4hep::XML
 Namespace containing utilities to parse XML files using XercesC or TinyXML.
 

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

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

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

Definition at line 172 of file Plugins.h.

#define DD4HEP_IMPLEMENT_PLUGIN_REGISTRY (   X,
 
)

Definition at line 173 of file Plugins.h.

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

Definition at line 176 of file Plugins.h.

#define DD4HEP_PLUGIN_FACTORY_ARGS_0 (   R)
Value:
template <typename P> class Factory<P, R()> \
public: \
static void wrapper(void *ret,void*,const std::vector<void*>& ,void*) { \
*(void**)ret = (void*)call(); \
} \
static R call(); \
}; \
template <typename P> inline R Factory<P,R()>::call()
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 186 of file Plugins.h.

#define DD4HEP_PLUGIN_FACTORY_ARGS_1 (   R,
  A0 
)
Value:
template <typename P> class Factory<P, R(A0)> \
public: \
static void wrapper(void *ret,void*,const std::vector<void*>& a,void*) { \
*(void**)ret = (void*)call(value<A0>(a[0])); \
} \
static R call(A0 a0); \
}; \
template <typename P> inline R Factory<P,R(A0)>::call(A0 a0)
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 197 of file Plugins.h.

#define DD4HEP_PLUGIN_FACTORY_ARGS_2 (   R,
  A0,
  A1 
)
Value:
template <typename P> class Factory<P, R(A0,A1)> \
public: \
static void wrapper(void *ret,void*,const std::vector<void*>& a,void*) { \
*(void**)ret = (void*)call(value<A0>(a[0]),value<A1>(a[1])); \
} \
static R call(A0 a0,A1 a1); \
}; \
template <typename P> inline R Factory<P,R(A0,A1)>::call(A0 a0, A1 a1)
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 208 of file Plugins.h.

#define DD4HEP_PLUGIN_FACTORY_ARGS_3 (   R,
  A0,
  A1,
  A2 
)
Value:
template <typename P> class Factory<P, R(A0,A1,A2)> \
public: \
static void wrapper(void *ret,void*,const std::vector<void*>& a,void*) { \
*(void**)ret = (void*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2])); \
} \
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)
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 219 of file Plugins.h.

#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 void wrapper(void *ret,void*,const std::vector<void*>& a,void*) { \
*(void**)ret = (void*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2]),value<A3>(a[3])); \
} \
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)
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 230 of file Plugins.h.

#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 void wrapper(void *ret,void*,const std::vector<void*>& a,void*) { \
*(void**)ret = (void*)call(value<A0>(a[0]),value<A1>(a[1]),value<A2>(a[2]),value<A3>(a[3]),value<A4>(a[4])); \
} \
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)
Factory base class implementing some utilities.
Definition: Plugins.h:48

Definition at line 241 of file Plugins.h.

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

Definition at line 177 of file Plugins.h.

#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); } \
} DD4HEP_PLUGINSVC_CNAME(s____typeFactory__,serial); \
}
#define DD4HEP_PLUGINSVC_CNAME(name, serial)
Definition: Plugins.h:177
#define DD4HEP_FACTORY_CALL(type, name, signature)
Definition: Plugins.h:172

Definition at line 178 of file Plugins.h.