34 #include <boost/type_traits.hpp>
36 #include <boost/format.hpp>
40 #include "rsc/rscexports.h"
123 RSC_EXPORT std::string
typeName(
const std::type_info& type);
147 std::string
typeName(
const T&
object);
174 std::string
typeString(
const std::string& known_type_string,
175 const std::string& unknown_type_string,
const T& value);
182 template<
typename Ch,
typename Tr>
183 basic_ostream<Ch, Tr>&
184 operator<<(basic_ostream<Ch, Tr>& stream,
const type_info& type_info_);
200 return demangle(
typeid(
object).name());
205 const std::string&,
const T& value, boost::true_type) {
206 return (boost::format(known_type_string) % value).str();
211 const std::string& unknown_type_string,
const T&, boost::false_type) {
212 return unknown_type_string;
217 const std::string& unknown_type_string,
const T& value) {
218 return doTypeString(known_type_string, unknown_type_string, value,
227 template<
typename Ch,
typename Tr>
228 basic_ostream<Ch, Tr>&
229 operator<<(basic_ostream<Ch, Tr>& stream,
const type_info& type_info_) {
std::string typeName(const std::type_info &type)
Returns a (demangled) string representation of type.
std::string demangle(const char *mangled_symbol)
This function takes the mangled name of a symbol and returns the demangled name of the symbol...
std::string typeString(const std::string &known_type_string, const std::string &unknown_type_string, const T &value)
Returns one of two to strings depending on whether type T is known to be able to support stream outpu...
std::string doTypeString(const std::string &known_type_string, const std::string &, const T &value, boost::true_type)