public string CharString(int cp, bool quoted, char[] charbuf)
{
var index = 0;
if (quoted) {
charbuf[index++] = (char)0x22;
}
if (cp < 0x10000) {
if (cp >= 0xd800 && cp < 0xe000) {
return null;
}
charbuf[index++] = (char)cp;
if (quoted) {
charbuf[index++] = (char)0x22;
}
return new String(charbuf, 0, index);
} else {
cp -= 0x10000;
charbuf[index++] = (char)((cp >> 10) + 0xd800);
charbuf[index++] = (char)((cp & 0x3ff) + 0xdc00);
if (quoted) {
charbuf[index++] = (char)0x22;
}
return new String(charbuf, 0, index);
}
}