diff --git a/src/catch2/catch_tostring.cpp b/src/catch2/catch_tostring.cpp index 4eeabbae..d8b90dfd 100644 --- a/src/catch2/catch_tostring.cpp +++ b/src/catch2/catch_tostring.cpp @@ -41,7 +41,27 @@ namespace Detail { return value ? Little : Big; } }; - } + + template + std::string fpToString(T value, int precision) { + if (Catch::isnan(value)) { + return "nan"; + } + + ReusableStringStream rss; + rss << std::setprecision(precision) + << std::fixed + << value; + std::string d = rss.str(); + std::size_t i = d.find_last_not_of('0'); + if (i != std::string::npos && i != d.size() - 1) { + if (d[i] == '.') + i++; + d = d.substr(0, i + 1); + } + return d; + } + } // end unnamed namespace std::string rawMemoryToString( const void *object, std::size_t size ) { // Reverse order for little endian architectures @@ -58,29 +78,9 @@ namespace Detail { rss << std::setw(2) << static_cast(bytes[i]); return rss.str(); } -} +} // end Detail namespace -template -std::string fpToString( T value, int precision ) { - if (Catch::isnan(value)) { - return "nan"; - } - - ReusableStringStream rss; - rss << std::setprecision( precision ) - << std::fixed - << value; - std::string d = rss.str(); - std::size_t i = d.find_last_not_of( '0' ); - if( i != std::string::npos && i != d.size()-1 ) { - if( d[i] == '.' ) - i++; - d = d.substr( 0, i+1 ); - } - return d; -} - //// ======================================================= //// // @@ -228,13 +228,13 @@ std::string StringMaker::convert(unsigned char c) { int StringMaker::precision = 5; std::string StringMaker::convert(float value) { - return fpToString(value, precision) + 'f'; + return Detail::fpToString(value, precision) + 'f'; } int StringMaker::precision = 10; std::string StringMaker::convert(double value) { - return fpToString(value, precision); + return Detail::fpToString(value, precision); } } // end namespace Catch