class axl::enc::Utf16

#include <axl_enc_Utf.h>

class Utf16
{
public:
    // typedefs

    typedef utf16_t C;

    // enums

    enum SurrogateKind;

    // methods

    static
    UtfKind
    getUtfKind();

    static
    const uint8_t*
    getBom();

    static
    size_t
    getBomLength();

    static
    bool
    isLeadSurrogate(uint16_t c);

    static
    bool
    isTrailSurrogate(uint16_t c);

    static
    bool
    needSurrogate(uint32_t x);

    static
    utf16_t
    getLeadSurrogate(uint32_t x);

    static
    utf16_t
    getTrailSurrogate(uint32_t x);

    static
    utf32_t
    getSurrogateCodePoint(
        uint16_t lead,
        uint16_t trail
        );

    static
    size_t
    getDecodeCodePointLength(utf16_t c);

    static
    size_t
    getEncodeCodePointLength(utf32_t x);

    static
    utf32_t
    decodeCodePoint(const utf16_t* p);

    static
    void
    encodeCodePoint(
        utf16_t* p,
        utf32_t x
        );

    static
    size_t
    calcCodePointCount(
        const C* p,
        size_t length
        );
};