86 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
87 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
88 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
89 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
90 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
91 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
92 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
93 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
94 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
99 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
100 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
101 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
162 return ((
c0 & 0x1fu) << 6) | (
c1 & 0x3fu);
167 if (
p[1] ==
'\0' ||
p[2] ==
'\0')
173 return ((
c0 & 0x0fu) << 12) | ((
c1 & 0x3fu) << 6) | (
c2 & 0x3fu);
178 if (
p[1] ==
'\0' ||
p[2] ==
'\0' ||
p[3] ==
'\0')
187 return ((
c0 & 0x03u) << 18) | ((
c1 & 0x3fu) << 12) | ((
c2 & 0x3fu) << 6) | (
c3 & 0x3fu);
203 return sb.releaseString();
217 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
222 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 6) & 0x3fu)));
223 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
228 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 12) & 0x3fu)));
229 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 6) & 0x3fu)));
230 sb +=
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
246 p[0] =
static_cast<char>(
static_cast<UInt8>(0xc0u | (
ucs4char >> 6)));
247 p[1] =
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
251 p[0] =
static_cast<char>(
static_cast<UInt8>(0xe0u | (
ucs4char >> 12)));
252 p[1] =
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 6) & 0x3fu)));
253 p[2] =
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
257 p[0] =
static_cast<char>(
static_cast<UInt8>(0xf0u | (
ucs4char >> 18)));
258 p[1] =
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 12) & 0x3fu)));
259 p[2] =
static_cast<char>(
static_cast<UInt8>(0x80u | ((
ucs4char >> 6) & 0x3fu)));
260 p[3] =
static_cast<char>(
static_cast<UInt8>(0x80u | (
ucs4char & 0x3fu)));
271 const char* begin =
input.c_str();
272 const char* end = begin +
input.length();
274 const char*
p = begin;
293 BLOCXX_THROW(InvalidUTF8Exception, Format(
"Length: %1, input = %2, p = %3",
303 rval.push_back(((
c0 & 0x1fu) << 6) | (
c1 & 0x3fu));
310 if (
p[1] ==
'\0' ||
p[2] ==
'\0')
314 BLOCXX_THROW(InvalidUTF8Exception, Format(
"Length: %1, input = %2, p = %3",
326 rval.push_back(((
c0 & 0x0fu) << 12) | ((
c1 & 0x3fu) << 6) | (
c2 & 0x3fu));
335 BLOCXX_THROW(InvalidUTF8Exception, Format(
"Length: %1, input = %2, p = %3",
350 BLOCXX_THROW(InvalidUTF8Exception, Format(
"Length: %1, input = %2, p = %3",
390 return sb.releaseString();
436template <
typename TransformT>
476template <
typename TransformT>
497 return rval.releaseString();
2039struct MappingOrdering
2041 bool operator()(
const CaseMapping&
x,
const CaseMapping&
y)
2043 return x.codePoint <
y.codePoint;
2049 Transformer(
const CaseMapping*
const begin,
const CaseMapping*
const end)
2057 CaseMapping val = { in, 0 };
2058 const CaseMapping*
i = std::lower_bound(m_begin, m_end, val, MappingOrdering());
2059 if (
i == m_end ||
i->codePoint != in)