Файловый менеджер - Редактировать - /opt/alt/alt-nodejs20/root/usr/share/doc/alt-nodejs20-libicu-doc/utfiterator_8h.html
Назад
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.14"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>ICU 78.3: common/unicode/utfiterator.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">ICU 78.3  <span id="projectnumber">78.3</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.14 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_bdd9a5d540de89e9fe90efdfc6973a4f.html">common</a></li><li class="navelem"><a class="el" href="dir_f59c6450ff718ff1b085cfd1c36acbd7.html">unicode</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#typedef-members">Typedefs</a> | <a href="#enum-members">Enumerations</a> | <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <div class="title">utfiterator.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>C++ header-only API: C++ iterators over Unicode strings (=UTF-8/16/32 if well-formed). <a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="utypes_8h_source.html">unicode/utypes.h</a>"</code><br /> <code>#include <iterator></code><br /> <code>#include <string></code><br /> <code>#include <string_view></code><br /> <code>#include <type_traits></code><br /> <code>#include "<a class="el" href="utf16_8h_source.html">unicode/utf16.h</a>"</code><br /> <code>#include "<a class="el" href="utf8_8h_source.html">unicode/utf8.h</a>"</code><br /> <code>#include "<a class="el" href="uversion_8h_source.html">unicode/uversion.h</a>"</code><br /> </div> <p><a href="utfiterator_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1prv_1_1range__type.html">U_HEADER_ONLY_NAMESPACE::prv::range_type< Range, typename ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1prv_1_1range__type_3_01Range_00_01std_1_1void__t_3_01decltypf5078535dbcf2fa34be202d612eb2ece.html">U_HEADER_ONLY_NAMESPACE::prv::range_type< Range, std::void_t< decltype(std::declval< Range >().begin()), decltype(std::declval< Range >().end())> ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1prv_1_1is__basic__string__view.html">U_HEADER_ONLY_NAMESPACE::prv::is_basic_string_view< T ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1prv_1_1is__basic__string__view_3_01std_1_1basic__string__view_3_01Args_8_8_8_01_4_01_4.html">U_HEADER_ONLY_NAMESPACE::prv::is_basic_string_view< std::basic_string_view< Args... > ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1prv_1_1CodePointsIterator.html">U_HEADER_ONLY_NAMESPACE::prv::CodePointsIterator< CP32, skipSurrogates ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1AllCodePoints.html">U_HEADER_ONLY_NAMESPACE::AllCodePoints< CP32 ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A C++ "range" over all Unicode code points U+0000..U+10FFFF. <a href="classU__HEADER__ONLY__NAMESPACE_1_1AllCodePoints.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1AllScalarValues.html">U_HEADER_ONLY_NAMESPACE::AllScalarValues< CP32 ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A C++ "range" over all Unicode scalar values U+0000..U+D7FF & U+E000..U+10FFFF. <a href="classU__HEADER__ONLY__NAMESPACE_1_1AllScalarValues.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeCodeUnits.html">U_HEADER_ONLY_NAMESPACE::UnsafeCodeUnits< CP32, UnitIter, typename ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Result of decoding a code unit sequence for one code point. <a href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeCodeUnits.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1CodeUnits.html">U_HEADER_ONLY_NAMESPACE::CodeUnits< CP32, UnitIter, typename ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Result of validating and decoding a code unit sequence for one code point. <a href="classU__HEADER__ONLY__NAMESPACE_1_1CodeUnits.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFIterator.html">U_HEADER_ONLY_NAMESPACE::UTFIterator< CP32, behavior, UnitIter, LimitIter, typename ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Validating iterator over the code points in a Unicode string. <a href="classU__HEADER__ONLY__NAMESPACE_1_1UTFIterator.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFStringCodePoints.html">U_HEADER_ONLY_NAMESPACE::UTFStringCodePoints< CP32, behavior, Range ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A C++ "range" for validating iteration over all of the code points of a code unit range. <a href="classU__HEADER__ONLY__NAMESPACE_1_1UTFStringCodePoints.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1UTFStringCodePointsAdaptor.html">U_HEADER_ONLY_NAMESPACE::UTFStringCodePointsAdaptor< CP32, behavior ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFIterator.html">U_HEADER_ONLY_NAMESPACE::UnsafeUTFIterator< CP32, UnitIter, typename ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Non-validating iterator over the code points in a Unicode string. <a href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFIterator.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFStringCodePoints.html">U_HEADER_ONLY_NAMESPACE::UnsafeUTFStringCodePoints< CP32, Range ></a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A C++ "range" for non-validating iteration over all of the code points of a code unit range. <a href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFStringCodePoints.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFStringCodePointsAdaptor.html">U_HEADER_ONLY_NAMESPACE::UnsafeUTFStringCodePointsAdaptor< CP32 ></a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:ac9bd38a5248aa5282d2844324be20000"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">UTFIllFormedBehavior</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#ac9bd38a5248aa5282d2844324be20000">UTFIllFormedBehavior</a></td></tr> <tr class="memdesc:ac9bd38a5248aa5282d2844324be20000"><td class="mdescLeft"> </td><td class="mdescRight">Some defined behaviors for handling ill-formed Unicode strings. <a href="#ac9bd38a5248aa5282d2844324be20000">More...</a><br /></td></tr> <tr class="separator:ac9bd38a5248aa5282d2844324be20000"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac94512354a3c3757bd51504e17c42675"><td class="memTemplParams" colspan="2">template<typename Iter > </td></tr> <tr class="memitem:ac94512354a3c3757bd51504e17c42675"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#ac94512354a3c3757bd51504e17c42675">U_HEADER_ONLY_NAMESPACE::prv::iter_value_t</a> = typename std::iterator_traits< Iter >::value_type</td></tr> <tr class="separator:ac94512354a3c3757bd51504e17c42675"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a379c0d1e14b3a9a7e7ca33899d8fda6b"><td class="memTemplParams" colspan="2">template<typename Iter > </td></tr> <tr class="memitem:a379c0d1e14b3a9a7e7ca33899d8fda6b"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a379c0d1e14b3a9a7e7ca33899d8fda6b">U_HEADER_ONLY_NAMESPACE::prv::iter_difference_t</a> = typename std::iterator_traits< Iter >::difference_type</td></tr> <tr class="separator:a379c0d1e14b3a9a7e7ca33899d8fda6b"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> Enumerations</h2></td></tr> <tr class="memitem:ae96b61b479fe4d7b8e525787353d1d46"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">UTFIllFormedBehavior</a> { <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46a3a3ec2a3f0723ec5bc20765b895509f0">UTF_BEHAVIOR_NEGATIVE</a>, <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46a2e9b1ff0326a69017ff1ea55c9d7137d">UTF_BEHAVIOR_FFFD</a>, <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46a36d5d4b43747b3b7230fcd82daf8fb56">UTF_BEHAVIOR_SURROGATE</a> }</td></tr> <tr class="memdesc:ae96b61b479fe4d7b8e525787353d1d46"><td class="mdescLeft"> </td><td class="mdescRight">Some defined behaviors for handling ill-formed Unicode strings. <a href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">More...</a><br /></td></tr> <tr class="separator:ae96b61b479fe4d7b8e525787353d1d46"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:a81f9f64c82a3b29389483be3c65c581d"><td class="memTemplParams" colspan="2">template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter , typename LimitIter = UnitIter> </td></tr> <tr class="memitem:a81f9f64c82a3b29389483be3c65c581d"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a81f9f64c82a3b29389483be3c65c581d">U_HEADER_ONLY_NAMESPACE::utfIterator</a> (UnitIter start, UnitIter p, LimitIter limit)</td></tr> <tr class="memdesc:a81f9f64c82a3b29389483be3c65c581d"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFIterator.html" title="Validating iterator over the code points in a Unicode string. ">UTFIterator</a> factory function for start <= p < limit. <a href="utfiterator_8h.html#a81f9f64c82a3b29389483be3c65c581d">More...</a><br /></td></tr> <tr class="separator:a81f9f64c82a3b29389483be3c65c581d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a70b94948e46469f2252eace654ad2737"><td class="memTemplParams" colspan="2">template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter , typename LimitIter = UnitIter> </td></tr> <tr class="memitem:a70b94948e46469f2252eace654ad2737"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a70b94948e46469f2252eace654ad2737">U_HEADER_ONLY_NAMESPACE::utfIterator</a> (UnitIter p, LimitIter limit)</td></tr> <tr class="memdesc:a70b94948e46469f2252eace654ad2737"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFIterator.html" title="Validating iterator over the code points in a Unicode string. ">UTFIterator</a> factory function for start = p < limit. <a href="utfiterator_8h.html#a70b94948e46469f2252eace654ad2737">More...</a><br /></td></tr> <tr class="separator:a70b94948e46469f2252eace654ad2737"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a29e66074fd42156e7cd1928ba3e88860"><td class="memTemplParams" colspan="2">template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter > </td></tr> <tr class="memitem:a29e66074fd42156e7cd1928ba3e88860"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a29e66074fd42156e7cd1928ba3e88860">U_HEADER_ONLY_NAMESPACE::utfIterator</a> (UnitIter p)</td></tr> <tr class="memdesc:a29e66074fd42156e7cd1928ba3e88860"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFIterator.html" title="Validating iterator over the code points in a Unicode string. ">UTFIterator</a> factory function for a start or limit sentinel. <a href="utfiterator_8h.html#a29e66074fd42156e7cd1928ba3e88860">More...</a><br /></td></tr> <tr class="separator:a29e66074fd42156e7cd1928ba3e88860"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0173fdd0ff9c634956e829eaa5794465"><td class="memTemplParams" colspan="2">template<typename CP32 , typename UnitIter > </td></tr> <tr class="memitem:a0173fdd0ff9c634956e829eaa5794465"><td class="memTemplItemLeft" align="right" valign="top">auto </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a0173fdd0ff9c634956e829eaa5794465">U_HEADER_ONLY_NAMESPACE::unsafeUTFIterator</a> (UnitIter iter)</td></tr> <tr class="memdesc:a0173fdd0ff9c634956e829eaa5794465"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFIterator.html" title="Non-validating iterator over the code points in a Unicode string. ">UnsafeUTFIterator</a> factory function. <a href="utfiterator_8h.html#a0173fdd0ff9c634956e829eaa5794465">More...</a><br /></td></tr> <tr class="separator:a0173fdd0ff9c634956e829eaa5794465"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> Variables</h2></td></tr> <tr class="memitem:a603cf1c4c624736f3965c0dae31a5c79"><td class="memTemplParams" colspan="2">template<typename Iter > </td></tr> <tr class="memitem:a603cf1c4c624736f3965c0dae31a5c79"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a603cf1c4c624736f3965c0dae31a5c79">U_HEADER_ONLY_NAMESPACE::prv::forward_iterator</a></td></tr> <tr class="separator:a603cf1c4c624736f3965c0dae31a5c79"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae75399e99d2481183124f5f96b19b9e1"><td class="memTemplParams" colspan="2">template<typename Iter > </td></tr> <tr class="memitem:ae75399e99d2481183124f5f96b19b9e1"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#ae75399e99d2481183124f5f96b19b9e1">U_HEADER_ONLY_NAMESPACE::prv::bidirectional_iterator</a></td></tr> <tr class="separator:ae75399e99d2481183124f5f96b19b9e1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afb839c10d925301c6dad1daeb23be6d0"><td class="memTemplParams" colspan="2">template<typename Range > </td></tr> <tr class="memitem:afb839c10d925301c6dad1daeb23be6d0"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">U_HEADER_ONLY_NAMESPACE::prv::range</a> = range_type<Range>::value</td></tr> <tr class="separator:afb839c10d925301c6dad1daeb23be6d0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5296d8e44f40e0d0971832c9897437cb"><td class="memTemplParams" colspan="2">template<typename T > </td></tr> <tr class="memitem:a5296d8e44f40e0d0971832c9897437cb"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a5296d8e44f40e0d0971832c9897437cb">U_HEADER_ONLY_NAMESPACE::prv::is_basic_string_view_v</a> = is_basic_string_view<T>::value</td></tr> <tr class="separator:a5296d8e44f40e0d0971832c9897437cb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a984a43b6a404be5a37425475b5992285"><td class="memTemplParams" colspan="2">template<typename CP32 , UTFIllFormedBehavior behavior> </td></tr> <tr class="memitem:a984a43b6a404be5a37425475b5992285"><td class="memTemplItemLeft" align="right" valign="top">constexpr UTFStringCodePointsAdaptor< CP32, behavior > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#a984a43b6a404be5a37425475b5992285">U_HEADER_ONLY_NAMESPACE::utfStringCodePoints</a></td></tr> <tr class="memdesc:a984a43b6a404be5a37425475b5992285"><td class="mdescLeft"> </td><td class="mdescRight">Range adaptor function object returning a <a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UTFStringCodePoints.html" title="A C++ "range" for validating iteration over all of the code points of a code unit range...">UTFStringCodePoints</a> object that represents a "range" of code points in a code unit range, which validates while decoding. <a href="utfiterator_8h.html#a984a43b6a404be5a37425475b5992285">More...</a><br /></td></tr> <tr class="separator:a984a43b6a404be5a37425475b5992285"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae761307fb6f808f749d159a0203a7316"><td class="memTemplParams" colspan="2">template<typename CP32 > </td></tr> <tr class="memitem:ae761307fb6f808f749d159a0203a7316"><td class="memTemplItemLeft" align="right" valign="top">constexpr UnsafeUTFStringCodePointsAdaptor< CP32 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="utfiterator_8h.html#ae761307fb6f808f749d159a0203a7316">U_HEADER_ONLY_NAMESPACE::unsafeUTFStringCodePoints</a></td></tr> <tr class="memdesc:ae761307fb6f808f749d159a0203a7316"><td class="mdescLeft"> </td><td class="mdescRight">Range adaptor function object returning an <a class="el" href="classU__HEADER__ONLY__NAMESPACE_1_1UnsafeUTFStringCodePoints.html" title="A C++ "range" for non-validating iteration over all of the code points of a code unit range...">UnsafeUTFStringCodePoints</a> object that represents a "range" of code points in a code unit range. <a href="utfiterator_8h.html#ae761307fb6f808f749d159a0203a7316">More...</a><br /></td></tr> <tr class="separator:ae761307fb6f808f749d159a0203a7316"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>C++ header-only API: C++ iterators over Unicode strings (=UTF-8/16/32 if well-formed). </p> <p>Sample code: </p><div class="fragment"><div class="line"><span class="preprocessor">#include <string_view></span></div><div class="line"><span class="preprocessor">#include <iostream></span></div><div class="line"><span class="preprocessor">#include "<a class="code" href="utypes_8h.html">unicode/utypes.h</a>"</span></div><div class="line"><span class="preprocessor">#include "<a class="code" href="utfiterator_8h.html">unicode/utfiterator.h</a>"</span></div><div class="line"></div><div class="line"><span class="keyword">using</span> icu::header::utfIterator;</div><div class="line"><span class="keyword">using</span> icu::header::utfStringCodePoints;</div><div class="line"><span class="keyword">using</span> icu::header::unsafeUTFIterator;</div><div class="line"><span class="keyword">using</span> icu::header::unsafeUTFStringCodePoints;</div><div class="line"></div><div class="line">int32_t rangeLoop16(std::u16string_view s) {</div><div class="line"> <span class="comment">// We are just adding up the code points for minimal-code demonstration purposes.</span></div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> units : utfStringCodePoints<UChar32, UTF_BEHAVIOR_NEGATIVE>(s)) {</div><div class="line"> sum += units.codePoint(); <span class="comment">// < 0 if ill-formed</span></div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">int32_t loopIterPlusPlus16(std::u16string_view s) {</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<char32_t, UTF_BEHAVIOR_FFFD>(s);</div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.begin(), limit = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.end(); iter != limit;) {</div><div class="line"> sum += (*iter++).codePoint(); <span class="comment">// U+FFFD if ill-formed</span></div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">int32_t backwardLoop16(std::u16string_view s) {</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<UChar32, UTF_BEHAVIOR_SURROGATE>(s);</div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> start = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.begin(), iter = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.end(); start != iter;) {</div><div class="line"> sum += (*--iter).codePoint(); <span class="comment">// surrogate code point if unpaired / ill-formed</span></div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">int32_t reverseLoop8(std::string_view s) {</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<char32_t, UTF_BEHAVIOR_FFFD>(s);</div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.rbegin(), limit = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.rend(); iter != limit; ++iter) {</div><div class="line"> sum += iter->codePoint(); <span class="comment">// U+FFFD if ill-formed</span></div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">int32_t countCodePoints16(std::u16string_view s) {</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<UChar32, UTF_BEHAVIOR_SURROGATE>(s);</div><div class="line"> <span class="keywordflow">return</span> std::distance(<a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.begin(), <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.end());</div><div class="line">}</div><div class="line"></div><div class="line">int32_t unsafeRangeLoop16(std::u16string_view s) {</div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> units : unsafeUTFStringCodePoints<UChar32>(s)) {</div><div class="line"> sum += units.codePoint();</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">int32_t unsafeReverseLoop8(std::string_view s) {</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = unsafeUTFStringCodePoints<UChar32>(s);</div><div class="line"> int32_t sum = 0;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.rbegin(), limit = <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.rend(); iter != limit; ++iter) {</div><div class="line"> sum += iter->codePoint();</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> sum;</div><div class="line">}</div><div class="line"></div><div class="line">char32_t firstCodePointOrFFFD16(std::u16string_view s) {</div><div class="line"> <span class="keywordflow">if</span> (s.empty()) { <span class="keywordflow">return</span> 0xfffd; }</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<char32_t, UTF_BEHAVIOR_FFFD>(s);</div><div class="line"> <span class="keywordflow">return</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.begin()->codePoint();</div><div class="line">}</div><div class="line"></div><div class="line">std::string_view firstSequence8(std::string_view s) {</div><div class="line"> <span class="keywordflow">if</span> (s.empty()) { <span class="keywordflow">return</span> {}; }</div><div class="line"> <span class="keyword">auto</span> <a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a> = utfStringCodePoints<char32_t, UTF_BEHAVIOR_FFFD>(s);</div><div class="line"> <span class="keyword">auto</span> units = *(<a class="code" href="utfiterator_8h.html#afb839c10d925301c6dad1daeb23be6d0">range</a>.begin());</div><div class="line"> <span class="keywordflow">if</span> (units.wellFormed()) {</div><div class="line"> <span class="keywordflow">return</span> units.stringView();</div><div class="line"> } <span class="keywordflow">else</span> {</div><div class="line"> <span class="keywordflow">return</span> {};</div><div class="line"> }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">template</span><<span class="keyword">typename</span> InputStream> <span class="comment">// some istream or streambuf</span></div><div class="line">std::u32string cpFromInput(InputStream &in) {</div><div class="line"> <span class="comment">// This is a single-pass input_iterator.</span></div><div class="line"> std::istreambuf_iterator bufIter(in);</div><div class="line"> std::istreambuf_iterator<typename InputStream::char_type> bufLimit;</div><div class="line"> <span class="keyword">auto</span> iter = utfIterator<char32_t, UTF_BEHAVIOR_FFFD>(bufIter);</div><div class="line"> <span class="keyword">auto</span> limit = utfIterator<char32_t, UTF_BEHAVIOR_FFFD>(bufLimit);</div><div class="line"> std::u32string s32;</div><div class="line"> <span class="keywordflow">for</span> (; iter != limit; ++iter) {</div><div class="line"> s32.push_back(iter->codePoint());</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span> s32;</div><div class="line">}</div><div class="line"></div><div class="line">std::u32string cpFromStdin() { <span class="keywordflow">return</span> cpFromInput(std::cin); }</div><div class="line">std::u32string cpFromWideStdin() { <span class="keywordflow">return</span> cpFromInput(std::wcin); }</div></div><!-- fragment --> <p class="definition">Definition in file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div><h2 class="groupheader">Typedef Documentation</h2> <a id="file_a379c0d1e14b3a9a7e7ca33899d8fda6b"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a379c0d1e14b3a9a7e7ca33899d8fda6b">◆ </a></span>iter_difference_t</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Iter > </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="utfiterator_8h.html#a379c0d1e14b3a9a7e7ca33899d8fda6b">U_HEADER_ONLY_NAMESPACE::prv::iter_difference_t</a> = typedef typename std::iterator_traits<Iter>::difference_type</td> </tr> </table> </div><div class="memdoc"> <dl class="internal"><dt><b><a class="el" href="internal.html#_internal000185">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00203">203</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_ac94512354a3c3757bd51504e17c42675"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_ac94512354a3c3757bd51504e17c42675">◆ </a></span>iter_value_t</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Iter > </div> <table class="memname"> <tr> <td class="memname">using <a class="el" href="utfiterator_8h.html#ac94512354a3c3757bd51504e17c42675">U_HEADER_ONLY_NAMESPACE::prv::iter_value_t</a> = typedef typename std::iterator_traits<Iter>::value_type</td> </tr> </table> </div><div class="memdoc"> <dl class="internal"><dt><b><a class="el" href="internal.html#_internal000184">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00199">199</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="ac9bd38a5248aa5282d2844324be20000"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac9bd38a5248aa5282d2844324be20000">◆ </a></span>UTFIllFormedBehavior</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef enum <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">UTFIllFormedBehavior</a> <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">UTFIllFormedBehavior</a></td> </tr> </table> </div><div class="memdoc"> <p>Some defined behaviors for handling ill-formed Unicode strings. </p> <p>This is a template parameter for UTFIterator and related classes.</p> <p>When a validating UTFIterator encounters an ill-formed code unit sequence, then CodeUnits.codePoint() is a value according to this parameter.</p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000025">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <dl class="section see"><dt>See also</dt><dd>CodeUnits </dd> <dd> UTFIterator </dd> <dd> UTFStringCodePoints </dd></dl> </div> </div> <h2 class="groupheader">Enumeration Type Documentation</h2> <a id="ae96b61b479fe4d7b8e525787353d1d46"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae96b61b479fe4d7b8e525787353d1d46">◆ </a></span>UTFIllFormedBehavior</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="utfiterator_8h.html#ae96b61b479fe4d7b8e525787353d1d46">UTFIllFormedBehavior</a></td> </tr> </table> </div><div class="memdoc"> <p>Some defined behaviors for handling ill-formed Unicode strings. </p> <p>This is a template parameter for UTFIterator and related classes.</p> <p>When a validating UTFIterator encounters an ill-formed code unit sequence, then CodeUnits.codePoint() is a value according to this parameter.</p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000025">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <dl class="section see"><dt>See also</dt><dd>CodeUnits </dd> <dd> UTFIterator </dd> <dd> UTFStringCodePoints </dd></dl> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae96b61b479fe4d7b8e525787353d1d46a3a3ec2a3f0723ec5bc20765b895509f0"></a>UTF_BEHAVIOR_NEGATIVE </td><td class="fielddoc"><p>Returns a negative value (-1=U_SENTINEL) instead of a code point. </p> <p>If the CP32 template parameter for the relevant classes is an unsigned type, then the negative value becomes 0xffffffff=UINT32_MAX.</p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000026">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> </td></tr> <tr><td class="fieldname"><a id="ae96b61b479fe4d7b8e525787353d1d46a2e9b1ff0326a69017ff1ea55c9d7137d"></a>UTF_BEHAVIOR_FFFD </td><td class="fielddoc"><p>Returns U+FFFD Replacement Character. </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000027">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> </td></tr> <tr><td class="fieldname"><a id="ae96b61b479fe4d7b8e525787353d1d46a36d5d4b43747b3b7230fcd82daf8fb56"></a>UTF_BEHAVIOR_SURROGATE </td><td class="fielddoc"><p>UTF-8: Not allowed; UTF-16: returns the unpaired surrogate; UTF-32: returns the surrogate code point, or U+FFFD if out of range. </p> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000028">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> </td></tr> </table> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00149">149</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="file_a0173fdd0ff9c634956e829eaa5794465"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a0173fdd0ff9c634956e829eaa5794465">◆ </a></span>unsafeUTFIterator()</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 , typename UnitIter > </div> <table class="memname"> <tr> <td class="memname">auto U_HEADER_ONLY_NAMESPACE::unsafeUTFIterator </td> <td>(</td> <td class="paramtype">UnitIter </td> <td class="paramname"><em>iter</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>UnsafeUTFIterator factory function. </p> <p>Deduces the UnitIter template parameter from the input.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t </td></tr> <tr><td class="paramname">UnitIter</td><td>Can usually be omitted/deduced: An iterator (often a pointer) that returns a code unit type: UTF-8: char or char8_t or uint8_t; UTF-16: char16_t or uint16_t or (on Windows) wchar_t; UTF-32: char32_t or UChar32=int32_t or (on Linux) wchar_t </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">iter</td><td>code unit iterator </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>an UnsafeUTFIterator<CP32, UnitIter> for the given code unit iterator or character pointer </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000099">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l02494">2494</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> <p class="reference">References <a class="el" href="utfiterator_8h_source.html#l02494">U_HEADER_ONLY_NAMESPACE::unsafeUTFIterator()</a>.</p> <p class="reference">Referenced by <a class="el" href="utfiterator_8h_source.html#l02494">U_HEADER_ONLY_NAMESPACE::unsafeUTFIterator()</a>.</p> </div> </div> <a id="file_a81f9f64c82a3b29389483be3c65c581d"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a81f9f64c82a3b29389483be3c65c581d">◆ </a></span>utfIterator() <span class="overload">[1/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter , typename LimitIter = UnitIter> </div> <table class="memname"> <tr> <td class="memname">auto U_HEADER_ONLY_NAMESPACE::utfIterator </td> <td>(</td> <td class="paramtype">UnitIter </td> <td class="paramname"><em>start</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">UnitIter </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">LimitIter </td> <td class="paramname"><em>limit</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>UTFIterator factory function for start <= p < limit. </p> <p>Deduces the UnitIter and LimitIter template parameters from the inputs. Only enabled if UnitIter is a (multi-pass) forward_iterator or better.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t </td></tr> <tr><td class="paramname">behavior</td><td>How to handle ill-formed Unicode strings </td></tr> <tr><td class="paramname">UnitIter</td><td>Can usually be omitted/deduced: An iterator (often a pointer) that returns a code unit type: UTF-8: char or char8_t or uint8_t; UTF-16: char16_t or uint16_t or (on Windows) wchar_t; UTF-32: char32_t or UChar32=int32_t or (on Linux) wchar_t </td></tr> <tr><td class="paramname">LimitIter</td><td>Either the same as UnitIter, or an iterator sentinel type. </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">start</td><td>start code unit iterator </td></tr> <tr><td class="paramname">p</td><td>current-position code unit iterator </td></tr> <tr><td class="paramname">limit</td><td>limit (exclusive-end) code unit iterator. When using a code unit sentinel (UnitIter≠LimitIter), then that sentinel also works as a sentinel for the code point iterator. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a UTFIterator<CP32, behavior, UnitIter> for the given code unit iterators or character pointers </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000067">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l01696">1696</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> <p class="reference">References <a class="el" href="utfiterator_8h_source.html#l01696">U_HEADER_ONLY_NAMESPACE::utfIterator()</a>.</p> <p class="reference">Referenced by <a class="el" href="utfiterator_8h_source.html#l01696">U_HEADER_ONLY_NAMESPACE::utfIterator()</a>.</p> </div> </div> <a id="file_a70b94948e46469f2252eace654ad2737"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a70b94948e46469f2252eace654ad2737">◆ </a></span>utfIterator() <span class="overload">[2/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter , typename LimitIter = UnitIter> </div> <table class="memname"> <tr> <td class="memname">auto U_HEADER_ONLY_NAMESPACE::utfIterator </td> <td>(</td> <td class="paramtype">UnitIter </td> <td class="paramname"><em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">LimitIter </td> <td class="paramname"><em>limit</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>UTFIterator factory function for start = p < limit. </p> <p>Deduces the UnitIter and LimitIter template parameters from the inputs.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t </td></tr> <tr><td class="paramname">behavior</td><td>How to handle ill-formed Unicode strings </td></tr> <tr><td class="paramname">UnitIter</td><td>Can usually be omitted/deduced: An iterator (often a pointer) that returns a code unit type: UTF-8: char or char8_t or uint8_t; UTF-16: char16_t or uint16_t or (on Windows) wchar_t; UTF-32: char32_t or UChar32=int32_t or (on Linux) wchar_t </td></tr> <tr><td class="paramname">LimitIter</td><td>Either the same as UnitIter, or an iterator sentinel type. </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">p</td><td>start and current-position code unit iterator </td></tr> <tr><td class="paramname">limit</td><td>limit (exclusive-end) code unit iterator. When using a code unit sentinel (UnitIter≠LimitIter), then that sentinel also works as a sentinel for the code point iterator. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a UTFIterator<CP32, behavior, UnitIter> for the given code unit iterators or character pointers </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000068">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l01723">1723</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> <p class="reference">References <a class="el" href="utfiterator_8h_source.html#l01696">U_HEADER_ONLY_NAMESPACE::utfIterator()</a>.</p> </div> </div> <a id="file_a29e66074fd42156e7cd1928ba3e88860"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a29e66074fd42156e7cd1928ba3e88860">◆ </a></span>utfIterator() <span class="overload">[3/3]</span></h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 , UTFIllFormedBehavior behavior, typename UnitIter > </div> <table class="memname"> <tr> <td class="memname">auto U_HEADER_ONLY_NAMESPACE::utfIterator </td> <td>(</td> <td class="paramtype">UnitIter </td> <td class="paramname"><em>p</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>UTFIterator factory function for a start or limit sentinel. </p> <p>Deduces the UnitIter template parameter from the input. Requires UnitIter to be copyable.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t </td></tr> <tr><td class="paramname">behavior</td><td>How to handle ill-formed Unicode strings </td></tr> <tr><td class="paramname">UnitIter</td><td>Can usually be omitted/deduced: An iterator (often a pointer) that returns a code unit type: UTF-8: char or char8_t or uint8_t; UTF-16: char16_t or uint16_t or (on Windows) wchar_t; UTF-32: char32_t or UChar32=int32_t or (on Linux) wchar_t </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">p</td><td>code unit iterator. When using a code unit sentinel, then that sentinel also works as a sentinel for the code point iterator. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a UTFIterator<CP32, behavior, UnitIter> for the given code unit iterator or character pointer </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000069">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l01753">1753</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> <p class="reference">References <a class="el" href="utfiterator_8h_source.html#l01696">U_HEADER_ONLY_NAMESPACE::utfIterator()</a>.</p> </div> </div> <h2 class="groupheader">Variable Documentation</h2> <a id="file_ae75399e99d2481183124f5f96b19b9e1"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_ae75399e99d2481183124f5f96b19b9e1">◆ </a></span>bidirectional_iterator</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Iter > </div> <table class="memname"> <tr> <td class="memname">constexpr bool U_HEADER_ONLY_NAMESPACE::prv::bidirectional_iterator</td> </tr> </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line"> std::is_base_of_v<</div><div class="line"> std::bidirectional_iterator_tag,</div><div class="line"> <span class="keyword">typename</span> std::iterator_traits<Iter>::iterator_category></div></div><!-- fragment --><dl class="internal"><dt><b><a class="el" href="internal.html#_internal000187">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00214">214</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_a603cf1c4c624736f3965c0dae31a5c79"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a603cf1c4c624736f3965c0dae31a5c79">◆ </a></span>forward_iterator</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Iter > </div> <table class="memname"> <tr> <td class="memname">constexpr bool U_HEADER_ONLY_NAMESPACE::prv::forward_iterator</td> </tr> </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line"> std::is_base_of_v<</div><div class="line"> std::forward_iterator_tag,</div><div class="line"> <span class="keyword">typename</span> std::iterator_traits<Iter>::iterator_category></div></div><!-- fragment --><dl class="internal"><dt><b><a class="el" href="internal.html#_internal000186">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00207">207</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_a5296d8e44f40e0d0971832c9897437cb"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a5296d8e44f40e0d0971832c9897437cb">◆ </a></span>is_basic_string_view_v</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T > </div> <table class="memname"> <tr> <td class="memname">constexpr bool U_HEADER_ONLY_NAMESPACE::prv::is_basic_string_view_v = is_basic_string_view<T>::value</td> </tr> </table> </div><div class="memdoc"> <dl class="internal"><dt><b><a class="el" href="internal.html#_internal000193">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00244">244</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_afb839c10d925301c6dad1daeb23be6d0"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_afb839c10d925301c6dad1daeb23be6d0">◆ </a></span>range</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename Range > </div> <table class="memname"> <tr> <td class="memname">constexpr bool U_HEADER_ONLY_NAMESPACE::prv::range = range_type<Range>::value</td> </tr> </table> </div><div class="memdoc"> <dl class="internal"><dt><b><a class="el" href="internal.html#_internal000190">Internal:</a></b></dt><dd>Do not use.</dd></dl> <p>This API is for internal use only. </p> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l00232">232</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_ae761307fb6f808f749d159a0203a7316"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_ae761307fb6f808f749d159a0203a7316">◆ </a></span>unsafeUTFStringCodePoints</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 > </div> <table class="memname"> <tr> <td class="memname">constexpr UnsafeUTFStringCodePointsAdaptor<CP32> U_HEADER_ONLY_NAMESPACE::unsafeUTFStringCodePoints</td> </tr> </table> </div><div class="memdoc"> <p>Range adaptor function object returning an UnsafeUTFStringCodePoints object that represents a "range" of code points in a code unit range. </p> <p>The string must be well-formed. Deduces the Range template parameter from the input, taking into account the value category: the code units will be referenced if possible, and moved if necessary.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t </td></tr> <tr><td class="paramname">Range</td><td>A C++ "range" of Unicode UTF-8/16/32 code units </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">unitRange</td><td>input range </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>an UnsafeUTFStringCodePoints<CP32, Range> for the given unitRange </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000101">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l02666">2666</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> <a id="file_a984a43b6a404be5a37425475b5992285"></a> <h2 class="memtitle"><span class="permalink"><a href="#file_a984a43b6a404be5a37425475b5992285">◆ </a></span>utfStringCodePoints</h2> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename CP32 , UTFIllFormedBehavior behavior> </div> <table class="memname"> <tr> <td class="memname">constexpr UTFStringCodePointsAdaptor<CP32, behavior> U_HEADER_ONLY_NAMESPACE::utfStringCodePoints</td> </tr> </table> </div><div class="memdoc"> <p>Range adaptor function object returning a UTFStringCodePoints object that represents a "range" of code points in a code unit range, which validates while decoding. </p> <p>Deduces the Range template parameter from the input, taking into account the value category: the code units will be referenced if possible, and moved if necessary.</p> <dl class="tparams"><dt>Template Parameters</dt><dd> <table class="tparams"> <tr><td class="paramname">CP32</td><td>Code point type: UChar32 (=int32_t) or char32_t or uint32_t; should be signed if UTF_BEHAVIOR_NEGATIVE </td></tr> <tr><td class="paramname">behavior</td><td>How to handle ill-formed Unicode strings </td></tr> <tr><td class="paramname">Range</td><td>A C++ "range" of Unicode UTF-8/16/32 code units </td></tr> </table> </dd> </dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">unitRange</td><td>input range </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>a UTFStringCodePoints<CP32, behavior, Range> for the given unitRange </dd></dl> <dl class="draft"><dt><b><a class="el" href="draft.html#_draft000071">Draft:</a></b></dt><dd>This API may be changed in the future versions and was introduced in ICU 78 </dd></dl> <p class="definition">Definition at line <a class="el" href="utfiterator_8h_source.html#l01934">1934</a> of file <a class="el" href="utfiterator_8h_source.html">utfiterator.h</a>.</p> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> </body> </html>
| ver. 1.6 |
Github
|
.
| PHP 8.3.30 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка