pretty_name(8rheolef) | rheolef-7.0 | pretty_name(8rheolef) |
typename_macro, pretty_typename_macro - type demangler and pretty printer
These preprocessor macro-definitions are useful when dealing with complex types as generated by imbricted template technics: they print in clear a complex type at run-time. typeid_name_macro obtains a human readable type in a std::tring form by calling the system typeid function and then a demangler. When this type is very long, pretty_name_macro prints also it in a multi-line form with a pretty indentation.
typedef map <size_t, double, less<size_t>, heap_allocator<pair<size_t,double> > > map_type;
cout << typeid_name_macro (map_type);
extern std::string typeid_name (const char* name, bool do_indent); } // namespace rheolef /// @brief get string from a type, with an optional pretty-printing for complex types #define typename_macro(T) rheolef::typeid_name(typeid(T).name(), false) #define pretty_typename_macro(T) rheolef::typeid_name(typeid(T).name(), true) /// @brief get string type from a variable or expression template <class T> std::string typename_of (T x) { return typename_macro(T); } template <class T> std::string pretty_typename_of (T x) { return pretty_typename_macro(T); }
Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr> GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
rheolef-7.0 | rheolef-7.0 |