DD4hep  1.28.0
Detector Description Toolkit for High Energy Physics
Public Member Functions | Protected Attributes | List of all members
dd4hep::detail::DeleteExtension< Q, T > Class Template Reference

Implementation class for the object extension mechanism. More...

#include <ExtensionEntry.h>

Inheritance diagram for dd4hep::detail::DeleteExtension< Q, T >:
dd4hep::ExtensionEntry

Public Member Functions

 DeleteExtension ()=delete
 Default constructor. More...
 
 DeleteExtension (T *p)
 Initializing constructor. More...
 
 DeleteExtension (const DeleteExtension &copy)=default
 Copy constructor. More...
 
virtual ~DeleteExtension ()=default
 Default destructor. More...
 
DeleteExtensionoperator= (const DeleteExtension &copy)=default
 Assignment operator. More...
 
virtual void * copy (void *) const override
 Virtual object copy operator. More...
 
virtual void destruct () const override
 Virtual object destructor. More...
 
virtual void * object () const override
 Virtual object accessor. More...
 
virtual ExtensionEntryclone (void *arg) const override
 Virtual entry clone function. More...
 
virtual unsigned long long int hash64 () const override
 Hash value. More...
 
- Public Member Functions inherited from dd4hep::ExtensionEntry
virtual ~ExtensionEntry ()=default
 Default destructor. More...
 
void invalidCall (const char *tag) const
 Callback on invalid call invokation. More...
 

Protected Attributes

T * ptr = 0
 
Q * iface = 0
 

Additional Inherited Members

- Protected Member Functions inherited from dd4hep::ExtensionEntry
 ExtensionEntry ()=default
 Default constructor. More...
 
 ExtensionEntry (const ExtensionEntry &copy)=default
 Copy constructor. More...
 

Detailed Description

template<typename Q, typename T>
class dd4hep::detail::DeleteExtension< Q, T >

Implementation class for the object extension mechanism.

This implementation class supports the object extension mechanism for dd4hep. It is ensured, that on the object destruction or on request the reference to the user object may be destructed.

Note: User object must be taken from the heap using "new". Note: The double-template implementation is necessary to support extensions using a virtual inheritance relationship between the interface and the concrete implementation of the extension object.

Author
M.Frank
Date
13.08.2013

Definition at line 122 of file ExtensionEntry.h.

Constructor & Destructor Documentation

◆ DeleteExtension() [1/3]

template<typename Q , typename T >
dd4hep::detail::DeleteExtension< Q, T >::DeleteExtension ( )
delete

Default constructor.

◆ DeleteExtension() [2/3]

template<typename Q , typename T >
dd4hep::detail::DeleteExtension< Q, T >::DeleteExtension ( T *  p)
inline

Initializing constructor.

Definition at line 130 of file ExtensionEntry.h.

◆ DeleteExtension() [3/3]

template<typename Q , typename T >
dd4hep::detail::DeleteExtension< Q, T >::DeleteExtension ( const DeleteExtension< Q, T > &  copy)
default

Copy constructor.

◆ ~DeleteExtension()

template<typename Q , typename T >
virtual dd4hep::detail::DeleteExtension< Q, T >::~DeleteExtension ( )
virtualdefault

Default destructor.

Member Function Documentation

◆ clone()

template<typename Q , typename T >
virtual ExtensionEntry* dd4hep::detail::DeleteExtension< Q, T >::clone ( void *  arg) const
inlineoverridevirtual

Virtual entry clone function.

Implements dd4hep::ExtensionEntry.

Definition at line 145 of file ExtensionEntry.h.

◆ copy()

template<typename Q , typename T >
virtual void* dd4hep::detail::DeleteExtension< Q, T >::copy ( void *  ) const
inlineoverridevirtual

Virtual object copy operator.

Implements dd4hep::ExtensionEntry.

Definition at line 138 of file ExtensionEntry.h.

◆ destruct()

template<typename Q , typename T >
virtual void dd4hep::detail::DeleteExtension< Q, T >::destruct ( ) const
inlineoverridevirtual

Virtual object destructor.

Implements dd4hep::ExtensionEntry.

Definition at line 140 of file ExtensionEntry.h.

◆ hash64()

template<typename Q , typename T >
virtual unsigned long long int dd4hep::detail::DeleteExtension< Q, T >::hash64 ( ) const
inlineoverridevirtual

Hash value.

Implements dd4hep::ExtensionEntry.

Definition at line 148 of file ExtensionEntry.h.

◆ object()

template<typename Q , typename T >
virtual void* dd4hep::detail::DeleteExtension< Q, T >::object ( ) const
inlineoverridevirtual

Virtual object accessor.

Implements dd4hep::ExtensionEntry.

Definition at line 142 of file ExtensionEntry.h.

◆ operator=()

template<typename Q , typename T >
DeleteExtension& dd4hep::detail::DeleteExtension< Q, T >::operator= ( const DeleteExtension< Q, T > &  copy)
default

Assignment operator.

Member Data Documentation

◆ iface

template<typename Q , typename T >
Q* dd4hep::detail::DeleteExtension< Q, T >::iface = 0
mutableprotected

Definition at line 125 of file ExtensionEntry.h.

◆ ptr

template<typename Q , typename T >
T* dd4hep::detail::DeleteExtension< Q, T >::ptr = 0
protected

Definition at line 124 of file ExtensionEntry.h.


The documentation for this class was generated from the following file: