2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 // $Id: ClassName.icc,v 1.1 2009-01-15 19:07:29 binet Exp $
7 * @file AthenaKernel/ClassName.icc
10 * @brief An interface for getting the name of a class as a string.
11 * Implementation file.
15 #include "GaudiKernel/System.h"
19 * @brief Return the name of class @c T as a string.
22 std::string ClassName<T>::name()
24 return System::typeinfoName (typeid (T));
28 // * @brief Specialization of @c ClassName for @c std::vector.
30 // * This overrides the default implementation of @c ClassName
31 // * to hide @c std::vector's second template parameter.
35 // std::string ClassName<std::vector<T> >::name()
37 // std::string out = "std::vector<";
38 // out += ClassName<T>::name();
39 // if (out[out.size()-1] == '>')
46 // * @brief Specialization of @c ClassName for @c std::list.
48 // * This overrides the default implementation of @c ClassName
49 // * to hide @c std::list's second template parameter.
53 // std::string ClassName<std::list<T> >::name()
55 // std::string out = "std::list<";
56 // out += ClassName<T>::name();
57 // if (out[out.size()-1] == '>')
64 // * @brief Specialization of @c ClassName for @c std::map.
66 // * This overrides the default implementation of @c ClassName
67 // * to hide @c std::map's 4th template parameter (and optionally the 3rd too)
70 // template <class K, class V, class C>
71 // std::string ClassName<std::map<K, V, C> >::name()
73 // std::string out = "std::map<";
74 // out += ClassName<K>::name()+ "," + ClassName<V>::name();
75 // std::string comp = ClassName<C>::name();
76 // if (comp.size() > 10 && comp.substr(0, 10) != "std::less<") {
77 // out += ","+ClassName<C>::name();
79 // if (out[out.size()-1] == '>')