| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | // Boost.Units - A C++ library for zero-overhead dimensional analysis and // unit/quantity manipulation and conversion//// Copyright (C) 2003-2008 Matthias Christian Schabel// Copyright (C) 2008 Steven Watanabe//// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_UNITS_UTILITY_HPP#define BOOST_UNITS_UTILITY_HPP#include <typeinfo>#include <string>#include <boost/core/demangle.hpp>namespace boost {namespace units {namespace detail {inlinestd::stringdemangle(const char* name){    std::string demangled = core::demangle(name);    const std::string::size_type prefix_len = sizeof("boost::units::") - 1;    std::string::size_type i = 0;    for (;;)    {        std::string::size_type pos = demangled.find("boost::units::", i, prefix_len);        if (pos == std::string::npos)            break;        demangled.erase(pos, prefix_len);        i = pos;    }    return demangled;}} // namespace detailtemplate<class L>inline std::string simplify_typename(const L& /*source*/){    return detail::demangle(typeid(L).name());}} // namespace units} // namespace boost#endif // BOOST_UNITS_UTILITY_HPP
 |