UTF-16 encoding.
More...
#include <encodings.h>
|
template<typename OutputStream > |
static void | Encode (OutputStream &os, unsigned codepoint) |
|
template<typename InputStream > |
static bool | Decode (InputStream &is, unsigned *codepoint) |
|
template<typename InputStream , typename OutputStream > |
static bool | Validate (InputStream &is, OutputStream &os) |
|
template<typename CharType = wchar_t>
struct UTF16< CharType >
UTF-16 encoding.
http://en.wikipedia.org/wiki/UTF-16 http://tools.ietf.org/html/rfc2781
- Template Parameters
-
CharType | Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead. |
- Note
- implements Encoding concept
-
For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness. For streaming, use UTF16LE and UTF16BE, which handle endianness.
template<typename CharType = wchar_t>
typedef CharType UTF16< CharType >::Ch |
template<typename CharType = wchar_t>
Definition: encodings.h:245
template<typename CharType = wchar_t>
template<typename InputStream >
static bool UTF16< CharType >::Decode |
( |
InputStream & |
is, |
|
|
unsigned * |
codepoint |
|
) |
| |
|
inlinestatic |
266 if (c < 0xD800 || c > 0xDFFF) {
270 else if (c <= 0xDBFF) {
271 *codepoint = (c & 0x3FF) << 10;
273 *codepoint |= (c & 0x3FF);
274 *codepoint += 0x10000;
275 return c >= 0xDC00 && c <= 0xDFFF;
RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >=2)
CharType Ch
Definition: encodings.h:242
template<typename CharType = wchar_t>
template<typename OutputStream >
static void UTF16< CharType >::Encode |
( |
OutputStream & |
os, |
|
|
unsigned |
codepoint |
|
) |
| |
|
inlinestatic |
250 if (codepoint <= 0xFFFF) {
252 os.Put(static_cast<typename OutputStream::Ch>(codepoint));
256 unsigned v = codepoint - 0x10000;
257 os.Put(static_cast<typename OutputStream::Ch>((v >> 10) | 0xD800));
258 os.Put((v & 0x3FF) | 0xDC00);
RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >=2)
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:344
template<typename CharType = wchar_t>
UTF16< CharType >::RAPIDJSON_STATIC_ASSERT |
( |
sizeof(Ch) >= |
2 | ) |
|
template<typename CharType = wchar_t>
template<typename InputStream , typename OutputStream >
static bool UTF16< CharType >::Validate |
( |
InputStream & |
is, |
|
|
OutputStream & |
os |
|
) |
| |
|
inlinestatic |
285 os.Put(c = is.Take());
286 if (c < 0xD800 || c > 0xDFFF)
288 else if (c <= 0xDBFF) {
289 os.Put(c = is.Take());
290 return c >= 0xDC00 && c <= 0xDFFF;
RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >=2)
CharType Ch
Definition: encodings.h:242
The documentation for this struct was generated from the following file: