ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
SG::BaseInfoBase Class Reference

The non-template portion of the BaseInfo implementation. More...

#include <BaseInfo.h>

Collaboration diagram for SG::BaseInfoBase:

Public Types

typedef void * castfn_t(void *p)
 Type of a pointer conversion function. More...
 
typedef void init_func_t(BaseInfoBase *bib)
 Type for an initialization function. More...
 

Public Member Functions

CLID clid () const
 Return the CLID for this class. More...
 
const std::type_info & typeinfo () const
 Return the std::type_info for this class. More...
 
void * cast (void *p, CLID clid) const
 Cast to a base pointer. More...
 
void * cast (void *p, const std::type_info &tinfo) const
 Cast to a base pointer. More...
 
void * castTo (void *p, CLID clid) const
 Cast to a derived pointer. More...
 
void * castTo (void *p, const std::type_info &tinfo) const
 Cast to a derived pointer. More...
 
castfn_tcastfn (CLID clid) const
 Return a function for casting to a base pointer. More...
 
castfn_tcastfn (const std::type_info &tinfo) const
 Return a function for casting to a base pointer. More...
 
castfn_tcastfnTo (CLID clid) const
 Return a function for casting to a derived pointer. More...
 
castfn_tcastfnTo (const std::type_info &tinfo) const
 Return a function for casting to a derived pointer. More...
 
const std::vector< CLID > & get_bases () const
 Return the class IDs of all known bases of T (that have class IDs). More...
 
std::vector< const std::type_info * > get_ti_bases () const
 Return the type_info's of all known bases of T. More...
 
bool is_base (CLID clid) const
 Return true if clid is the ID of a class that is known to be a base of T. More...
 
bool is_base (const std::type_info &tinfo) const
 Return true if tinfo is the type_info of a class that is known to be a base of T. More...
 
bool is_virtual (CLID clid) const
 Return true if clid is the ID of a class that is known to be a virtual base of T. More...
 
bool is_virtual (const std::type_info &tinfo) const
 Return true if tinfo is the std::type_info of a class that is known to be a virtual base of T. More...
 
const CopyConversionBasecopy_conversion (const std::type_info &tinfo) const
 Search for a copy conversion to tinfo. More...
 
const CopyConversionBasecopy_conversion (CLID clid) const
 Search for a copy conversion to clid. More...
 
void add_copy_conversion (const std::type_info &tinfo, const CopyConversionBase *cnv)
 Add a new copy conversion. More...
 
std::vector< CLIDget_copy_conversions () const
 Return known copy conversions. More...
 
void add_info (const std::type_info &tinfo, castfn_t *converter, castfn_t *converterTo, bool is_virtual)
 Add information about one base class. More...
 
void maybeInit ()
 Run initializations for this class, if needed. More...
 

Static Public Member Functions

static const BaseInfoBasefind (CLID clid)
 Find the BaseInfoBase instance for clid. More...
 
static const BaseInfoBasefind (const std::type_info &tinfo)
 Find the BaseInfoBase instance for tinfo. More...
 
static void addInit (const std::type_info *tinfo, init_func_t *init_func)
 Register an initialization function. More...
 

Protected Member Functions

 BaseInfoBase (const std::type_info &tinfo)
 Constructor. More...
 
 ~BaseInfoBase ()
 Destructor. More...
 

Private Member Functions

 BaseInfoBase (const BaseInfoBase &)
 
BaseInfoBaseoperator= (const BaseInfoBase &)
 

Static Private Member Functions

static BaseInfoBasefind1 (const std::type_info &tinfo)
 Helper for find. More...
 

Private Attributes

BaseInfoBaseImplm_impl
 Pointer to internal state. More...
 

Friends

template<class D , class B >
struct RegisterAddBaseInit
 
template<class D , class B >
struct RegisterAddCopyConversionInit
 

Detailed Description

The non-template portion of the BaseInfo implementation.

Definition at line 450 of file Control/AthenaKernel/AthenaKernel/BaseInfo.h.

Member Typedef Documentation

◆ castfn_t

typedef void* SG::BaseInfoBase::castfn_t(void *p)

Type of a pointer conversion function.

Definition at line 516 of file Control/AthenaKernel/AthenaKernel/BaseInfo.h.

