ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthContainers
Root
DVLInfo.cxx
Go to the documentation of this file.
1
// This file's extension implies that it's C, but it's really -*- C++ -*-.
2
3
/*
4
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// $Id: DVLInfo.cxx 470529 2011-11-24 23:54:22Z ssnyder $
16
17
18
#include "
AthContainers/tools/DVLInfo.h
"
19
#include "
AthContainers/tools/threading.h
"
20
#ifndef XAOD_STANDALONE
21
#include "
AthenaKernel/CLIDRegistry.h
"
22
#endif
23
#include <typeinfo>
24
#include <string>
25
#include <memory>
26
#include <unordered_map>
27
28
29
using
AthContainers_detail::mutex;
30
using
AthContainers_detail::lock_guard;
31
32
33
namespace
DataModel_detail
{
34
35
39
typedef
std::unordered_map<const std::type_info*, DVLInfoBase*>
40
dvl_tinfo_map_t
;
41
dvl_tinfo_map_t
* s_dvl_tinfo_map
ATLAS_THREAD_SAFE
= 0;
42
mutex
s_dvl_tinfo_mutex
;
43
44
struct
dvlmapdel
{
45
~dvlmapdel
() {
delete
s_dvl_tinfo_map; }
46
}
s_dvlmapdel
;
47
48
49
50
59
DVLInfoBase::DVLInfoBase
(
const
std::type_info&
tinfo
,
60
const
std::type_info&
elt_tinfo
)
61
:
m_tinfo
(
tinfo
),
62
m_elt_tinfo
(
elt_tinfo
)
63
{
64
lock_guard<mutex>
lock
(
s_dvl_tinfo_mutex
);
65
if
(s_dvl_tinfo_map == 0)
66
s_dvl_tinfo_map =
new
dvl_tinfo_map_t
;
67
(*s_dvl_tinfo_map)[&
tinfo
] =
this
;
68
}
69
70
76
DVLInfoBase
*
DVLInfoBase::find
(
const
std::type_info&
tinfo
)
77
{
78
lock_guard<mutex>
lock
(
s_dvl_tinfo_mutex
);
79
if
(!s_dvl_tinfo_map)
80
return
0;
81
dvl_tinfo_map_t::iterator i = s_dvl_tinfo_map->find (&
tinfo
);
82
if
(i != s_dvl_tinfo_map->end())
83
return
i->second;
84
return
0;
85
}
86
87
88
#ifdef XAOD_STANDALONE
89
DVLInfoBase
*
DVLInfoBase::find
(
CLID
/*clid*/
)
90
{
91
return
0;
92
}
93
94
CLID
DVLInfoBase::clid
()
const
95
{
96
return
CLID_NULL;
97
}
98
#else
105
DVLInfoBase
*
DVLInfoBase::find
(
CLID
clid
)
106
{
107
const
std::type_info* ti =
CLIDRegistry::CLIDToTypeinfo
(
clid
);
108
if
(ti)
109
return
DVLInfoBase::find
(*ti);
110
return
0;
111
}
112
113
117
CLID
DVLInfoBase::clid
()
const
118
{
119
return
CLIDRegistry::typeinfoToCLID
(
m_tinfo
);
120
}
121
#endif
122
123
124
}
// namespace DataModel_detail
CLIDRegistry.h
a static registry of CLID->typeName entries.
DVLInfo.h
Holder to implement conversion copies for DataVector/DataList.
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
lock
virtual void lock()=0
Interface to allow an object to lock itself when made const in SG.
CLIDRegistry::typeinfoToCLID
static CLID typeinfoToCLID(const std::type_info &ti)
Return the CLID corresponding to a type_info.
Definition
CLIDRegistry.cxx:148
CLIDRegistry::CLIDToTypeinfo
static const std::type_info * CLIDToTypeinfo(CLID clid)
Translate between CLID and type_info.
Definition
CLIDRegistry.cxx:136
DataModel_detail::DVLInfoBase
Definition
DVLInfo.h:68
DataModel_detail::DVLInfoBase::find
static DVLInfoBase * find(const std::type_info &tinfo)
Find the DVLInfo for the container tinfo.
Definition
DVLInfo.cxx:76
DataModel_detail::DVLInfoBase::elt_tinfo
const std::type_info & elt_tinfo() const
Return the type_info for the container's element.
DataModel_detail::DVLInfoBase::clid
CLID clid() const
Return the CLID for the container.
Definition
DVLInfo.cxx:117
DataModel_detail::DVLInfoBase::m_elt_tinfo
const std::type_info & m_elt_tinfo
The type_info of the container's element.
Definition
DVLInfo.h:185
DataModel_detail::DVLInfoBase::tinfo
const std::type_info & tinfo() const
Return the type_info for the container.
DataModel_detail::DVLInfoBase::m_tinfo
const std::type_info & m_tinfo
The type_info of the container.
Definition
DVLInfo.h:182
DataModel_detail::DVLInfoBase::DVLInfoBase
DVLInfoBase(const std::type_info &tinfo, const std::type_info &elt_tinfo)
Constructor.
Definition
DVLInfo.cxx:59
DataModel_detail
Definition
CompareAndPrint.h:15
DataModel_detail::s_dvlmapdel
struct DataModel_detail::dvlmapdel s_dvlmapdel
DataModel_detail::ATLAS_THREAD_SAFE
dvl_tinfo_map_t *s_dvl_tinfo_map ATLAS_THREAD_SAFE
Definition
DVLInfo.cxx:41
DataModel_detail::s_dvl_tinfo_mutex
mutex s_dvl_tinfo_mutex
Definition
DVLInfo.cxx:42
DataModel_detail::dvl_tinfo_map_t
std::unordered_map< const std::type_info *, DVLInfoBase * > dvl_tinfo_map_t
Maps from tinfo pointers and CLID to DVLInfo instances.
Definition
DVLInfo.cxx:40
DataModel_detail::dvlmapdel
Definition
DVLInfo.cxx:44
DataModel_detail::dvlmapdel::~dvlmapdel
~dvlmapdel()
Definition
DVLInfo.cxx:45
threading.h
Threading definitions.
Generated on
for ATLAS Offline Software by
1.17.0