X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flocale_convert.cc;h=133c8a3a2e0b00af9b8e24ea768b3afe897c0d11;hb=1215fe2471b6d45d61d5ae4e36b1c16c8bca3e0f;hp=3858006ef6fe78f71498bce8321724af6cebabe8;hpb=eec238a778d631b8549c640178e1ab28b07505f4;p=libdcp.git diff --git a/src/locale_convert.cc b/src/locale_convert.cc index 3858006e..133c8a3a 100644 --- a/src/locale_convert.cc +++ b/src/locale_convert.cc @@ -36,6 +36,7 @@ #include using std::string; +using std::wstring; template<> string @@ -51,25 +52,55 @@ string dcp::locale_convert (unsigned int x, int, bool) { char buffer[64]; - snprintf (buffer, sizeof(buffer), "%ud", x); + snprintf (buffer, sizeof(buffer), "%u", x); return buffer; } template<> string -dcp::locale_convert (int64_t x, int, bool) +dcp::locale_convert (long int x, int, bool) { char buffer[64]; - snprintf (buffer, sizeof(buffer), "%" PRId64, x); +#ifdef LIBDCP_WINDOWS + __mingw_snprintf (buffer, sizeof(buffer), "%ld", x); +#else + snprintf (buffer, sizeof(buffer), "%ld", x); +#endif return buffer; } template<> string -dcp::locale_convert (uint64_t x, int, bool) +dcp::locale_convert (unsigned long int x, int, bool) { char buffer[64]; - snprintf (buffer, sizeof(buffer), "%" PRIu64, x); + snprintf (buffer, sizeof(buffer), "%lu", x); + return buffer; +} + +template<> +string +dcp::locale_convert (long long int x, int, bool) +{ + char buffer[64]; +#ifdef LIBDCP_WINDOWS + __mingw_snprintf (buffer, sizeof(buffer), "%lld", x); +#else + snprintf (buffer, sizeof(buffer), "%lld", x); +#endif + return buffer; +} + +template<> +string +dcp::locale_convert (unsigned long long int x, int, bool) +{ + char buffer[64]; +#ifdef LIBDCP_WINDOWS + __mingw_snprintf (buffer, sizeof(buffer), "%llu", x); +#else + snprintf (buffer, sizeof(buffer), "%llu", x); +#endif return buffer; } @@ -124,6 +155,30 @@ dcp::locale_convert (char const * x, int, bool) return x; } +template<> +string +dcp::locale_convert (wchar_t const * x, int, bool) +{ + wstring s (x); + return string (s.begin(), s.end()); +} + +template<> +string +dcp::locale_convert (char x, int, bool) +{ + string s; + s += x; + return s; +} + +template<> +string +dcp::locale_convert (boost::filesystem::path x, int, bool) +{ + return x.string(); +} + template<> int dcp::locale_convert (string x, int, bool) @@ -134,11 +189,24 @@ dcp::locale_convert (string x, int, bool) } template<> -int64_t +long +dcp::locale_convert (string x, int, bool) +{ + long int y = 0; + sscanf (x.c_str(), "%ld", &y); + return y; +} + +template<> +long long dcp::locale_convert (string x, int, bool) { - int64_t y = 0; - sscanf (x.c_str(), "%" PRId64, &y); + long long y = 0; +#ifdef LIBDCP_WINDOWS + __mingw_sscanf (x.c_str(), "%lld", &y); +#else + sscanf (x.c_str(), "%lld", &y); +#endif return y; }