ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaKernel
AthenaKernel
CLIDRegistry.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration.
3
*/
4
5
#ifndef ATHENAKERNEL_CLIDREGISTRY_H
6
# define ATHENAKERNEL_CLIDREGISTRY_H
13
14
#include "GaudiKernel/ClassID.h"
15
16
#include <vector>
17
#include <string>
18
#include <tuple>
19
#include <typeinfo>
20
21
namespace
CLIDdetail
{
23
24
const
unsigned
long
MINCLID
= 256;
25
const
unsigned
long
MAXCLID
= 2147483647;
27
}
28
29
class
CLIDRegistryImpl
;
30
35
class
CLIDRegistry
{
36
public
:
37
typedef
std::tuple <
unsigned
long,
38
std::string,
39
std::string>
tuple_t
;
40
typedef
std::vector< tuple_t >
CLIDVector_t
;
41
43
template
<
unsigned
long
CLID>
44
static
bool
addEntry
(
const
std::type_info& ti,
45
const
char
* typeName,
46
const
std::string& typeInfoName);
47
49
50
51
static
bool
hasNewEntries
();
54
static
CLIDVector_t
newEntries
();
56
58
static
const
std::type_info*
CLIDToTypeinfo
(
CLID
clid);
59
static
CLID
typeinfoToCLID
(
const
std::type_info& ti);
60
61
63
static
bool
addEntry
(
unsigned
long
clid,
64
const
std::type_info& ti,
65
const
char
* typeName,
66
const
std::string& typeInfoName);
67
68
private
:
69
static
CLIDRegistryImpl
&
impl
();
70
};
71
72
73
template
<
unsigned
long
CLID>
74
bool
CLIDRegistry::addEntry
(
const
std::type_info& ti,
75
const
char
* typeName,
76
const
std::string& typeInfoName) {
77
static_assert
(
CLIDdetail::MINCLID
<=
CLID
&&
CLID
<=
CLIDdetail::MAXCLID
,
78
"CLID out of CLIDRegistry range"
);
79
80
addEntry
(
CLID
, ti, typeName, typeInfoName);
81
return
true
;
82
}
83
84
85
#endif
// ATHENAKERNEL_CLIDREGISTRY_H
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
CLIDRegistryImpl
Definition
CLIDRegistry.cxx:12
CLIDRegistry
a static registry of CLID->typeName entries.
Definition
CLIDRegistry.h:35
CLIDRegistry::addEntry
static bool addEntry(const std::type_info &ti, const char *typeName, const std::string &typeInfoName)
to be called by the CLASS_DEFS
Definition
CLIDRegistry.h:74
CLIDRegistry::impl
static CLIDRegistryImpl & impl()
Definition
CLIDRegistry.cxx:123
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
CLIDRegistry::CLIDVector_t
std::vector< tuple_t > CLIDVector_t
Definition
CLIDRegistry.h:40
CLIDRegistry::hasNewEntries
static bool hasNewEntries()
registry accessors (used by ClassIDSvc)
Definition
CLIDRegistry.cxx:111
CLIDRegistry::tuple_t
std::tuple< unsigned long, std::string, std::string > tuple_t
Definition
CLIDRegistry.h:39
CLIDRegistry::newEntries
static CLIDVector_t newEntries()
returns an iterator range over the entries added since last time newEntries was called
Definition
CLIDRegistry.cxx:117
CLIDdetail
Definition
CLIDRegistry.h:21
CLIDdetail::MINCLID
const unsigned long MINCLID
Definition
CLIDRegistry.h:24
CLIDdetail::MAXCLID
const unsigned long MAXCLID
2**31 - 1
Definition
CLIDRegistry.h:25
Generated on
for ATLAS Offline Software by
1.17.0