summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-06-12 16:08:25 +0100
committerCarl Hetherington <cth@carlh.net>2019-06-12 16:08:25 +0100
commit4fa8274be83aeaa0c9503a778b2b17f673570723 (patch)
tree658eb50fb5aa73614dfeb455d2cf39e43a699fd5 /src
parentb7c7e14463d91608b080a5a63fcfb4d330ced863 (diff)
Add another type to raw/locale convert.
Diffstat (limited to 'src')
-rw-r--r--src/locale_convert.cc13
-rw-r--r--src/locale_convert.h4
-rw-r--r--src/raw_convert.cc7
-rw-r--r--src/raw_convert.h4
4 files changed, 28 insertions, 0 deletions
diff --git a/src/locale_convert.cc b/src/locale_convert.cc
index 5164f89f..46d5507f 100644
--- a/src/locale_convert.cc
+++ b/src/locale_convert.cc
@@ -243,6 +243,19 @@ dcp::locale_convert (string x, int, bool)
}
template<>
+unsigned long
+dcp::locale_convert (string x, int, bool)
+{
+ unsigned long y = 0;
+#ifdef LIBDCP_WINDOWS
+ __mingw_sscanf (x.c_str(), "%lud", &y);
+#else
+ sscanf (x.c_str(), "%lud", &y);
+#endif
+ return y;
+}
+
+template<>
long long
dcp::locale_convert (string x, int, bool)
{
diff --git a/src/locale_convert.h b/src/locale_convert.h
index 7d09c8e7..d8d84711 100644
--- a/src/locale_convert.h
+++ b/src/locale_convert.h
@@ -136,6 +136,10 @@ long
locale_convert (std::string x, int, bool);
template <>
+unsigned long
+locale_convert (std::string x, int, bool);
+
+template <>
long long
locale_convert (std::string x, int, bool);
diff --git a/src/raw_convert.cc b/src/raw_convert.cc
index f51a10f6..7b4e6c6d 100644
--- a/src/raw_convert.cc
+++ b/src/raw_convert.cc
@@ -197,6 +197,13 @@ dcp::raw_convert (string v, int precision, bool fixed)
}
template <>
+unsigned long
+dcp::raw_convert (string v, int precision, bool fixed)
+{
+ return locale_convert<unsigned long> (make_local (v), precision, fixed);
+}
+
+template <>
long long
dcp::raw_convert (string v, int precision, bool fixed)
{
diff --git a/src/raw_convert.h b/src/raw_convert.h
index 4945c7f8..c7b04823 100644
--- a/src/raw_convert.h
+++ b/src/raw_convert.h
@@ -129,6 +129,10 @@ long
raw_convert (std::string v, int, bool);
template <>
+unsigned long
+raw_convert (std::string v, int, bool);
+
+template <>
long long
raw_convert (std::string v, int, bool);