ICU4C 79
Loading...
Searching...
No Matches
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.
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.
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.
 UTFStringCodePoints (const UTFStringCodePoints &other)=default
 Copy constructor.
UTFStringCodePoints & operator= (const UTFStringCodePoints &other)=default
 Copy assignment operator.
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
auto front () const
 Returns the CodeUnits for the first character/code point.
auto back () const
 Returns the CodeUnits for the last character/code point.

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.
constexpr UTFStringCodePointsAdaptor< CP32, behavior > utfStringCodePoints
Range adaptor function object returning a UTFStringCodePoints object that represents a "range" of cod...
Template Parameters
CP32Code point type: UChar32 (=int32_t) or char32_t or uint32_t; should be signed if UTF_BEHAVIOR_NEGATIVE
behaviorHow to handle ill-formed Unicode strings
RangeA 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 1807 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

Referenced by operator=(), and UTFStringCodePoints().

◆ 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)
inlineexplicit

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

Parameters
unitRangeinput range
Draft
This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1822 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)
inlineexplicit

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
unitRangeinput range
Draft
This API may be changed in the future versions and was introduced in ICU 78

Definition at line 1832 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

References UTFStringCodePoints().

Member Function Documentation

◆ back()

template<typename CP32, UTFIllFormedBehavior behavior, typename Range>
auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::back ( ) const
inline

Returns the CodeUnits for the last character/code point.

Requires that the range is not empty.

Returns
the CodeUnits for the last character/code point.
Draft
This API may be changed in the future versions and was introduced in ICU 79

Definition at line 1928 of file utfiterator.h.

References end().

◆ 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 1844 of file utfiterator.h.

Referenced by front(), and 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 1853 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 1861 of file utfiterator.h.

Referenced by back(), and 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 1880 of file utfiterator.h.

◆ front()

template<typename CP32, UTFIllFormedBehavior behavior, typename Range>
auto U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range >::front ( ) const
inline

Returns the CodeUnits for the first character/code point.

Requires that the range is not empty.

Returns
the CodeUnits for the first character/code point.
Draft
This API may be changed in the future versions and was introduced in ICU 79

Definition at line 1917 of file utfiterator.h.

References begin().

◆ 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

References UTFStringCodePoints().

◆ 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 1898 of file utfiterator.h.

References 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 1906 of file utfiterator.h.

References begin().


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