ATLAS Offline Software
Classes | Typedefs | Functions | Variables
DataModel_detail Namespace Reference

Classes

class  CompareAndPrint
 Helper for remove_duplicates. More...
 
class  const_iterator
 Const iterator class for DataVector/DataList. More...
 
struct  DVLCast
 casting operations for DataVector/DataList. More...
 
struct  DVLCast< DVL, false >
 casting operations for DataVector/List, static_cast version. More...
 
struct  DVLCast< DVL, true >
 casting operations for DataVector/List, dynamic_cast version. More...
 
class  DVLInfo
 
class  DVLInfoBase
 
class  DVLIterator
 Implementation for iterator helper. More...
 
class  DVLIteratorBase
 Helper to iterate over a DV container. More...
 
struct  dvlmapdel
 
class  ElementProxy
 Proxy for lvalue access to DataVector/DataList elements. More...
 
class  iterator
 (Non-const) Iterator class for DataVector/DataList. More...
 
struct  NoBase
 Marker for the base of the inheritance hierarchy. More...
 

Typedefs

typedef std::unordered_map< const std::type_info *, DVLInfoBase * > dvl_tinfo_map_t
 Maps from tinfo pointers and CLID to DVLInfo instances. More...
 

Functions

template<class T >
void * dvl_convert (const T &src, const DVLInfoBase &targ_info)
 Perform DataVector/DataList conversion copying. More...
 
template<class T >
void * dvl_convert (const T &src, const std::type_info &targ_tinfo, DVLInfoBase *&targ_info)
 Perform DataVector/DataList conversion copying. More...
 
template<class T >
void * dvl_convert (const T &src, CLID clid, DVLInfoBase *&targ_info)
 Perform DataVector/DataList conversion copying. More...
 
template<class T >
void dvl_update (const T &src, void *target, const DVLInfoBase *targ_info)
 Update the elements in the target container from the source. More...
 

Variables

dvl_tinfo_map_t *s_dvl_tinfo_map ATLAS_THREAD_SAFE = 0
 
mutex s_dvl_tinfo_mutex
 
struct DataModel_detail::dvlmapdel s_dvlmapdel
 

Typedef Documentation

◆ dvl_tinfo_map_t

typedef std::unordered_map<const std::type_info*, DVLInfoBase*> DataModel_detail::dvl_tinfo_map_t

Maps from tinfo pointers and CLID to DVLInfo instances.

Note that we don't rely on static initialization here, to avoid initialization ordering problems.

Definition at line 40 of file DVLInfo.cxx.

Function Documentation

◆ dvl_convert() [1/3]

template<class T >
void* DataModel_detail::dvl_convert ( const T &  src,
CLID  clid,
DVLInfoBase *&  targ_info 
)

Perform DataVector/DataList conversion copying.

Parameters
srcThe source container.
clidCLID for the desired container type.
targ_info[out]The DVLInfo for the target container type.
Returns
The new container, or 0.

If the elements of src can be converted to elements of a targ_tinfo container, then we make a new (view) container of that type and populate it with elements copied from src.

◆ dvl_convert() [2/3]

template<class T >
void* DataModel_detail::dvl_convert ( const T &  src,
const DVLInfoBase targ_info 
)

Perform DataVector/DataList conversion copying.

Parameters
srcThe source container.
targ_infoThe DVLInfo for the target container type.
Returns
The new container, or 0.

If the elements of src can be converted to elements of a targ_tinfo container, then we make a new (view) container of that type and populate it with elements copied from src.

◆ dvl_convert() [3/3]

template<class T >
void* DataModel_detail::dvl_convert ( const T &  src,
const std::type_info &  targ_tinfo,
DVLInfoBase *&  targ_info 
)

Perform DataVector/DataList conversion copying.

Parameters
srcThe source container.
targ_tinfotype_info for the desired container type.
targ_info[out]The DVLInfo for the target container type.
Returns
The new container, or 0.

If the elements of src can be converted to elements of a targ_tinfo container, then we make a new (view) container of that type and populate it with elements copied from src.

◆ dvl_update()

template<class T >
void DataModel_detail::dvl_update ( const T &  src,
void *  target,
const DVLInfoBase targ_info 
)

Update the elements in the target container from the source.

Parameters
srcThe source container.
targetThe target container.
targ_infoThe DVLInfo for the target container type.

The target container is cleared and then repopulated from the elements of the source container.

Variable Documentation

◆ ATLAS_THREAD_SAFE

dvl_tinfo_map_t* s_dvl_tinfo_map DataModel_detail::ATLAS_THREAD_SAFE = 0

Definition at line 41 of file DVLInfo.cxx.

◆ s_dvl_tinfo_mutex

mutex DataModel_detail::s_dvl_tinfo_mutex

Definition at line 42 of file DVLInfo.cxx.

◆ s_dvlmapdel

struct DataModel_detail::dvlmapdel DataModel_detail::s_dvlmapdel