diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-06-25 21:38:56 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-06-25 21:38:56 +0100 |
| commit | 7ffed930aba6f84eb48c8f7f925e59247b8b1dc3 (patch) | |
| tree | b99ac21d2a0370330bd7c28cf39e7e366bc6292e | |
| parent | 4fa8274be83aeaa0c9503a778b2b17f673570723 (diff) | |
Add another raw_convert type.
| -rw-r--r-- | src/locale_convert.cc | 13 | ||||
| -rw-r--r-- | src/locale_convert.h | 4 | ||||
| -rw-r--r-- | src/raw_convert.cc | 7 | ||||
| -rw-r--r-- | src/raw_convert.h | 4 |
4 files changed, 28 insertions, 0 deletions
diff --git a/src/locale_convert.cc b/src/locale_convert.cc index 46d5507f..915cac82 100644 --- a/src/locale_convert.cc +++ b/src/locale_convert.cc @@ -269,6 +269,19 @@ dcp::locale_convert (string x, int, bool) } template<> +unsigned long long +dcp::locale_convert (string x, int, bool) +{ + unsigned long long y = 0; +#ifdef LIBDCP_WINDOWS + __mingw_sscanf (x.c_str(), "%llud", &y); +#else + sscanf (x.c_str(), "%llud", &y); +#endif + return y; +} + +template<> float dcp::locale_convert (string x, int, bool) { diff --git a/src/locale_convert.h b/src/locale_convert.h index d8d84711..aaf0dd6e 100644 --- a/src/locale_convert.h +++ b/src/locale_convert.h @@ -144,6 +144,10 @@ long long locale_convert (std::string x, int, bool); template <> +unsigned long long +locale_convert (std::string x, int, bool); + +template <> float locale_convert (std::string x, int, bool); diff --git a/src/raw_convert.cc b/src/raw_convert.cc index 7b4e6c6d..b4dcb5be 100644 --- a/src/raw_convert.cc +++ b/src/raw_convert.cc @@ -211,6 +211,13 @@ dcp::raw_convert (string v, int precision, bool fixed) } template <> +unsigned long long +dcp::raw_convert (string v, int precision, bool fixed) +{ + return locale_convert<unsigned long long> (make_local (v), precision, fixed); +} + +template <> int dcp::raw_convert (char const * v, int precision, bool fixed) { diff --git a/src/raw_convert.h b/src/raw_convert.h index c7b04823..fb3c7954 100644 --- a/src/raw_convert.h +++ b/src/raw_convert.h @@ -137,6 +137,10 @@ long long raw_convert (std::string v, int, bool); template <> +unsigned long long +raw_convert (std::string v, int, bool); + +template <> int raw_convert (char const * v, int, bool); |
