Provided by: librheolef-dev_5.93-2_i386 bug

NAME

       typename_macro,  pretty_typename_macro  -  type  demangler  and  pretty
       printer

DESCRIPTION

       These preprocessor macro-definitions  are  usefull  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.

EXAMPLE

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

       /// @brief get string from a type, with an optional pretty-printing for complex types
       #define        typename_macro(T) typeid_name(typeid(T).name(), false)
       #define pretty_typename_macro(T) 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); }