rendered paste bodyint String::copyToUTF8 (uint8* buffer) const
{
#if JUCE_STRINGS_ARE_UNICODE
int num = 0, index = 0;
for (;;)
{
const uint32 c = (uint32) text->text [index++];
if (c >= 0x80)
{
int numExtraBytes = 1;
if (c >= 0x800)
{
++numExtraBytes;
if (c >= 0x10000)
{
++numExtraBytes;
if (c >= 0x200000)
{
++numExtraBytes;
if (c >= 0x4000000)
++numExtraBytes;
}
}
}
if (buffer != 0)
{
buffer [num++] = (uint8) ((0xff << (7 - numExtraBytes)) | (c >> (numExtraBytes * 6)));
while (--numExtraBytes >= 0)
buffer [num++] = (uint8) (0x80 | (0x3f & (c >> (numExtraBytes * 6))));
}
else
{
num += numExtraBytes + 1;
}
}
else
{
if (buffer != 0)
buffer [num] = (uint8) c;
++num;
}
if (c == 0)
break;
}
return num;
#else
const int numBytes = length() + 1;
if (buffer != 0)
copyToBuffer ((char*) buffer, numBytes);
return numBytes;
#endif
}