diff options
author | artemp <artem@mapnik.org> | 2014-11-17 11:22:47 +0100 |
---|---|---|
committer | artemp <artem@mapnik.org> | 2014-11-17 11:22:47 +0100 |
commit | 66d64c7c12648b3f15181eb9d64e55d1a23ade34 (patch) | |
tree | a2f218b55cc644940a3b31f94d02c01316e408fa /platform/default/string_stdlib.cpp | |
parent | c8dea1024d6aa43749d5f8c0f2141a7010b5c3fb (diff) | |
download | qtlocation-mapboxgl-66d64c7c12648b3f15181eb9d64e55d1a23ade34.tar.gz |
use nunicode conditional case mapping (lowercase)
Diffstat (limited to 'platform/default/string_stdlib.cpp')
-rw-r--r-- | platform/default/string_stdlib.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/platform/default/string_stdlib.cpp b/platform/default/string_stdlib.cpp index 9639cd7b99..3b89a45043 100644 --- a/platform/default/string_stdlib.cpp +++ b/platform/default/string_stdlib.cpp @@ -31,19 +31,22 @@ std::string uppercase(const std::string& str) std::string lowercase(const std::string& str) { - boost::u8_to_u32_iterator<std::string::const_iterator> itr(str.begin()); - boost::u8_to_u32_iterator<std::string::const_iterator> end(str.end()); std::string output; - char buf[5]; - for (; itr!=end; ++itr) + char lo[5]; + char const* itr = str.c_str(); + char const* end = itr + str.length(); + char const* buf = 0; + uint32_t code_point; + for ( ; itr!=end;) { - char const* lo = nu_tolower(*itr); - if (lo != 0) output.append(lo); + + itr = _nu_tolower(itr, end, nu_utf8_read, &code_point, &buf, 0); + if (buf != 0) output.append(buf); else { - std::memset(buf, 0, 5); - nu_utf8_write(*itr, buf); - output.append(buf); + std::memset(lo, 0, 5); + nu_utf8_write(code_point, lo); + output.append(lo); } } return output; |