Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52917 - trunk/libs/graph/test
From: asutton_at_[hidden]
Date: 2009-05-11 13:44:18


Author: asutton
Date: 2009-05-11 13:44:17 EDT (Mon, 11 May 2009)
New Revision: 52917
URL: http://svn.boost.org/trac/boost/changeset/52917

Log:
Added a function to help debugging during testing.

Added:
   trunk/libs/graph/test/typestr.hpp (contents, props changed)

Added: trunk/libs/graph/test/typestr.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/graph/test/typestr.hpp 2009-05-11 13:44:17 EDT (Mon, 11 May 2009)
@@ -0,0 +1,41 @@
+
+#ifndef ORIGIN_TYPESTR_HPP
+#define ORIGIN_TYPESTR_HPP
+
+#include <string>
+#include <cstring>
+#include <typeinfo>
+
+#if defined(__GNUC__)
+#include <cxxabi.h>
+#endif
+
+/**
+ * Return a string that describes the type of the given template parameter.
+ * The type name depends on the results of the typeid operator.
+ *
+ * @todo Rewrite this so that demangle will dynamically allocate the memory.
+ */
+template <typename T>
+std::string typestr()
+{
+#if defined(__GNUC__)
+ std::size_t const BUFSIZE = 8192;
+ std::size_t n = BUFSIZE;
+ char buf[BUFSIZE];
+ abi::__cxa_demangle(typeid(T).name(), buf, &n, 0);
+ return std::string(buf, ::strlen(buf));
+#else
+ return typeid(T).name();
+#endif
+}
+
+/**
+ * Return a string that describes the type of the given parameter. The type
+ * name depends on the results of the typeid operator.
+ */
+template <typename T>
+inline std::string typestr(T const&)
+{ return typestr<T>(); }
+
+#endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk