pretty_name(8rheolef)

pretty_name8rheolef

Type demangler and pretty printer

Overview

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.

Examples

  typedef map <size_t, double, less<size_t>, heap_allocator<pair<size_t,double> > >  map_type;
  cout << typeid_name_macro (map_type);

Implementation

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); }

Releases

4 releases since Debian 7 (Wheezy); the text changed 3 times.

  1. 7
  2. 8
  3. 9
  4. 10

From librheolef-dev 7.0-2+b1 in Debian 10 (Buster). Parsed by carta from the page's man source.