/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Utilities/General/interface/ClassName.h
44 строки
829 B
W. David Dagenhart
Changes from scram build code-format-all
16 май 2019, 17:45
16 май 2019, 17:45
8551c2e
Код
Авторство
О чём код?
#ifndef UTILITIES_GENERAL_CLASSNAME_H #define UTILITIES_GENERAL_CLASSNAME_H // #include <typeinfo> #include <string> #include <cstdlib> inline std::string firstNonNumeric(const char* sc) { std::string s(sc); size_t pos = s.find_first_not_of("0123456789"); s.erase(0, pos); return s; } class Demangle { public: Demangle(const char* sc); const char* operator()() const { return demangle; } ~Demangle() { if (demangle) free((void*)demangle); } private: char* demangle; }; template <class T> inline std::string className(const T& t) { return std::string(Demangle(typeid(t).name())()); } template <class T> class ClassName { public: static const std::string& name() { static const std::string ln(Demangle(typeid(T).name())()); return ln; } }; #endif // UTILITIES_GENERAL_CLASSNAME_H