◆ init_func_t

typedef void SG::BaseInfoBase::init_func_t(BaseInfoBase *bib)

Type for an initialization function.

Definition at line 688 of file Control/AthenaKernel/AthenaKernel/BaseInfo.h.

Constructor & Destructor Documentation

◆ BaseInfoBase() [1/2]

SG::BaseInfoBase::BaseInfoBase ( const std::type_info &  tinfo)
protected

Constructor.

Parameters
tinfoThe std::type_info for this class.

Definition at line 528 of file BaseInfo.cxx.

529  : m_impl (new BaseInfoBaseImpl)
530 {
532  m_impl->m_typeinfo = &tinfo;
533  m_impl->m_needs_init = true;
534 
536  if (!BaseInfoBaseImpl::s_bi_by_ti)
537  BaseInfoBaseImpl::s_bi_by_ti = new BaseInfoBaseImpl::bi_by_ti_map_type;
538  if (!BaseInfoBaseImpl::s_ti_by_name)
539  BaseInfoBaseImpl::s_ti_by_name = new BaseInfoBaseImpl::ti_by_name_map_type;
540 
541  // Register this instance in the static maps.
542  (*BaseInfoBaseImpl::s_bi_by_ti)[&tinfo] = this;
543  (*BaseInfoBaseImpl::s_ti_by_name)[tinfo.name()] = &tinfo;
544 }

◆ ~BaseInfoBase()

SG::BaseInfoBase::~BaseInfoBase ( )
protected

Destructor.

Definition at line 550 of file BaseInfo.cxx.

551 {
555  ++it)
556  {
557  delete it->second;
558  }
559  delete m_impl;
560 }

◆ BaseInfoBase() [2/2]

SG::BaseInfoBase::BaseInfoBase ( const BaseInfoBase )
private

Member Function Documentation

◆ add_copy_conversion()

void SG::BaseInfoBase::add_copy_conversion ( const std::type_info &  tinfo,
const CopyConversionBase cnv 
)

Add a new copy conversion.

Parameters
tinfoThe std::type_info of the target class.
cnvA CopyConversionBase instance describing the conversion.

The BaseInfoBase takes ownership of the cnv object.

Definition at line 440 of file BaseInfo.cxx.

442 {
444  m_impl->m_ti_copyconversion_map.emplace_back (&tinfo, cnv);
445 }

◆ add_info()

void SG::BaseInfoBase::add_info ( const std::type_info &  tinfo,
castfn_t converter,
castfn_t converterTo,
bool  is_virtual 
)

Add information about one base class.

Parameters
tinfoThe std::type_info of the base.
converterConverter function. This should be able to convert a T* to a pointer to this base.
converterToConverter function. This should be able to convert a pointer to this base to a T*.
is_virtualTrue if the derivation from this base to T is via virtual derivation.

Definition at line 479 of file BaseInfo.cxx.

483 {
485  {
486  const BaseInfoBaseImpl::info* i = m_impl->findInfo (tinfo);
487  if (!i) {
488  m_impl->m_timap.emplace_back (&tinfo,
489  BaseInfoBaseImpl::info (converter, converterTo, is_virtual));
490  }
491  }
492 
493  auto i = BaseInfoBaseImpl::s_bi_by_ti->find (&tinfo);
494  if (i != BaseInfoBaseImpl::s_bi_by_ti->end()) {
495  BaseInfoBaseImpl& impl = *i->second->m_impl;
496  if (impl.m_clid == CLID_NULL)
497  impl.m_clid = CLIDRegistry::typeinfoToCLID (tinfo);
498  }
499 }

◆ addInit()

void SG::BaseInfoBase::addInit ( const std::type_info *  tinfo,
init_func_t init_func 
)
static

Register an initialization function.

Parameters
tinfoThe std::type_info for the class being registered.
init_funcFunction to initialize BaseInfo for the class.

Definition at line 672 of file BaseInfo.cxx.

