Boost.Nowide: boost::nowide::utf::utf_traits< CharType, size > Struct Template Reference

Boost.Nowide

Public Types | Static Public Member Functions | Static Public Attributes | List of all members
boost::nowide::utf::utf_traits< CharType, size > Struct Template Reference

UTF Traits class - functions to convert UTF sequences to and from Unicode code points. More...

`#include <boost/nowide/utf/utf.hpp>`

## Public Types
using | char_type = CharType

## Static Public Member Functions
template<typename Iterator >
static code_point | decode (Iterator &p, Iterator e)
static int | width (code_point value)
static int | trail_length (char_type c)
static bool | is_trail (char_type c)
static bool | is_lead (char_type c)
template<typename Iterator >
static Iterator | encode (code_point value, Iterator out)
template<typename Iterator >
static code_point | decode_valid (Iterator &p)

## Static Public Attributes
static const int | max_width

## Detailed Description

template<typename CharType, int size = sizeof(CharType)>
struct boost::nowide::utf::utf_traits< CharType, size >

UTF Traits class - functions to convert UTF sequences to and from Unicode code points.

## Member Typedef Documentation

## ◆ char_type

template<typename CharType , int size = sizeof(CharType)>

using boost::nowide::utf::utf_traits< CharType, size >::char_type = CharType

The type of the character

## Member Function Documentation

## ◆ decode()

template<typename CharType , int size = sizeof(CharType)>
template<typename Iterator >

static code_point boost::nowide::utf::utf_traits< CharType, size >::decode | ( | Iterator & | p,
|  | Iterator | e
| ) |  |
| static

Read one code point from the range [p,e) and return it.

- If the sequence that was read is incomplete sequence returns incomplete,
- If illegal sequence detected returns illegal

Requirements

- Iterator is valid input iterator

Postconditions

- p points to the last consumed character

## ◆ decode_valid()

template<typename CharType , int size = sizeof(CharType)>
template<typename Iterator >

static code_point boost::nowide::utf::utf_traits< CharType, size >::decode_valid | ( | Iterator & | p | ) |
| static

Decodes valid UTF sequence that is pointed by p into code point.

If the sequence is invalid or points to end the behavior is undefined

## ◆ encode()

template<typename CharType , int size = sizeof(CharType)>
template<typename Iterator >

static Iterator boost::nowide::utf::utf_traits< CharType, size >::encode | ( | code_point | value,
|  | Iterator | out
| ) |  |
| static

Convert valid Unicode code point value to the UTF sequence.

Requirements:

- value is valid code point
- out is an output iterator should be able to accept at least width(value) units

Returns the iterator past the last written code unit.

## ◆ is_lead()

template<typename CharType , int size = sizeof(CharType)>

static bool boost::nowide::utf::utf_traits< CharType, size >::is_lead | ( | char_type | c | ) |
| static

Returns true if c is lead code unit, always true of UTF-32

## ◆ is_trail()

template<typename CharType , int size = sizeof(CharType)>

static bool boost::nowide::utf::utf_traits< CharType, size >::is_trail | ( | char_type | c | ) |
| static

Returns true if c is trail code unit, always false for UTF-32

## ◆ trail_length()

template<typename CharType , int size = sizeof(CharType)>

static int boost::nowide::utf::utf_traits< CharType, size >::trail_length | ( | char_type | c | ) |
| static

Get the size of the trail part of variable length encoded sequence.

Returns -1 if C is not valid lead character

## ◆ width()

template<typename CharType , int size = sizeof(CharType)>

static int boost::nowide::utf::utf_traits< CharType, size >::width | ( | code_point | value | ) |
| static

The width of specific code point in the code units.

Requirement: value is a valid Unicode code point Returns value in range [1..max_width]

## Member Data Documentation

## ◆ max_width

template<typename CharType , int size = sizeof(CharType)>

const int boost::nowide::utf::utf_traits< CharType, size >::max_width
| static

Maximal width of valid sequence in the code units:

- UTF-8 - 4
- UTF-16 - 2
- UTF-32 - 1

The documentation for this struct was generated from the following file:

- boost/nowide/utf/utf.hpp