ATLAS Offline Software
AthenaKernel/AthenaKernel/ClassName.h
Go to the documentation of this file.
1 // This file's extension implies that it's C, but it's really -*- C++ -*-.
2 /*
3  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 */
13 #ifndef ATHENAKERNEL_CLASSNAME_H
14 #define ATHENAKERNEL_CLASSNAME_H
15 
16 
17 #include <string>
18 #include <typeinfo>
19 
20 
29 template <class T>
30 class ClassName
31 {
32 public:
36  static std::string name()
37 #ifdef __GNUC__
38  // Force this function to appear as a symbol in the output file,
39  // even in an optimized build where it's always inlined.
40  // Otherwise, we get complaints from cling that it can't find the symbol
41  // (as of root 6.04).
43 #endif
44  ;
45 };
46 
47 
48 namespace Athena {
49 
50 
58 std::string typeinfoName (const std::type_info& ti);
59 
60 
61 } // namespace Athena
62 
63 
65 
66 
67 #endif // not ATHENAKERNEL_CLASSNAME_H
used
Athena::typeinfoName
std::string typeinfoName(const std::type_info &ti)
Convert a type_info to a demangled string.
Definition: AthenaKernel/src/ClassName.cxx:23
Athena
Some weak symbol referencing magic...
Definition: AthLegacySequence.h:21
ClassName.icc
ClassName
An interface for getting the name of a class as a string.
Definition: AthenaKernel/AthenaKernel/ClassName.h:31
ClassName::name
static std::string name()
Return the name of class T as a string.
__attribute__
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
Definition: TileCalibDrawerBase.h:190