58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // 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 {
 | |
| 
 | |
| inline
 | |
| std::string
 | |
| demangle(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 detail
 | |
| 
 | |
| template<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
 | 
