[core] add polyfill for codecvt for STLs that don't have it yet

This commit is contained in:
Konstantin Käfer
2018-06-21 14:44:00 +02:00
parent 536652ca20
commit 30e570aae7
6 changed files with 58 additions and 14 deletions

View File

@@ -1,25 +1,13 @@
#include <mbgl/util/utf.hpp>
#include <memory>
#include <locale>
// GCC 4.9 compatibility
#if !defined(__GNUC__) || __GNUC__ >= 5
#include <codecvt>
#else
#include <boost/locale/encoding_utf.hpp>
#endif
namespace mbgl {
namespace util {
std::u16string utf8_to_utf16::convert(std::string const& utf8) {
#if !defined(__GNUC__) || __GNUC__ >= 5
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter;
return converter.from_bytes(utf8);
#else
return boost::locale::conv::utf_to_utf<char16_t>(utf8.c_str(), utf8.c_str() + utf8.size());
#endif
std::u16string utf8_to_utf16::convert(const std::string& utf8) {
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>().from_bytes(utf8);
}
} // namespace util