diff --git a/src/tl/tl/tlString.cc b/src/tl/tl/tlString.cc index e38ed8a33..2c39a8e44 100644 --- a/src/tl/tl/tlString.cc +++ b/src/tl/tl/tlString.cc @@ -231,6 +231,32 @@ tl::to_string (const unsigned long long &d) return os.str (); } +#if defined(HAVE_64BIT_COORD) +template <> +std::string +tl::to_string (const __int128 &d) +{ + if (d < 0 ) { + return "-" + tl::to_string(static_cast(-d)); + } else { + return tl::to_string(static_cast(d)); + } +} + +template <> +std::string +tl::to_string (const unsigned __int128 &d) +{ + if (static_cast(d) == d) { + return tl::to_string(static_cast(d)); + } + std::ostringstream os; + os.imbue (c_locale); + os << "0x" << std::hex << static_cast (d>>64) << static_cast (d); + return os.str (); +} +#endif + template <> std::string tl::to_string (char * const &cp)