Make wrapper for boost::lexical_cast

This makes it easier to eventually get rid of boost::lexical_cast.
This commit is contained in:
Ilari Liusvaara 2017-10-25 14:11:43 +03:00
parent b5f3e543d8
commit 6fd18bd0f0
7 changed files with 19 additions and 17 deletions

View file

@ -265,6 +265,11 @@ bool regex_match(const std::string& regex, const std::string& str, enum regex_ma
*/ */
int string_to_bool(const std::string& cast_to_bool); int string_to_bool(const std::string& cast_to_bool);
template<typename T> T raw_lexical_cast(const std::string& value)
{
return boost::lexical_cast<T>(value);
}
/** /**
* \brief Typeconvert string. * \brief Typeconvert string.
*/ */
@ -315,7 +320,7 @@ template<typename T> inline T parse_value(const std::string& value) throw(std::b
} }
return val; return val;
} }
return boost::lexical_cast<T>(value); return raw_lexical_cast<T>(value);
} catch(std::exception& e) { } catch(std::exception& e) {
throw std::runtime_error("Can't parse value '" + value + "': " + e.what()); throw std::runtime_error("Can't parse value '" + value + "': " + e.what());
} }

View file

@ -29,7 +29,6 @@
#include <map> #include <map>
#include <stdexcept> #include <stdexcept>
#include <ao/ao.h> #include <ao/ao.h>
#include <boost/lexical_cast.hpp>
namespace namespace
{ {

View file

@ -11,6 +11,7 @@
#include "core/settings.hpp" #include "core/settings.hpp"
#include "core/window.hpp" #include "core/window.hpp"
#include "library/framebuffer.hpp" #include "library/framebuffer.hpp"
#include "library/string.hpp"
#include <cstring> #include <cstring>
#include <cstdlib> #include <cstdlib>
@ -25,7 +26,6 @@
#include <map> #include <map>
#include <stdexcept> #include <stdexcept>
#include <portaudio.h> #include <portaudio.h>
#include <boost/lexical_cast.hpp>
namespace namespace
{ {
@ -320,7 +320,7 @@ namespace
idx = paNoDevice; idx = paNoDevice;
} else { } else {
try { try {
idx = boost::lexical_cast<PaDeviceIndex>(dev); idx = raw_lexical_cast<PaDeviceIndex>(dev);
if(idx < 0 || !Pa_GetDeviceInfo(idx)) if(idx < 0 || !Pa_GetDeviceInfo(idx))
throw std::runtime_error("foo"); throw std::runtime_error("foo");
} catch(std::exception& e) { } catch(std::exception& e) {

View file

@ -40,7 +40,6 @@
#include <math.h> #include <math.h>
#include <cassert> #include <cassert>
#include <boost/lexical_cast.hpp>
#include <wx/wx.h> #include <wx/wx.h>
#include <wx/event.h> #include <wx/event.h>

View file

@ -21,7 +21,6 @@
#include "library/directory.hpp" #include "library/directory.hpp"
#include "library/string.hpp" #include "library/string.hpp"
#include "library/zip.hpp" #include "library/zip.hpp"
#include <boost/lexical_cast.hpp>
#include "platform/wxwidgets/platform.hpp" #include "platform/wxwidgets/platform.hpp"
#include "platform/wxwidgets/loadsave.hpp" #include "platform/wxwidgets/loadsave.hpp"
@ -624,8 +623,8 @@ void wxwin_project::on_filename_change(wxCommandEvent& e)
{ {
CHECK_UI_THREAD; CHECK_UI_THREAD;
try { try {
boost::lexical_cast<int64_t>(tostdstring(rtc_sec->GetValue())); raw_lexical_cast<int64_t>(tostdstring(rtc_sec->GetValue()));
if(boost::lexical_cast<int64_t>(tostdstring(rtc_subsec->GetValue())) < 0) if(raw_lexical_cast<int64_t>(tostdstring(rtc_subsec->GetValue())) < 0)
throw 42; throw 42;
size_t lines = authors->GetNumberOfLines(); size_t lines = authors->GetNumberOfLines();
for(size_t i = 0; i < lines; i++) { for(size_t i = 0; i < lines; i++) {
@ -705,9 +704,9 @@ struct moviefile& wxwin_project::make_movie()
*target = zip::readrel(sf, ""); *target = zip::readrel(sf, "");
} }
} }
f.movie_rtc_second = f.dyn.rtc_second = boost::lexical_cast<int64_t>(tostdstring(rtc_sec->GetValue())); f.movie_rtc_second = f.dyn.rtc_second = raw_lexical_cast<int64_t>(tostdstring(rtc_sec->GetValue()));
f.movie_rtc_subsecond = f.dyn.rtc_subsecond = f.movie_rtc_subsecond = f.dyn.rtc_subsecond =
boost::lexical_cast<int64_t>(tostdstring(rtc_subsec->GetValue())); raw_lexical_cast<int64_t>(tostdstring(rtc_subsec->GetValue()));
if(f.movie_rtc_subsecond < 0) if(f.movie_rtc_subsecond < 0)
throw std::runtime_error("RTC subsecond must be positive"); throw std::runtime_error("RTC subsecond must be positive");
auto ctrldata = inst.rom->controllerconfig(f.settings); auto ctrldata = inst.rom->controllerconfig(f.settings);

View file

@ -88,15 +88,15 @@ namespace
try { try {
bad_what = "Bad low calibration value"; bad_what = "Bad low calibration value";
minus = boost::lexical_cast<int64_t>(tostdstring(low->GetValue())); minus = raw_lexical_cast<int64_t>(tostdstring(low->GetValue()));
bad_what = "Bad middle calibration value"; bad_what = "Bad middle calibration value";
zero = boost::lexical_cast<int64_t>(tostdstring(mid->GetValue())); zero = raw_lexical_cast<int64_t>(tostdstring(mid->GetValue()));
bad_what = "Bad high calibration value"; bad_what = "Bad high calibration value";
plus = boost::lexical_cast<int32_t>(tostdstring(hi->GetValue())); plus = raw_lexical_cast<int32_t>(tostdstring(hi->GetValue()));
bad_what = "Bad neutral zone width"; bad_what = "Bad neutral zone width";
neutral = boost::lexical_cast<int64_t>(tostdstring(null->GetValue())); neutral = raw_lexical_cast<int64_t>(tostdstring(null->GetValue()));
bad_what = "Bad threshold (range is 0 - 1)"; bad_what = "Bad threshold (range is 0 - 1)";
threshold = boost::lexical_cast<double>(tostdstring(thresh->GetValue())); threshold = raw_lexical_cast<double>(tostdstring(thresh->GetValue()));
if(threshold <= 0 || threshold >= 1) if(threshold <= 0 || threshold >= 1)
throw 42; throw 42;
pressure = _pressure->GetValue(); pressure = _pressure->GetValue();

View file

@ -217,7 +217,7 @@ namespace
prefix = a.substr(9); prefix = a.substr(9);
else if(a.length() >= 9 && a.substr(0, 9) == "--length=") else if(a.length() >= 9 && a.substr(0, 9) == "--length=")
try { try {
length = boost::lexical_cast<uint64_t>(a.substr(9)); length = raw_lexical_cast<uint64_t>(a.substr(9));
if(!length) if(!length)
throw std::runtime_error("Length out of range (1-)"); throw std::runtime_error("Length out of range (1-)");
if(overdump_mode) if(overdump_mode)
@ -229,7 +229,7 @@ namespace
} }
else if(a.length() >= 18 && a.substr(0, 18) == "--overdump-length=") else if(a.length() >= 18 && a.substr(0, 18) == "--overdump-length=")
try { try {
overdump_length = boost::lexical_cast<uint64_t>(a.substr(18)); overdump_length = raw_lexical_cast<uint64_t>(a.substr(18));
overdump_mode = true; overdump_mode = true;
if(length) if(length)
throw std::runtime_error("--length and --overdump-length are " throw std::runtime_error("--length and --overdump-length are "