674 {
676  if (!BaseInfoBaseImpl::s_init_list)
677  BaseInfoBaseImpl::s_init_list =
679  BaseInfoBaseImpl::s_init_list->insert (std::make_pair (tinfo, init_func));
680 
681  if (BaseInfoBaseImpl::s_bi_by_ti) {
682  auto i = BaseInfoBaseImpl::s_bi_by_ti->find (tinfo);
683  if (i != BaseInfoBaseImpl::s_bi_by_ti->end()) {
684  BaseInfoBaseImpl::lock_t lock (i->second->m_impl->m_mutex);
685  BaseInfoBaseImpl& impl = *i->second->m_impl;
686  impl.m_needs_init = true;
687  if (impl.m_clid == CLID_NULL)
688  impl.m_clid = CLIDRegistry::typeinfoToCLID (*tinfo);
689  }
690  }
691 }

◆ cast() [1/2]

void * SG::BaseInfoBase::cast ( void *  p,
CLID  clid 
) const

Cast to a base pointer.

Parameters
pThe pointer to cast (a T* cast to a void*).
clidID of the class to which to cast.
Returns
The pointer cast to the requested type, returned as a void*. clid must be known to be a base of T; otherwise, 0 will be returned.

Definition at line 166 of file BaseInfo.cxx.

167 {
168  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
169  if (ti)
170  return this->cast (p, *ti);
171  return 0;
172 }

◆ cast() [2/2]

void * SG::BaseInfoBase::cast ( void *  p,
const std::type_info &  tinfo 
) const

Cast to a base pointer.

Parameters
pThe pointer to cast (a T* cast to a void*).
clidtype_info of the class to which to cast.
Returns
The pointer cast to the requested type, returned as a void*. tinfo must be known to be a base of T; otherwise, 0 will be returned.

Definition at line 183 of file BaseInfo.cxx.

184 {
185  if (BaseInfoBase::castfn_t* converter = castfn (tinfo)) {
186  return converter (p);
187  }
188  return nullptr;
189 }

◆ castfn() [1/2]

BaseInfoBase::castfn_t * SG::BaseInfoBase::castfn ( CLID  clid) const

Return a function for casting to a base pointer.

Parameters
clidID of the class to which to cast.
Returns
A function to convert a pointer to a T to a pointer to the type identified by clid. clid must be known to be a base of T; otherwise, 0 will be returned.

Definition at line 236 of file BaseInfo.cxx.

237 {
238  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
239  if (ti)
240  return this->castfn (*ti);
241  return 0;
242 }

◆ castfn() [2/2]

BaseInfoBase::castfn_t * SG::BaseInfoBase::castfn ( const std::type_info &  tinfo) const

Return a function for casting to a base pointer.

Parameters
clidtype_info of the class to which to cast.
Returns
A function to convert a pointer to a T to a pointer to the type identified by tinfo. tinfo must be known to be a base of T; otherwise, 0 will be returned.

Definition at line 254 of file BaseInfo.cxx.

255 {
257  const BaseInfoBaseImpl::info* i = m_impl->findInfo (tinfo);
258  if (i)
259  return i->m_converter;
260  return nullptr;
261 }

◆ castfnTo() [1/2]

BaseInfoBase::castfn_t * SG::BaseInfoBase::castfnTo ( CLID  clid) const

Return a function for casting to a derived pointer.

Parameters
clidID of the class B from which to cast.
Returns
A function to convert a pointer to a B to a pointer to a T. B must be known to be a base of T; otherwise, 0 will be returned. 0 will also be returned if the dynamic_cast fails.

Definition at line 272 of file BaseInfo.cxx.

273 {
274  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
275  if (ti)
276  return this->castfnTo (*ti);
277  return 0;
278 }

◆ castfnTo() [2/2]

BaseInfoBase::castfn_t * SG::BaseInfoBase::castfnTo ( const std::type_info &  tinfo) const

Return a function for casting to a derived pointer.

Parameters
clidtype_info of the class B from which to cast.
Returns
A function to convert a pointer to a B to a pointer to a T. B must be known to be a base of T; otherwise, 0 will be returned. 0 will also be returned if the dynamic_cast fails.

Definition at line 290 of file BaseInfo.cxx.

291 {
293  const BaseInfoBaseImpl::info* i = m_impl->findInfo (tinfo);
294  if (i)
295  return i->m_converterTo;
296  return nullptr;
297 }

◆ castTo() [1/2]

void * SG::BaseInfoBase::castTo ( void *  p,
CLID  clid 
) const

Cast to a derived pointer.

Parameters
pThe pointer to cast (a B* cast to a void*).
clidID of the class B from which to cast.
Returns
The pointer cast to the requested type, returned as a void*. clid must be known to be a base of T; otherwise, 0 will be returned. 0 will also be returned if the dynamic_cast fails.

Definition at line 201 of file BaseInfo.cxx.

202 {
203  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
204  if (ti)
205  return this->castTo (p, *ti);
206  return 0;
207 }

◆ castTo() [2/2]

void * SG::BaseInfoBase::castTo ( void *  p,
const std::type_info &  tinfo 
) const

Cast to a derived pointer.

Parameters
pThe pointer to cast (a B* cast to a void*).
clidtype_info of the class B from which to cast.
Returns
The pointer cast to the requested type, returned as a void*. tinfo must be known to be a base of T; otherwise, 0 will be returned. 0 will also be returned if the dynamic_cast fails.

Definition at line 219 of file BaseInfo.cxx.

220 {
221  if (BaseInfoBase::castfn_t* converterTo = castfnTo (tinfo)) {
222  return converterTo (p);
223  }
224  return nullptr;
225 }

◆ clid()

CLID SG::BaseInfoBase::clid ( ) const

Return the CLID for this class.

Definition at line 141 of file BaseInfo.cxx.

142 {
144  return m_impl->m_clid;
145 }

◆ copy_conversion() [1/2]

const CopyConversionBase * SG::BaseInfoBase::copy_conversion ( CLID  clid) const

Search for a copy conversion to clid.

Parameters
clidThe class to which we want to convert.

Returns the conversion instance or 0.

Definition at line 423 of file BaseInfo.cxx.

424 {
425  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
426  if (ti)
427  return this->copy_conversion (*ti);
428  return 0;
429 }

◆ copy_conversion() [2/2]

const CopyConversionBase * SG::BaseInfoBase::copy_conversion ( const std::type_info &  tinfo) const

Search for a copy conversion to tinfo.

Parameters
tinfoThe class to which we want to convert.

Returns the conversion instance or 0.

Definition at line 405 of file BaseInfo.cxx.

406 {
408  for (const auto& p : m_impl->m_ti_copyconversion_map) {
409  if (p.first == &tinfo)
410  return p.second;
411  }
412  return 0;
413 }

◆ find() [1/2]

const BaseInfoBase * SG::BaseInfoBase::find ( CLID  clid)
static

Find the BaseInfoBase instance for clid.

Parameters
clidThe class ID of the class for which we want information.

Returns 0 if no BaseInfoBase instance is available.

Definition at line 569 of file BaseInfo.cxx.

570 {
571  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
572  if (ti)
573  return BaseInfoBase::find (*ti);
574  return 0;
575 }

◆ find() [2/2]

const BaseInfoBase * SG::BaseInfoBase::find ( const std::type_info &  tinfo)
static

Find the BaseInfoBase instance for tinfo.

Parameters
tinfoThe std::type_info of the class for which we want information.

Returns 0 if no BaseInfoBase instance is available.

Definition at line 632 of file BaseInfo.cxx.

633 {
634  BaseInfoBase* bib = find1 (tinfo);
635 
636  // If we didn't find it, try looking up by name.
637  // This to deal with the issue of sometimes getting duplicate
638  // @c std::type_info instances.
639  if (!bib) {
640  const std::type_info* tinfo2 = nullptr;
641  {
643  if (BaseInfoBaseImpl::s_ti_by_name) {
645  BaseInfoBaseImpl::s_ti_by_name->find (tinfo.name());
646  if (i != BaseInfoBaseImpl::s_ti_by_name->end() && i->second != &tinfo) {
647  tinfo2 = i->second;
648  }
649  }
650  }
651  if (tinfo2) {
652  bib = find1 (*tinfo2);
653  }
654  }
655 
656  if (bib) {
657  BaseInfoBaseImpl& impl = *bib->m_impl;
658  BaseInfoBaseImpl::lock_t lock (impl.m_mutex);
659  if (impl.m_clid == CLID_NULL)
660  impl.m_clid = CLIDRegistry::typeinfoToCLID (*impl.m_typeinfo);
661  }
662 
663  return bib;
664 }

