MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / ConvertToWChar

Function ConvertToWChar

src/String.cpp:1717–1751  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1715{
1716
1717wchar_t *ConvertToWChar(const char *inStr, int *ioLen)
1718{
1719 int len = ioLen ? *ioLen : strlen(inStr);
1720
1721 wchar_t *result = (wchar_t *)NewGCPrivate(0,sizeof(wchar_t)*(len+1));
1722 int l = 0;
1723
1724 unsigned char *b = (unsigned char *)inStr;
1725 for(int i=0;i<len;)
1726 {
1727 int c = b[i++];
1728 if (c==0) break;
1729 else if( c < 0x80 )
1730 {
1731 result[l++] = c;
1732 }
1733 else if( c < 0xE0 )
1734 result[l++] = ( ((c & 0x3F) << 6) | (b[i++] & 0x7F) );
1735 else if( c < 0xF0 )
1736 {
1737 int c2 = b[i++];
1738 result[l++] = ( ((c & 0x1F) << 12) | ((c2 & 0x7F) << 6) | ( b[i++] & 0x7F) );
1739 }
1740 else
1741 {
1742 int c2 = b[i++];
1743 int c3 = b[i++];
1744 result[l++] = ( ((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 << 6) & 0x7F) | (b[i++] & 0x7F) );
1745 }
1746 }
1747 result[l] = '\0';
1748 if (ioLen)
1749 *ioLen = l;
1750 return result;
1751}
1752
1753
1754

Callers

nothing calls this directly

Calls 1

NewGCPrivateFunction · 0.85

Tested by

no test coverage detected