From 91af35d6e6207ec118ccd3f1644cf322bfd3f288 Mon Sep 17 00:00:00 2001 From: Brian Ward Date: Thu, 21 Sep 2023 16:17:46 -0400 Subject: [PATCH 1/2] Remove boost::lexical_cast --- src/cmdstan/arguments/singleton_argument.hpp | 33 ++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/cmdstan/arguments/singleton_argument.hpp b/src/cmdstan/arguments/singleton_argument.hpp index f06f175964..eebe503fdc 100644 --- a/src/cmdstan/arguments/singleton_argument.hpp +++ b/src/cmdstan/arguments/singleton_argument.hpp @@ -2,13 +2,39 @@ #define CMDSTAN_ARGUMENTS_SINGLETON_ARGUMENT_HPP #include -#include #include #include #include namespace cmdstan { +namespace internal { +void from_string(std::string &src, double &dest) { dest = std::stod(src); } +void from_string(std::string &src, int &dest) { dest = std::stoi(src); } +void from_string(std::string &src, long long int &dest) { + dest = std::stoll(src); +} +void from_string(std::string &src, unsigned int &dest) { + dest = std::stoul(src); +} +void from_string(std::string &src, bool &dest) { + if (src == "true" || src == "1") { + dest = true; + } else if (src == "false" || src == "0") { + dest = false; + } else { + throw std::invalid_argument(std::string("invalid boolean value ") + src); + } +} +void from_string(std::string &src, std::string &dest) { dest = src; } + +std::string to_string(std::string &src) { return src; } +template +std::string to_string(T &src) { + return std::to_string(src); +} +} // namespace internal + template struct type_name { static std::string name() { return typeid(T).name(); } @@ -73,7 +99,8 @@ class singleton_argument : public valued_argument { args.pop_back(); try { - T proposed_value = boost::lexical_cast(value); + T proposed_value; + internal::from_string(value, proposed_value); if (set_value(proposed_value)) { return true; } @@ -109,7 +136,7 @@ class singleton_argument : public valued_argument { return false; } - std::string print_value() { return boost::lexical_cast(_value); } + std::string print_value() { return internal::to_string(_value); } std::string print_valid() { return " " + _validity; } From 179eba092f35a55ab6e48565f35a64a2f6c6b087 Mon Sep 17 00:00:00 2001 From: Brian Ward Date: Fri, 22 Sep 2023 09:46:18 -0400 Subject: [PATCH 2/2] Fix test --- src/test/interface/arguments/singleton_argument_test.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/interface/arguments/singleton_argument_test.cpp b/src/test/interface/arguments/singleton_argument_test.cpp index 9e15661836..4220daeeaa 100644 --- a/src/test/interface/arguments/singleton_argument_test.cpp +++ b/src/test/interface/arguments/singleton_argument_test.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include template