![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <AthDictLoaderSvc.h>
|
using | Memo_t = std::unordered_set< std::string > |
|
Definition at line 35 of file AthDictLoaderSvc.h.
◆ Memo_t
◆ AthDictLoaderSvc() [1/2]
AthDictLoaderSvc::AthDictLoaderSvc |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~AthDictLoaderSvc()
AthDictLoaderSvc::~AthDictLoaderSvc |
( |
| ) |
|
|
virtual |
◆ AthDictLoaderSvc() [2/2]
AthDictLoaderSvc::AthDictLoaderSvc |
( |
| ) |
|
|
private |
◆ finalize()
StatusCode AthDictLoaderSvc::finalize |
( |
| ) |
|
|
overridevirtual |
◆ has_type() [1/3]
bool AthDictLoaderSvc::has_type |
( |
CLID |
clid | ) |
|
|
overridevirtual |
◆ has_type() [2/3]
bool AthDictLoaderSvc::has_type |
( |
const std::string & |
type_name | ) |
|
|
overridevirtual |
◆ has_type() [3/3]
bool AthDictLoaderSvc::has_type |
( |
const std::type_info & |
typeinfo | ) |
|
|
overridevirtual |
◆ initialize()
StatusCode AthDictLoaderSvc::initialize |
( |
| ) |
|
|
overridevirtual |
◆ interfaceID()
const InterfaceID & AthDictLoaderSvc::interfaceID |
( |
| ) |
|
|
inlinestatic |
◆ load_recursive()
◆ load_recursive1() [1/2]
Definition at line 240 of file AthDictLoaderSvc.cxx.
245 std::string nam = typ.
Name();
246 if (!memo.insert (nam).second)
return;
247 if (nam ==
"string" || nam ==
"std::string" ||
248 startsWith (nam,
"basic_string<") ||
249 startsWith (nam,
"std::basic_string<"))
253 if (startsWith (nam,
"vector<") || startsWith (nam,
"std::vector<")) {
254 std::string eltclass;
259 R__WRITE_LOCKGUARD(ROOT::gCoreMutex);
260 TClassEdit::TSplitType
split (nam.c_str());
261 if (
split.fElements.size() > 1) {
262 eltclass =
split.fElements[1];
265 if (!eltclass.empty()) {
271 else if (startsWith (nam,
"DataVector<")) {
272 std::string eltclass;
277 R__WRITE_LOCKGUARD(ROOT::gCoreMutex);
278 TClassEdit::TSplitType
split (nam.c_str());
279 if (
split.fElements.size() > 1) {
280 eltclass =
split.fElements[1];
283 if (!eltclass.empty()) {
288 else if (startsWith (nam,
"pair<") || startsWith (nam,
"std::pair<")) {
289 std::string pclass1, pclass2;
294 R__WRITE_LOCKGUARD(ROOT::gCoreMutex);
295 TClassEdit::TSplitType
split (nam.c_str());
296 if (
split.fElements.size() > 2) {
297 pclass1 =
split.fElements[1];
298 pclass2 =
split.fElements[2];
301 if (!pclass1.empty()) {
307 else if (startsWith (nam,
"map<") || startsWith (nam,
"std::map<")) {
308 std::string pclass1, pclass2;
313 R__WRITE_LOCKGUARD(ROOT::gCoreMutex);
314 TClassEdit::TSplitType
split (nam.c_str());
315 if (
split.fElements.size() > 2) {
316 pclass1 =
split.fElements[1];
317 pclass2 =
split.fElements[2];
320 if (!pclass1.empty()) {
324 std::string pname =
"std::pair<" + pclass1 +
"," + pclass2 +
">";
329 else if (startsWith (nam,
"LArConditionsContainer<")) {
335 R__WRITE_LOCKGUARD(ROOT::gCoreMutex);
336 TClassEdit::TSplitType
split (nam.c_str());
337 if (
split.fElements.size() > 1) {
338 pname =
"LArConditionsSubset<" +
split.fElements[1] +
">";
341 if (!pname.empty()) {
344 std::unique_ptr<ITPCnvBase> tpcnv =
m_tpCnvSvc->t2p_cnv_unique (pname);
353 for (
size_t i = 0;
i < nbase;
i++) {
358 for (
size_t i = 0;
i < nmem;
i++) {
◆ load_recursive1() [2/2]
void AthDictLoaderSvc::load_recursive1 |
( |
const std::string & |
tnam, |
|
|
Memo_t & |
memo |
|
) |
| |
|
private |
◆ load_type() [1/3]
retrieve a Reflex::Type
by name (auto)loading the dictionary by any necessary means.
If recursive
is true, then recursively load contained types.
Implements IDictLoaderSvc.
Definition at line 184 of file AthDictLoaderSvc.cxx.
186 std::string
name =
"<N/A>";
188 ATH_MSG_INFO (
"could not retrieve typename for clid [" << clid <<
"]");
◆ load_type() [2/3]
const RootType AthDictLoaderSvc::load_type |
( |
const std::string & |
type_name, |
|
|
bool |
recursive = false |
|
) |
| |
|
overridevirtual |
retrieve a Reflex::Type
by name (auto)loading the dictionary by any necessary means.
If recursive
is true, then recursively load contained types.
Implements IDictLoaderSvc.
Definition at line 148 of file AthDictLoaderSvc.cxx.
◆ load_type() [3/3]
const RootType AthDictLoaderSvc::load_type |
( |
const std::type_info & |
typeinfo, |
|
|
bool |
recursive = false |
|
) |
| |
|
overridevirtual |
retrieve a Reflex::Type
by std::type_info
(auto)loading the dictionary by any necessary means.
This method is preferred over the above one as it is guaranteed to succeed IF the dictionary for that type has been generated. If recursive
is true, then recursively load contained types.
Implements IDictLoaderSvc.
Definition at line 171 of file AthDictLoaderSvc.cxx.
175 (
"loading [" << System::typeinfoName(typeinfo) <<
" (from typeinfo)]...");
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ queryInterface()
StatusCode AthDictLoaderSvc::queryInterface |
( |
const InterfaceID & |
riid, |
|
|
void ** |
ppvInterface |
|
) |
| |
|
overridevirtual |
Definition at line 82 of file AthDictLoaderSvc.cxx.
88 return ::AthService::queryInterface(riid, ppvInterface);
91 return StatusCode::SUCCESS;
◆ SvcFactory< AthDictLoaderSvc >
◆ m_clidSvc
handle to a IClassIDSvc
to handle loading of types by CLID
Definition at line 121 of file AthDictLoaderSvc.h.
◆ m_dsodb
◆ m_tpCnvSvc
The documentation for this class was generated from the following files:
size_t DataMemberSize() const
static TScopeAdapter ByNameNoQuiet(const std::string &name, Bool_t load=kTRUE)
ServiceHandle< ITPCnvSvc > m_tpCnvSvc
std::unordered_set< std::string > Memo_t
static const DsoDb * instance()
factory for the DsoDb
bool has_type(const std::string &type_name) const
void load_recursive(const RootType &typ)
TTypeAdapter TypeOf() const
const Ath::DsoDb * m_dsodb
dictionary of all known (reflex) types
std::string Name(unsigned int mod=Reflex::SCOPED) const
static const InterfaceID & interfaceID()
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
Run a MT piece of code with an alternate root error handler.
ServiceHandle< IClassIDSvc > m_clidSvc
handle to a IClassIDSvc to handle loading of types by CLID
Bool_t IsFundamental() const
void load_recursive1(const std::string &tnam, Memo_t &memo)
virtual const std::type_info & persistentTInfo() const =0
return C++ type id of the persistent class this converter is for
The non-template portion of the BaseInfo implementation.
virtual const RootType load_type(const std::string &type_name, bool recursive=false) override
retrieve a Reflex::Type by name (auto)loading the dictionary by any necessary means.
TMemberAdapter DataMemberAt(size_t nth) const
const std::type_info & typeinfo() const
Return the std::type_info for this class.
virtual bool has_type(const std::string &type_name) override
check a Reflex dictionary exists for a given type
TBaseAdapter BaseAt(size_t nth) const