X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Funicode.cpp;h=6c51e0f0378bd9aa35d9b6c209da8ab670ccedef;hb=848c89564fce9c4bfec79b915746dc6bc47abc3d;hp=43b327b8010bf7d3e1d4f065c2ef13b4a181e7cf;hpb=492562091ebd35cf69ec6a6175df84ade711af9a;p=lyx.git diff --git a/src/support/unicode.cpp b/src/support/unicode.cpp index 43b327b801..6c51e0f037 100644 --- a/src/support/unicode.cpp +++ b/src/support/unicode.cpp @@ -307,4 +307,40 @@ ucs4_to_eightbit(char_type const * ucs4str, size_t ls, string const & encoding) return iconv_convert(processors[encoding], ucs4str, ls); } + +char ucs4_to_eightbit(char_type ucs4, string const & encoding) +{ + static map processors; + map::iterator it = processors.find(encoding); + if (it == processors.end()) { + IconvProcessor processor(encoding.c_str(), ucs4_codeset); + it = processors.insert(make_pair(encoding, processor)).first; + } + + char out; + int const bytes = it->second.convert((char *)(&ucs4), 4, &out, 1); + if (bytes > 0) + return out; + return 0; +} + + +void ucs4_to_multibytes(char_type ucs4, vector & out, + string const & encoding) +{ + static map processors; + map::iterator it = processors.find(encoding); + if (it == processors.end()) { + IconvProcessor processor(encoding.c_str(), ucs4_codeset); + it = processors.insert(make_pair(encoding, processor)).first; + } + + out.resize(4); + int bytes = it->second.convert((char *)(&ucs4), 4, &out[0], 4); + if (bytes > 0) + out.resize(bytes); + else + out.clear(); +} + } // namespace lyx