If you compile with the Clang option -fshort-wchar, then wchar_t will get
treated as 16-bit instead of the default unix-world 32-bit. Whichever you
are building with, check out the functions UTF16ToString()+stringToUTF16()
and UTF32ToString()+stringToUTF32(). Here's a test that demonstrates their
use: https://github.com/kripken/emscripten/blob/master/tests/utf32.cpp


2014-04-01 2:07 GMT+03:00 Mark Hahn <[email protected]>:

> Thanks.  I guess I'm stuck with looping for now.  At least it is looping
> in JS and not in C.
>
>
> On Mon, Mar 31, 2014 at 3:51 PM, Chad Austin <[email protected]> wrote:
>
>> C++11 has four character types:
>>
>> char: 1 byte
>> wchar_t: unspecified character type equal to or larger than char (in
>> practice, 16-bit on some platforms, 32-bit on others)
>> char16_t: 16-bit quantity representing a UTF-16 code unit
>> char32_t: 32-bit quantity representing a Unicode code point
>>
>> JavaScript strings, unfortunately, happen to be defined as arrays of
>> UTF-16 code units.
>>
>> Thus, if you assume that your application uses wchar_t as if it was
>> char16_t, which it sounds like you are, then you can map directly from
>> std::wstring or wchar_t* to JavaScript strings.
>>
>> embind, as policy, assumes that wchar_t is approximately equal to
>> char16_t.
>>
>> I don't believe there is a more efficient mechanism than looping from
>> character to character in JavaScript.  I think someone once proposed a set
>> of proper ArrayBuffer -> String text decoders, but I don't know if that
>> proposal gained traction.
>>
>>
>> On Mon, Mar 31, 2014 at 3:46 PM, Mark Hahn <[email protected]> wrote:
>>
>>> My C app uses all wchar_t (16-bit chars).  How do I send strings of
>>> these back and forth between C and JS?  I am currently looping through
>>> char by char but this seems inefficient since JS is already using 16-bit
>>> strings.
>>>
>>> Any ideas?
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Chad Austin
>> Technical Director, IMVU
>> http://engineering.imvu.com <http://www.imvu.com/members/Chad/>
>> http://chadaustin.me
>>
>>
>>  --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "emscripten-discuss" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/emscripten-discuss/R0-SDIRfRho/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to