2   Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 
    6  * @file  AthenaKernel/ClassName.icc
 
    9  * @brief An interface for getting the name of a class as a string.
 
   10  *        Implementation file.
 
   15  * @brief Return the name of class @c T as a string.
 
   18 std::string ClassName<T>::name()
 
   20   return Athena::typeinfoName (typeid (T));
 
   24 //  * @brief Specialization of @c ClassName for @c std::vector.
 
   26 //  * This overrides the default implementation of @c ClassName
 
   27 //  * to hide @c std::vector's second template parameter.
 
   31 // std::string ClassName<std::vector<T> >::name()
 
   33 //   std::string out = "std::vector<";
 
   34 //   out += ClassName<T>::name();
 
   35 //   if (out[out.size()-1] == '>')
 
   42 //  * @brief Specialization of @c ClassName for @c std::list.
 
   44 //  * This overrides the default implementation of @c ClassName
 
   45 //  * to hide @c std::list's second template parameter.
 
   49 // std::string ClassName<std::list<T> >::name()
 
   51 //   std::string out = "std::list<";
 
   52 //   out += ClassName<T>::name();
 
   53 //   if (out[out.size()-1] == '>')
 
   60 //  * @brief Specialization of @c ClassName for @c std::map.
 
   62 //  * This overrides the default implementation of @c ClassName
 
   63 //  * to hide @c std::map's 4th template parameter (and optionally the 3rd too)
 
   66 // template <class K, class V, class C>
 
   67 // std::string ClassName<std::map<K, V, C> >::name()
 
   69 //   std::string out = "std::map<";
 
   70 //   out += ClassName<K>::name()+ "," + ClassName<V>::name();
 
   71 //   std::string comp = ClassName<C>::name();
 
   72 //   if (comp.size() > 10 && comp.substr(0, 10) != "std::less<") {
 
   73 //     out += ","+ClassName<C>::name();
 
   75 //   if (out[out.size()-1] == '>')