ICU 78.2 78.2

Public Member Functions
U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range > Class Template Reference

A C++ "range" for validating iteration over all of the code points of a code unit range. More...

`#include <utfiterator.h>`

## Public Member Functions
| UTFStringCodePoints ()=default
| Constructs an empty C++ "range" object. More...
template<typename R = Range, typename = std::enable_if_t<!std::is_reference_v<R>>>
| UTFStringCodePoints (Range unitRange)
| Constructs a C++ "range" object over the code points in the string. More...
template<typename R = Range, typename = std::enable_if_t<std::is_reference_v<R>>, typename = void>
| UTFStringCodePoints (Range unitRange)
| Constructs a C++ "range" object over the code points in the string, keeping a reference to the code unit range. More...
| UTFStringCodePoints (const UTFStringCodePoints &other)=default
| Copy constructor. More...
UTFStringCodePoints & | operator= (const UTFStringCodePoints &other)=default
| Copy assignment operator. More...
auto | begin ()
template<typename R = Range, typename = std::enable_if_t<prv::range<const R>>>
auto | begin () const
auto | end ()
template<typename R = Range, typename = std::enable_if_t<prv::range<const R>>>
auto | end () const
auto | rbegin () const
auto | rend () const

## Detailed Description

### template<typename CP32, UTFIllFormedBehavior behavior, typename Range>
class U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >

A C++ "range" for validating iteration over all of the code points of a code unit range.

Call utfStringCodePoints() to have the compiler deduce the Range type.

UTFStringCodePoints is conditionally borrowed; that is, if Range is a borrowed range so is UTFStringCodePoints<CP32, behavior, Range>. Note that when given a range r that is an lvalue and is not a view, utfStringCodePoints(r) uses a ref_view of r as the Range type, which is a borrowed range. In practice, this means that given a container variable r, the iterators of utfStringCodePoints(r) can be used as long as iterators on r are valid, without having to keep utfStringCodePoints(r) around. For instance:

std::u8string s = "𒇧𒇧";
// it outlives utfStringCodePoints<char32_t>(s).
auto it = utfStringCodePoints<char32_t>(s).begin();
++it;
char32_t second_code_point = it->codePoint(); // OK.

Template Parameters

  CP32 | Code point type: UChar32 (=int32_t) or char32_t or uint32_t; should be signed if UTF_BEHAVIOR_NEGATIVE
  behavior | How to handle ill-formed Unicode strings
  Range | A C++ "range" of Unicode UTF-8/16/32 code units

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

See also
  utfStringCodePoints

Definition at line 1777 of file utfiterator.h.

## Constructor & Destructor Documentation

## ◆ UTFStringCodePoints() [1/4]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::UTFStringCodePoints | ( |  | ) |
| default

Constructs an empty C++ "range" object.

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

## ◆ UTFStringCodePoints() [2/4]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >
template<typename R = Range, typename = std::enable_if_t<!std::is_reference_v<R>>>

U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::UTFStringCodePoints | ( | Range | unitRange | ) |
| inline explicit

Constructs a C++ "range" object over the code points in the string.

Parameters

  unitRange | input range

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1792 of file utfiterator.h.

## ◆ UTFStringCodePoints() [3/4]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >
template<typename R = Range, typename = std::enable_if_t<std::is_reference_v<R>>, typename = void>

U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::UTFStringCodePoints | ( | Range | unitRange | ) |
| inline explicit

Constructs a C++ "range" object over the code points in the string, keeping a reference to the code unit range.

This overload is used by utfStringCodePoints in C++17; in C+20, a ref_view is used instead (via views::all).

Parameters

  unitRange | input range

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1802 of file utfiterator.h.

## ◆ UTFStringCodePoints() [4/4]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::UTFStringCodePoints | ( | const UTFStringCodePoints< CP32, behavior, Range > & | other | ) |
| default

Copy constructor.

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

## Member Function Documentation

## ◆ begin() [1/2]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::begin | ( |  | ) |
| inline

Returns
  the range start iterator

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1814 of file utfiterator.h.

Referenced by U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::rend().

## ◆ begin() [2/2]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >
template<typename R = Range, typename = std::enable_if_t<prv::range<const R>>>

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::begin | ( |  | ) | const
| inline

Returns
  the range start iterator

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1823 of file utfiterator.h.

## ◆ end() [1/2]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::end | ( |  | ) |
| inline

Returns
  the range limit (exclusive end) iterator

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1831 of file utfiterator.h.

Referenced by U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::rbegin().

## ◆ end() [2/2]

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >
template<typename R = Range, typename = std::enable_if_t<prv::range<const R>>>

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::end | ( |  | ) | const
| inline

Returns
  the range limit (exclusive end) iterator

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1850 of file utfiterator.h.

## ◆ operator=()

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

UTFStringCodePoints& U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::operator= | ( | const UTFStringCodePoints< CP32, behavior, Range > & | other | ) |
| default

Copy assignment operator.

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

## ◆ rbegin()

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::rbegin | ( |  | ) | const
| inline

Returns
  std::reverse_iterator(end())

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1868 of file utfiterator.h.

References U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::end().

## ◆ rend()

template<typename CP32 , UTFIllFormedBehavior behavior, typename Range >

auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::rend | ( |  | ) | const
| inline

Returns
  std::reverse_iterator(begin())

Draft:
  This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1876 of file utfiterator.h.

References U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::begin().

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

- common/unicode/utfiterator.h