template class EE::Utf<16>

Overview

Specialization of the Utf template for UTF-16. More…

#include <utf.hpp>

template <>
class Utf<16> {
public:
    // methods

    template <typename In>
    static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0, bool byteSwap = false);

    template <typename Out>
    static Out encode(Uint32 input, Out output, Uint16 replacement = 0);

    template <typename In>
    static In next(In begin, In end);

    template <typename In>
    static std::size_t count(In begin, In end);

    template <typename In, typename Out>
    static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale());

    template <typename In, typename Out>
    static Out fromWide(In begin, In end, Out output);

    template <typename In, typename Out>
    static Out fromLatin1(In begin, In end, Out output);

    template <typename In, typename Out>
    static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale());

    template <typename In, typename Out>
    static Out toWide(In begin, In end, Out output, wchar_t replacement = 0);

    template <typename In, typename Out>
    static Out toLatin1(In begin, In end, Out output, char replacement = 0);

    template <typename In, typename Out>
    static Out toUtf8(In begin, In end, Out output);

    template <typename In, typename Out>
    static Out toUtf16(In begin, In end, Out output);

    template <typename In, typename Out>
    static Out toUtf32(In begin, In end, Out output, bool byteSwap = false);
};

Detailed Documentation

Specialization of the Utf template for UTF-16.

Methods

template <typename In>
static In decode(In begin, In end, Uint32& output, Uint32 replacement = 0, bool byteSwap = false)

Decode a single UTF-16 character.

Decoding a character means finding its unique 32-bits code (called the codepoint) in the Unicode standard.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Codepoint of the decoded UTF-16 character

replacement

Replacement character to use in case the UTF-8 sequence is invalid

Returns:

Iterator pointing to one past the last read element of the input sequence

template <typename Out>
static Out encode(Uint32 input, Out output, Uint16 replacement = 0)

Encode a single UTF-16 character.

Encoding a character means converting a unique 32-bits code (called the codepoint) in the target encoding, UTF-16.

Parameters:

input

Codepoint to encode as UTF-16

output

Iterator pointing to the beginning of the output sequence

replacement

Replacement for characters not convertible to UTF-16 (use 0 to skip them)

Returns:

Iterator to the end of the output sequence which has been written

template <typename In>
static In next(In begin, In end)

Advance to the next UTF-16 character.

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

Returns:

Iterator pointing to one past the last read element of the input sequence

template <typename In>
static std::size_t count(In begin, In end)

Count the number of characters of a UTF-16 sequence.

This function is necessary for multi-elements encodings, as a single character may use more than 1 storage element, thus the total size can be different from (begin - end).

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

Returns:

Iterator pointing to one past the last read element of the input sequence

template <typename In, typename Out>
static Out fromAnsi(In begin, In end, Out output, const std::locale& locale = std::locale())

Convert an ANSI characters range to UTF-16.

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

locale

Locale to use for conversion

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out fromWide(In begin, In end, Out output)

Convert a wide characters range to UTF-16.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out fromLatin1(In begin, In end, Out output)

Convert a latin-1 (ISO-8859-1) characters range to UTF-16.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toAnsi(In begin, In end, Out output, char replacement = 0, const std::locale& locale = std::locale())

Convert an UTF-16 characters range to ANSI characters.

The current global locale will be used by default, unless you pass a custom one in the locale parameter.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

replacement

Replacement for characters not convertible to ANSI (use 0 to skip them)

locale

Locale to use for conversion

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toWide(In begin, In end, Out output, wchar_t replacement = 0)

Convert an UTF-16 characters range to wide characters.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

replacement

Replacement for characters not convertible to wide (use 0 to skip them)

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toLatin1(In begin, In end, Out output, char replacement = 0)

Convert an UTF-16 characters range to latin-1 (ISO-8859-1) characters.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

replacement

Replacement for characters not convertible to wide (use 0 to skip them)

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toUtf8(In begin, In end, Out output)

Convert a UTF-16 characters range to UTF-8.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toUtf16(In begin, In end, Out output)

Convert a UTF-16 characters range to UTF-16.

This functions does nothing more than a direct copy; it is defined only to provide the same interface as other specializations of the EE::Utf<> template, and allow generic code to be written on top of it.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

Returns:

Iterator to the end of the output sequence which has been written

template <typename In, typename Out>
static Out toUtf32(In begin, In end, Out output, bool byteSwap = false)

Convert a UTF-16 characters range to UTF-32.

Parameters:

begin

Iterator pointing to the beginning of the input sequence

end

Iterator pointing to the end of the input sequence

output

Iterator pointing to the beginning of the output sequence

Returns:

Iterator to the end of the output sequence which has been written