From 1f22a2520a5a4c0840b318bdeac2a07826674af1 Mon Sep 17 00:00:00 2001 From: Richard Kimberly Heck Date: Wed, 14 Oct 2020 22:28:10 -0400 Subject: [PATCH] Fix linking problem by adding convert from string to unsigned long long. --- src/support/convert.cpp | 34 ++++++++++++++++++++++++---------- src/support/convert.h | 9 +++++---- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/support/convert.cpp b/src/support/convert.cpp index af0ad62f2b..5912ac54e6 100644 --- a/src/support/convert.cpp +++ b/src/support/convert.cpp @@ -118,39 +118,53 @@ docstring convert(unsigned long long ull) { return from_ascii(lexical_cast(ull)); } -#endif template<> -string convert(long l) +string convert(long long ll) { - return lexical_cast(l); + return lexical_cast(ll); } template<> -docstring convert(long l) +docstring convert(long long ll) { - return from_ascii(lexical_cast(l)); + return from_ascii(lexical_cast(ll)); } -#ifdef HAVE_LONG_LONG_INT template<> -string convert(long long ll) +unsigned long long convert(string const s) { - return lexical_cast(ll); + return strtoull(s.c_str(), nullptr, 10); } +/* not presently needed template<> -docstring convert(long long ll) +long long convert(string const s) { - return from_ascii(lexical_cast(ll)); + return strtoll(s.c_str(), nullptr, 10); } +*/ #endif +template<> +string convert(long l) +{ + return lexical_cast(l); +} + + +template<> +docstring convert(long l) +{ + return from_ascii(lexical_cast(l)); +} + + template<> string convert(float f) { diff --git a/src/support/convert.h b/src/support/convert.h index 1b3e5bef29..8061732dbe 100644 --- a/src/support/convert.h +++ b/src/support/convert.h @@ -36,13 +36,14 @@ template<> docstring convert(unsigned long ul); #ifdef HAVE_LONG_LONG_INT template<> std::string convert(unsigned long long ull); template<> docstring convert(unsigned long long ull); -#endif -template<> std::string convert(long l); -template<> docstring convert(long l); -#ifdef HAVE_LONG_LONG_INT template<> std::string convert(long long ll); template<> docstring convert(long long ll); +template<> unsigned long long convert(std::string const & s); +// not presently needed +// template<> long long convert(std::string const & s); #endif +template<> std::string convert(long l); +template<> docstring convert(long l); template<> std::string convert(float f); template<> std::string convert(double d); template<> int convert(std::string const & s); -- 2.39.5