+//
+// Turn a C++ typeid into a nice type name.
+// This uses the C++ ABI where available.
+//
+string makeTypeName(const type_info &type)
+{
+#if USE_CXXABI
+ int status;
+ char *cname = abi::__cxa_demangle(type.name(), NULL, NULL, &status);
+ string name = cname; // save the value
+ ::free(cname); // yes, really (ABI rule)
+ return name;
+#else
+ return type.name(); // can't demangle; just return internal name
+#endif
+}
+
+