◆ find1()

BaseInfoBase * SG::BaseInfoBase::find1 ( const std::type_info &  tinfo)
staticprivate

Helper for find.

Parameters
tinfoThe std::type_info of the class for which we want information.

Returns 0 if no BaseInfoBase instance is available.

Definition at line 585 of file BaseInfo.cxx.

586 {
587  BaseInfoBase* bib = nullptr;
588  {
590  if (!BaseInfoBaseImpl::s_bi_by_ti) return 0;
592  BaseInfoBaseImpl::s_bi_by_ti->find (&tinfo);
593  if (i != BaseInfoBaseImpl::s_bi_by_ti->end()) {
594  bib = i->second;
595  BaseInfoBaseImpl::lock_t lock (bib->m_impl->m_mutex);
596  if (!bib->m_impl->m_needs_init)
597  return bib;
598  bib->m_impl->m_needs_init = false;
599  }
600  }
601 
602  // Try the initlist.
603  while (true) {
604  BaseInfoBase::init_func_t* init = nullptr;
605  {
607  if (!BaseInfoBaseImpl::s_init_list) break;
609  BaseInfoBaseImpl::s_bi_by_ti->find (&tinfo);
610  if (i != BaseInfoBaseImpl::s_bi_by_ti->end())
611  bib = i->second;
613  BaseInfoBaseImpl::s_init_list->find (&tinfo);
614  if (it == BaseInfoBaseImpl::s_init_list->end()) break;
615  init = it->second;
616  BaseInfoBaseImpl::s_init_list->erase (it);
617  }
618  init (bib);
619  }
620 
621  return bib;
622 }

◆ get_bases()

const std::vector< CLID > & SG::BaseInfoBase::get_bases ( ) const

Return the class IDs of all known bases of T (that have class IDs).

The list will include T itself.

Definition at line 304 of file BaseInfo.cxx.

305 {
306  if (!m_impl->m_bases.isValid()) {
309  std::vector<CLID> v;
310  v.reserve (map.size());
311  for (const auto& p : map) {
313  if (clid != CLID_NULL)
314  v.push_back (clid);
315  }
316  m_impl->m_bases.set (std::move (v));
317  }
318  return *m_impl->m_bases.ptr();
319 }

◆ get_copy_conversions()

std::vector< CLID > SG::BaseInfoBase::get_copy_conversions ( ) const

Return known copy conversions.

Returns the CLIDs of all target classes that have been registered with this one for copy conversion.

Definition at line 455 of file BaseInfo.cxx.

456 {
458  std::vector<CLID> out;
459  out.reserve (m_impl->m_ti_copyconversion_map.size());
460  for (const auto& i : m_impl->m_ti_copyconversion_map) {
462  if (clid != CLID_NULL)
463  out.push_back (clid);
464  }
465  return out;
466 }

◆ get_ti_bases()

std::vector< const std::type_info * > SG::BaseInfoBase::get_ti_bases ( ) const

Return the type_info's of all known bases of T.

The list will include T itself.

Definition at line 326 of file BaseInfo.cxx.

327 {
330  std::vector<const std::type_info*> v;
331  v.reserve (map.size());
332  for (const auto& i : map)
333  v.push_back (i.first);
334  return v;
335 }

◆ is_base() [1/2]

bool SG::BaseInfoBase::is_base ( CLID  clid) const

Return true if clid is the ID of a class that is known to be a base of T.

T is considered to be its own base for this purpose.

Parameters
clidThe ID of the class to test.

Definition at line 344 of file BaseInfo.cxx.

345 {
346  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
347  if (ti)
348  return this->is_base (*ti);
349  return 0;
350 }

◆ is_base() [2/2]

bool SG::BaseInfoBase::is_base ( const std::type_info &  tinfo) const

Return true if tinfo is the type_info of a class that is known to be a base of T.

T is considered to be its own base for this purpose.

Parameters
clidThe ID of the class to test.

Definition at line 359 of file BaseInfo.cxx.

360 {
362  const BaseInfoBaseImpl::info* i = m_impl->findInfo (tinfo);
363  return i != 0;
364 }

