# Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Public Types | Static Public Member Functions | Static Public Attributes

# boost::locale::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/locale/utf.hpp>`

List of all members.

## Public Types

typedef CharType | char_type

## 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::locale::utf::utf_traits< CharType, size >

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

## Member Typedef Documentation

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

typedef CharType boost::locale::utf::utf_traits< CharType, size >::char_type

The type of the character

## Member Function Documentation

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

static code_point boost::locale::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

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

static code_point boost::locale::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

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

static Iterator boost::locale::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.

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

static bool boost::locale::utf::utf_traits< CharType, size >::is_lead | ( | char_type | c | ) | `[static]`

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

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

static bool boost::locale::utf::utf_traits< CharType, size >::is_trail | ( | char_type | c | ) | `[static]`

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

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

static int boost::locale::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

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

static int boost::locale::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

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

const int boost::locale::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/locale/utf.hpp