◆ is_virtual() [1/2]

bool SG::BaseInfoBase::is_virtual ( CLID  clid) const

Return true if clid is the ID of a class that is known to be a virtual base of T.

(This will always be false for T itself.)

Parameters
clidThe ID of the class to test.

Definition at line 373 of file BaseInfo.cxx.

374 {
375  const std::type_info* ti = CLIDRegistry::CLIDToTypeinfo (clid);
376  if (ti)
377  return this->is_virtual (*ti);
378  return false;
379 }

◆ is_virtual() [2/2]

bool SG::BaseInfoBase::is_virtual ( const std::type_info &  tinfo) const

Return true if tinfo is the std::type_info of a class that is known to be a virtual base of T.

(This will always be false for T itself.)

Parameters
tinfoThe std::type_info of the class to test.

Definition at line 388 of file BaseInfo.cxx.

389 {
391  const BaseInfoBaseImpl::info* i = m_impl->findInfo (tinfo);
392  if (i)
393  return i->m_is_virtual;
394  return false;
395 }

◆ maybeInit()

void SG::BaseInfoBase::maybeInit ( )

Run initializations for this class, if needed.

Definition at line 697 of file BaseInfo.cxx.

698 {
699  // This may be null during initialization, if we're initializing a
700  // BaseInfo<T>::s_instance instance which references another type
701  // for which the s_instance constructor has not yet been run.
702  if (!m_impl) return;
703 
704  bool needs_init = false;
705  const std::type_info* ti = nullptr;
706  {
708  needs_init = m_impl->m_needs_init;
709  ti = m_impl->m_typeinfo;
710  }
711 
712  if (needs_init)
713  find (*ti);
714 }

◆ operator=()

BaseInfoBase& SG::BaseInfoBase::operator= ( const BaseInfoBase )
private

◆ typeinfo()

const std::type_info & SG::BaseInfoBase::typeinfo ( ) const

Return the std::type_info for this class.

Definition at line 151 of file BaseInfo.cxx.

152 {
154  return *m_impl->m_typeinfo;
155 }

Friends And Related Function Documentation

◆ RegisterAddBaseInit

template<class D , class B >
friend struct RegisterAddBaseInit
friend

◆ RegisterAddCopyConversionInit

template<class D , class B >
friend struct RegisterAddCopyConversionInit
friend

Member Data Documentation

◆ m_impl

BaseInfoBaseImpl* SG::BaseInfoBase::m_impl
private

Pointer to internal state.

Definition at line 734 of file Control/AthenaKernel/AthenaKernel/BaseInfo.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
SG::BaseInfoBase::find1
static BaseInfoBase * find1(const std::type_info &tinfo)
Helper for find.
Definition: BaseInfo.cxx:585
CxxUtils::CachedValue::ptr
const T * ptr() const
Return a pointer to the cached value.
CLIDRegistry::typeinfoToCLID
static CLID typeinfoToCLID(const std::type_info &ti)
Return the CLID corresponding to a type_info.
Definition: CLIDRegistry.cxx:148
SG::BaseInfoBaseImpl::m_bases
CxxUtils::CachedValue< std::vector< CLID > > m_bases
CLIDs of known bases, including the class itself.
Definition: BaseInfo.cxx:108
CxxUtils::CachedValue::isValid
bool isValid() const
Test to see if the value is valid.
SG::BaseInfoBaseImpl::init_list_t
std::unordered_multimap< const std::type_info *, BaseInfoBase::init_func_t * > init_list_t
Holds BaseInfo classes awaiting initialization.
Definition: BaseInfo.cxx:89
skel.it
it
Definition: skel.GENtoEVGEN.py:396
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
CLIDRegistry::CLIDToTypeinfo
static const std::type_info * CLIDToTypeinfo(CLID clid)
Translate between CLID and type_info.
Definition: CLIDRegistry.cxx:136
SG::BaseInfoBase::init_func_t
void init_func_t(BaseInfoBase *bib)
Type for an initialization function.
Definition: Control/AthenaKernel/AthenaKernel/BaseInfo.h:688
SG::BaseInfoBase::castfnTo
castfn_t * castfnTo(CLID clid) const
Return a function for casting to a derived pointer.
Definition: BaseInfo.cxx:272
SG::BaseInfoBaseImpl::m_ti_copyconversion_map
ti_copyconversion_type m_ti_copyconversion_map
Definition: BaseInfo.cxx:73
SG::BaseInfoBase::cast
void * cast(void *p, CLID clid) const
Cast to a base pointer.
Definition: BaseInfo.cxx:166
SG::BaseInfoBase::m_impl
BaseInfoBaseImpl * m_impl
Pointer to internal state.
Definition: Control/AthenaKernel/AthenaKernel/BaseInfo.h:734
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
SG::BaseInfoBaseImpl::bi_by_ti_map_type
std::unordered_map< const std::type_info *, BaseInfoBase * > bi_by_ti_map_type
Map of all type_info pointers to BaseInfoBase instances.
Definition: BaseInfo.cxx:77
lumiFormat.i
int i
Definition: lumiFormat.py:85
SG::BaseInfoBaseImpl::m_typeinfo
const std::type_info * m_typeinfo
std::type_info of this class.
Definition: BaseInfo.cxx:60
SG::BaseInfoBase::copy_conversion
const CopyConversionBase * copy_conversion(const std::type_info &tinfo) const
Search for a copy conversion to tinfo.
Definition: BaseInfo.cxx:405
SG::BaseInfoBase::castTo
void * castTo(void *p, CLID clid) const
Cast to a derived pointer.
Definition: BaseInfo.cxx:201
SG::BaseInfoBaseImpl::ti_map_type
std::vector< ti_map_pair_type > ti_map_type
Definition: BaseInfo.cxx:65
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
SG::BaseInfoBaseImpl::ti_by_name_map_type
std::unordered_map< std::string, const std::type_info * > ti_by_name_map_type
Used to canonicalize type_info instances.
Definition: BaseInfo.cxx:82
SG::BaseInfoBase::castfn_t
void * castfn_t(void *p)
Type of a pointer conversion function.
Definition: Control/AthenaKernel/AthenaKernel/BaseInfo.h:516
SG::BaseInfoBase::BaseInfoBase
BaseInfoBase(const std::type_info &tinfo)
Constructor.
Definition: BaseInfo.cxx:528
FPEAudit::s_mutex
std::mutex s_mutex
Definition: FPEAuditor.cxx:43
SG::BaseInfoBase::clid
CLID clid() const
Return the CLID for this class.
Definition: BaseInfo.cxx:141
SG::BaseInfoBase::find
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
Definition: BaseInfo.cxx:569
CxxUtils::CachedValue::set
void set(const T &val) const
Set the value, assuming it is currently invalid.
python.PyKernel.init
def init(v_theApp, v_rootStream=None)
Definition: PyKernel.py:45
python.PyAthena.v
v
Definition: PyAthena.py:154
impl
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:46
SG::BaseInfoBase::is_virtual
bool is_virtual(CLID clid) const
Return true if clid is the ID of a class that is known to be a virtual base of T.
Definition: BaseInfo.cxx:373
SG::BaseInfoBaseImpl::m_mutex
mutex_t m_mutex
Definition: BaseInfo.cxx:103
SG::BaseInfoBaseImpl::findInfo
const info * findInfo(const std::type_info &tinfo) const
Find a base by type_info.
Definition: BaseInfo.cxx:118
SG::BaseInfoBaseImpl::m_timap
ti_map_type m_timap
Definition: BaseInfo.cxx:66
SG::BaseInfoBase::castfn
castfn_t * castfn(CLID clid) const
Return a function for casting to a base pointer.
Definition: BaseInfo.cxx:236
SG::BaseInfoBaseImpl::m_clid
CLID m_clid
CLID of this class.
Definition: BaseInfo.cxx:53
SG::BaseInfoBaseImpl::lock_t
std::lock_guard< mutex_t > lock_t
Definition: BaseInfo.cxx:101
SG::BaseInfoBaseImpl::m_needs_init
bool m_needs_init
Set to true when first created.
Definition: BaseInfo.cxx:57
SG::BaseInfoBase::is_base
bool is_base(CLID clid) const
Return true if clid is the ID of a class that is known to be a base of T.
Definition: BaseInfo.cxx:344