-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>ICU4C API Comparison: ICU 69 with ICU 70</title>
+<title>ICU4C API Comparison: ICU 70 with ICU 71</title>
<link type="text/css" href="icu4c.css" rel="stylesheet">
</head>
<body>
<a name="#_top"></a>
-<h1>ICU4C API Comparison: ICU 69 with ICU 70</h1>
+<h1>ICU4C API Comparison: ICU 70 with ICU 71</h1>
<div id="toc">
<ul>
<li>
-<a href="#removed">Removed from ICU 69</a>
+<a href="#removed">Removed from ICU 70</a>
</li>
<li>
-<a href="#deprecated">Deprecated or Obsoleted in ICU 70</a>
+<a href="#deprecated">Deprecated or Obsoleted in ICU 71</a>
</li>
<li>
-<a href="#changed">Changed in ICU 70</a>
+<a href="#changed">Changed in ICU 71</a>
</li>
<li>
-<a href="#promoted">Promoted to stable in ICU 70</a>
+<a href="#promoted">Promoted to stable in ICU 71</a>
</li>
<li>
-<a href="#added">Added in ICU 70</a>
+<a href="#added">Added in ICU 71</a>
</li>
<li>
-<a href="#other">Other existing drafts in ICU 70</a>
+<a href="#other">Other existing drafts in ICU 71</a>
</li>
<li>
<a href="#simplifications">Signature Simplifications</a>
<hr>
</div>
<a name="removed"></a>
-<h2>Removed from ICU 69</h2>
+<h2>Removed from ICU 70</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
-<tr class="row1">
-<td class="file">tmutfmt.h</td><td class="proto">bool icu::TimeUnitFormat::operator!=(const Format&) const</td><td class="">Deprecated<br>ICU 53</td><td>(missing)<br>
-<span class=""><span></span></span></td>
-</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="deprecated"></a>
-<h2>Deprecated or Obsoleted in ICU 70</h2>
+<h2>Deprecated or Obsoleted in ICU 71</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration()</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">const char* icu::number::FormattedNumber::getGender(UErrorCode&) const</td><td class="">Internal<br>ICU 69</td><td>Deprecated<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">ucnv.h</td><td class="proto">UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 71</span></span></td>
</tr>
<tr class="row1">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">ucol.h</td><td class="proto">UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 71</span></span></td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="changed"></a>
-<h2>Changed in ICU 70 (old, new)</h2>
+<h2>Changed in ICU 71 (old, new)</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">bool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">const char* icu::number::FormattedNumber::getGender(UErrorCode&) const</td><td class="">Internal<br>ICU 69</td><td>Deprecated<br>
+<span class=""><span></span></span></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto">std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration()</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t)</td><td class="stabchange">Stable<br>ICU 2.4</td><td>Deprecated<br>
-<span class="verchange"><span>ICU 70</span></span></td>
+<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucnv.h</td><td class="proto">UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 71</span></span></td>
</tr>
<tr class="row0">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucol.h</td><td class="proto">UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>Deprecated<br>
+<span class="verchange"><span>ICU 71</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uniset.h</td><td class="proto">UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="promoted"></a>
-<h2>Promoted to stable in ICU 70</h2>
+<h2>Promoted to stable in ICU 71</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">dtitvfmt.h</td><td class="proto">UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">dtitvfmt.h</td><td class="proto">void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">localematcher.h</td><td class="proto">Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">localematcher.h</td><td class="proto">bool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDot()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDram()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucnv.h</td><td class="proto">UConverter* ucnv_clone(const UConverter*, UErrorCode*)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 71</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 71.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">ucol.h</td><td class="proto">UCollator* ucol_clone(const UCollator*, UErrorCode*)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 71</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 71.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uniset.h</td><td class="proto">UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto">std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&&</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">numberrangeformatter.h</td><td class="proto">std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">plurrule.h</td><td class="proto">UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
+<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row1">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGSA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TOTO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">udateintervalformat.h</td><td class="proto">UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">udateintervalformat.h</td><td class="proto">void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto">int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UFormattedNumberRange* unumrf_openResult(UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_close(UNumberRangeFormatter*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_closeResult(UFormattedNumberRange*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberrangeformatter.h</td><td class="proto">void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row0">
-<td class="file">upluralrules.h</td><td class="proto">int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 68</td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TANGSA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TOTO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 68</span></span></td>
+<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 69</td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="added"></a>
-<h2>Added in ICU 70</h2>
+<h2>Added in ICU 71</h2>
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">dcfmtsym.h</td><td class="proto"><tt>enum</tt> icu::DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getItem()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">const DecimalFormatSymbols* icu::number::LocalizedNumberFormatter::getDecimalFormatSymbols() const</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">timezone.h</td><td class="proto"><tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&)</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto">bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TANGSA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_TOTO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
+<td class="file">dtptngen.h</td><td class="proto">const UnicodeString& icu::DateTimePatternGenerator::getDateTimeFormat(UDateFormatStyle, UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">dtptngen.h</td><td class="proto">void icu::DateTimePatternGenerator::setDateTimeFormat(UDateFormatStyle, const UnicodeString&, UErrorCode&)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto">NounClass icu::number::FormattedNumber::getNounClass(UErrorCode&) const</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> IncrementPrecision icu::number::Precision::incrementExact(uint64_t, int16_t)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">ucnv.h</td><td class="proto">UConverter* ucnv_clone(const UConverter*, UErrorCode*)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 71</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 71.">(Born Stable)</b></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">ucol.h</td><td class="proto">UCollator* ucol_clone(const UCollator*, UErrorCode*)</td><td class="">(missing)</td><td>Stable<br>
+<span class=""><span>ICU 71</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 71.">(Born Stable)</b></td>
</tr>
<tr class="row1">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">udatpg.h</td><td class="proto">const UChar* udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator*, UDateFormatStyle, int32_t*, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row0">
-<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
+<td class="file">udatpg.h</td><td class="proto">void udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator*, UDateFormatStyle, const UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
<tr class="row1">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uniset.h</td><td class="proto">bool icu::UnicodeSet::hasStrings() const</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatSymbol::UNUM_APPROXIMATELY_SIGN_SYMBOL</td><td class="">(missing)</td><td>Internal<br>
-<span class=""><span></span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TANGSA</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_TOTO</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row1">
-<td class="file">uscript.h</td><td class="proto"><tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 70</span></span></td><td class="bornstable"><b class="bigwarn" title="A new API was introduced as stable in ICU 70.">(Born Stable)</b></td>
-</tr>
-<tr class="row0">
-<td class="file">uset.h</td><td class="proto">bool uset_hasStrings(const USet*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">int32_t uset_getRangeCount(const USet*)</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row0">
-<td class="file">usetiter.h</td><td class="proto">UnicodeSetIterator& icu::UnicodeSetIterator::skipToStrings()</td><td class="">(missing)</td><td>Draft<br>
-<span class=""><span>ICU 70</span></span></td>
-</tr>
-<tr class="row1">
-<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR</td><td class="">(missing)</td><td>Stable<br>
-<span class=""><span>ICU 68</span></span></td>
+<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatFields::UNUM_APPROXIMATELY_SIGN_FIELD</td><td class="">(missing)</td><td>Draft<br>
+<span class=""><span>ICU 71</span></span></td>
</tr>
</table>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<a name="other"></a>
-<h2>Other existing drafts in ICU 70</h2>
+<h2>Other existing drafts in ICU 71</h2>
<div class="other">
<table BORDER="1" class="genTable">
<THEAD>
<tr>
-<th>File</th><th>API</th><th>ICU 69</th><th>ICU 70</th>
+<th>File</th><th>API</th><th>ICU 70</th><th>ICU 71</th>
</tr>
</THEAD>
<tr class="row1">
-<td class="file">basictz.h</td><td class="proto">void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
<td class="file">measfmt.h</td><td class="proto">void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 53</td>
</tr>
-<tr class="row1">
-<td class="file">measunit.h</td><td class="proto">MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto">UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getItem()</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter()</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer()</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&)</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">numberrangeformatter.h</td><td class="proto">icu::number::FormattedNumberRange::FormattedNumberRange()</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">rbtz.h</td><td class="proto">void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto">bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty)</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">simpletz.h</td><td class="proto">void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uchar.h</td><td class="proto"><tt>enum</tt> UProperty::UCHAR_RGI_EMOJI</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">ucal.h</td><td class="proto"><tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">ucal.h</td><td class="proto">void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">udat.h</td><td class="proto"><tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
<td class="file">uformattedvalue.h</td><td class="proto"><tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
</tr>
<tr class="row0">
-<td class="file">uniset.h</td><td class="proto">UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">unum.h</td><td class="proto"><tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uniset.h</td><td class="proto">bool icu::UnicodeSet::hasStrings() const</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">unumberformatter.h</td><td class="proto"><tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
<td class="file">uregex.h</td><td class="proto"><tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ</td><td class="" colspan="2" align="center">Draft<br>ICU 2.4</td>
</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_complementAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_complementRange(USet*, UChar32, UChar32)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_complementString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_removeAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uset.h</td><td class="proto">bool uset_hasStrings(const USet*)</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row1">
-<td class="file">uset.h</td><td class="proto">void uset_retainAllCodePoints(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">uset.h</td><td class="proto">int32_t uset_getRangeCount(const USet*)</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
<tr class="row0">
-<td class="file">uset.h</td><td class="proto">void uset_retainString(USet*, const UChar*, int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
-</tr>
-<tr class="row1">
-<td class="file">vtzone.h</td><td class="proto">void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const</td><td class="" colspan="2" align="center">Draft<br>ICU 69</td>
+<td class="file">usetiter.h</td><td class="proto">UnicodeSetIterator& icu::UnicodeSetIterator::skipToStrings()</td><td class="" colspan="2" align="center">Draft<br>ICU 70</td>
</tr>
</table>
</div>
<i>This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
all possible variations in "original" form.</i>
<div class="other">
-<ul>
-<li>
-<b>UClassID icu::BreakIterator::getDynamicClassID() const</b>
-<br>UClassID icu::BreakIterator::getDynamicClassID() const override=0<br>UClassID icu::BreakIterator::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::Calendar::getDynamicClassID() const</b>
-<br>UClassID icu::Calendar::getDynamicClassID() const override=0<br>UClassID icu::Calendar::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::Collator::getDynamicClassID() const</b>
-<br>UClassID icu::Collator::getDynamicClassID() const override=0<br>UClassID icu::Collator::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const</b>
-<br>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const override=0<br>UClassID icu::ForwardCharacterIterator::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::NumberFormat::getDynamicClassID() const</b>
-<br>UClassID icu::NumberFormat::getDynamicClassID() const override=0<br>UClassID icu::NumberFormat::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::TimeZone::getDynamicClassID() const</b>
-<br>UClassID icu::TimeZone::getDynamicClassID() const override=0<br>UClassID icu::TimeZone::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::Transliterator::getDynamicClassID() const</b>
-<br>UClassID icu::Transliterator::getDynamicClassID() const override=0<br>UClassID icu::Transliterator::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UClassID icu::UnicodeFunctor::getDynamicClassID() const</b>
-<br>UClassID icu::UnicodeFunctor::getDynamicClassID() const override=0<br>UClassID icu::UnicodeFunctor::getDynamicClassID() const=0<br>
-</li>
-<li>
-<b>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, bool)</b>
-<br>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool)<br>UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool) override<br>
-</li>
-<li>
-<b>UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, bool)</b>
-<br>UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool)<br>UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool) override<br>
-</li>
-<li>
-<b>UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, bool escapeUnprintable=) const</b>
-<br>UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const<br>UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const<br>UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const<br>UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const<br>UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const<br>bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const</b>
-<br>UBool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const<br>bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::BreakIterator::operator==(const BreakIterator&) const</b>
-<br>UBool icu::BreakIterator::operator==(const BreakIterator&) const=0<br>bool icu::BreakIterator::operator==(const BreakIterator&) const=0<br>
-</li>
-<li>
-<b>bool icu::ChoiceFormat::operator==(const Format&) const</b>
-<br>UBool icu::ChoiceFormat::operator==(const Format&) const<br>bool icu::ChoiceFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::DateFormat::operator==(const Format&) const</b>
-<br>UBool icu::DateFormat::operator==(const Format&) const<br>bool icu::DateFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::DateIntervalFormat::operator==(const Format&) const</b>
-<br>UBool icu::DateIntervalFormat::operator==(const Format&) const<br>bool icu::DateIntervalFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::DecimalFormat::operator==(const Format&) const</b>
-<br>UBool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE<br>bool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE<br>
-</li>
-<li>
-<b>bool icu::Format::operator==(const Format&) const</b>
-<br>UBool icu::Format::operator==(const Format&) const=0<br>bool icu::Format::operator==(const Format&) const=0<br>
-</li>
-<li>
-<b>bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const</b>
-<br>UBool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0<br>bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0<br>
-</li>
-<li>
-<b>bool icu::GregorianCalendar::haveDefaultCentury() const</b>
-<br>UBool icu::GregorianCalendar::haveDefaultCentury() const<br>UBool icu::GregorianCalendar::haveDefaultCentury() const override<br>
-</li>
-<li>
-<b>bool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const</b>
-<br>UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const<br>UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const override<br>
-</li>
-<li>
-<b>bool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const</b>
-<br>UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const<br>UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const<br>UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const<br>UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const</b>
-<br>UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const<br>UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const</b>
-<br>UBool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const<br>bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const</b>
-<br>UBool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const<br>bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::MeasureFormat::operator==(const Format&) const</b>
-<br>UBool icu::MeasureFormat::operator==(const Format&) const<br>bool icu::MeasureFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::MessageFormat::operator==(const Format&) const</b>
-<br>UBool icu::MessageFormat::operator==(const Format&) const<br>bool icu::MessageFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::NumberFormat::operator==(const Format&) const</b>
-<br>UBool icu::NumberFormat::operator==(const Format&) const<br>bool icu::NumberFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::PluralFormat::operator==(const Format&) const</b>
-<br>UBool icu::PluralFormat::operator==(const Format&) const<br>bool icu::PluralFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedBreakIterator::isBoundary(int32_t)</b>
-<br>UBool icu::RuleBasedBreakIterator::isBoundary(int32_t)<br>UBool icu::RuleBasedBreakIterator::isBoundary(int32_t) override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const</b>
-<br>UBool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const<br>bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedCollator::operator==(const Collator&) const</b>
-<br>UBool icu::RuleBasedCollator::operator==(const Collator&) const<br>bool icu::RuleBasedCollator::operator==(const Collator&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedNumberFormat::isLenient() const</b>
-<br>UBool icu::RuleBasedNumberFormat::isLenient() const<br>UBool icu::RuleBasedNumberFormat::isLenient() const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedNumberFormat::operator==(const Format&) const</b>
-<br>UBool icu::RuleBasedNumberFormat::operator==(const Format&) const<br>bool icu::RuleBasedNumberFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const</b>
-<br>UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const<br>UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const</b>
-<br>UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const<br>UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const</b>
-<br>UBool icu::RuleBasedTimeZone::operator==(const TimeZone&) const<br>bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::RuleBasedTimeZone::useDaylightTime() const</b>
-<br>UBool icu::RuleBasedTimeZone::useDaylightTime() const<br>UBool icu::RuleBasedTimeZone::useDaylightTime() const override<br>
-</li>
-<li>
-<b>bool icu::SelectFormat::operator==(const Format&) const</b>
-<br>UBool icu::SelectFormat::operator==(const Format&) const<br>bool icu::SelectFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleDateFormat::operator==(const Format&) const</b>
-<br>UBool icu::SimpleDateFormat::operator==(const Format&) const<br>bool icu::SimpleDateFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleNumberFormatFactory::visible() const</b>
-<br>UBool icu::SimpleNumberFormatFactory::visible() const<br>UBool icu::SimpleNumberFormatFactory::visible() const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const</b>
-<br>UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const<br>UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const</b>
-<br>UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const<br>UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::operator==(const TimeZone&) const</b>
-<br>UBool icu::SimpleTimeZone::operator==(const TimeZone&) const<br>bool icu::SimpleTimeZone::operator==(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::SimpleTimeZone::useDaylightTime() const</b>
-<br>UBool icu::SimpleTimeZone::useDaylightTime() const<br>UBool icu::SimpleTimeZone::useDaylightTime() const override<br>
-</li>
-<li>
-<b>bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const</b>
-<br>UBool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const<br>bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const override<br>
-</li>
-<li>
-<b>bool icu::StringSearch::operator==(const SearchIterator&) const</b>
-<br>UBool icu::StringSearch::operator==(const SearchIterator&) const<br>bool icu::StringSearch::operator==(const SearchIterator&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const<br>UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const<br>UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const<br>UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const<br>UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const<br>bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const</b>
-<br>UBool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const<br>bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeZoneFormat::operator==(const Format&) const</b>
-<br>UBool icu::TimeZoneFormat::operator==(const Format&) const<br>bool icu::TimeZoneFormat::operator==(const Format&) const override<br>
-</li>
-<li>
-<b>bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const</b>
-<br>UBool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0<br>bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0<br>
-</li>
-<li>
-<b>bool icu::UCharCharacterIterator::hasNext()</b>
-<br>UBool icu::UCharCharacterIterator::hasNext()<br>UBool icu::UCharCharacterIterator::hasNext() override<br>
-</li>
-<li>
-<b>bool icu::UCharCharacterIterator::hasPrevious()</b>
-<br>UBool icu::UCharCharacterIterator::hasPrevious()<br>UBool icu::UCharCharacterIterator::hasPrevious() override<br>
-</li>
-<li>
-<b>bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const</b>
-<br>UBool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const<br>bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const override<br>
-</li>
-<li>
-<b>bool icu::UnicodeSet::contains(UChar32) const</b>
-<br>UBool icu::UnicodeSet::contains(UChar32) const<br>UBool icu::UnicodeSet::contains(UChar32) const override<br>
-</li>
-<li>
-<b>bool icu::UnicodeString::hasMetaData() const</b>
-<br>UBool icu::UnicodeString::hasMetaData() const<br>UBool icu::UnicodeString::hasMetaData() const override<br>
-</li>
-<li>
-<b>bool icu::UnicodeStringAppendable::appendCodePoint(UChar32)</b>
-<br>UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32)<br>UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32) override<br>
-</li>
-<li>
-<b>bool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)</b>
-<br>UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)<br>UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t) override<br>
-</li>
-<li>
-<b>bool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)</b>
-<br>UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)<br>UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t) override<br>
-</li>
-<li>
-<b>bool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)</b>
-<br>UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)<br>UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t) override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const</b>
-<br>UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const<br>UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::hasSameRules(const TimeZone&) const</b>
-<br>UBool icu::VTimeZone::hasSameRules(const TimeZone&) const<br>UBool icu::VTimeZone::hasSameRules(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const</b>
-<br>UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const<br>UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::operator==(const TimeZone&) const</b>
-<br>UBool icu::VTimeZone::operator==(const TimeZone&) const<br>bool icu::VTimeZone::operator==(const TimeZone&) const override<br>
-</li>
-<li>
-<b>bool icu::VTimeZone::useDaylightTime() const</b>
-<br>UBool icu::VTimeZone::useDaylightTime() const<br>UBool icu::VTimeZone::useDaylightTime() const override<br>
-</li>
-<li>
-<b>void icu::RuleBasedNumberFormat::setLenient(bool)</b>
-<br>void icu::RuleBasedNumberFormat::setLenient(UBool)<br>void icu::RuleBasedNumberFormat::setLenient(UBool) override<br>
-</li>
-<li>
-<b>void icu::RuleBasedTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const</b>
-<br>void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const<br>void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override<br>
-</li>
-<li>
-<b>void icu::SimpleTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const</b>
-<br>void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const<br>void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override<br>
-</li>
-<li>
-<b>void icu::VTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const</b>
-<br>void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const<br>void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override<br>
-</li>
-<li>
-<b>void* icu::AnnualTimeZoneRule::clone() const</b>
-<br>AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const<br>AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const override<br>
-</li>
-<li>
-<b>void* icu::BasicTimeZone::clone() const</b>
-<br>BasicTimeZone* icu::BasicTimeZone::clone() const override=0<br>BasicTimeZone* icu::BasicTimeZone::clone() const=0<br>
-</li>
-<li>
-<b>void* icu::ChoiceFormat::clone() const</b>
-<br>ChoiceFormat* icu::ChoiceFormat::clone() const<br>ChoiceFormat* icu::ChoiceFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::CurrencyAmount::clone() const</b>
-<br>CurrencyAmount* icu::CurrencyAmount::clone() const<br>CurrencyAmount* icu::CurrencyAmount::clone() const override<br>
-</li>
-<li>
-<b>void* icu::CurrencyUnit::clone() const</b>
-<br>CurrencyUnit* icu::CurrencyUnit::clone() const<br>CurrencyUnit* icu::CurrencyUnit::clone() const override<br>
-</li>
-<li>
-<b>void* icu::DateFormat::clone() const</b>
-<br>DateFormat* icu::DateFormat::clone() const override=0<br>DateFormat* icu::DateFormat::clone() const=0<br>
-</li>
-<li>
-<b>void* icu::DateIntervalFormat::clone() const</b>
-<br>DateIntervalFormat* icu::DateIntervalFormat::clone() const<br>DateIntervalFormat* icu::DateIntervalFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::GregorianCalendar::clone() const</b>
-<br>GregorianCalendar* icu::GregorianCalendar::clone() const<br>GregorianCalendar* icu::GregorianCalendar::clone() const override<br>
-</li>
-<li>
-<b>void* icu::InitialTimeZoneRule::clone() const</b>
-<br>InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const<br>InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const override<br>
-</li>
-<li>
-<b>void* icu::MeasureFormat::clone() const</b>
-<br>MeasureFormat* icu::MeasureFormat::clone() const<br>MeasureFormat* icu::MeasureFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::MessageFormat::clone() const</b>
-<br>MessageFormat* icu::MessageFormat::clone() const<br>MessageFormat* icu::MessageFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::NumberFormat::clone() const</b>
-<br>NumberFormat* icu::NumberFormat::clone() const override=0<br>NumberFormat* icu::NumberFormat::clone() const=0<br>
-</li>
-<li>
-<b>void* icu::PluralFormat::clone() const</b>
-<br>PluralFormat* icu::PluralFormat::clone() const<br>PluralFormat* icu::PluralFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::RuleBasedBreakIterator::clone() const</b>
-<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const override<br>
-</li>
-<li>
-<b>void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)</b>
-<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)<br>RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&) override<br>
-</li>
-<li>
-<b>void* icu::RuleBasedCollator::clone() const</b>
-<br>RuleBasedCollator* icu::RuleBasedCollator::clone() const<br>RuleBasedCollator* icu::RuleBasedCollator::clone() const override<br>
-</li>
-<li>
-<b>void* icu::RuleBasedNumberFormat::clone() const</b>
-<br>RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const<br>RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::RuleBasedTimeZone::clone() const</b>
-<br>RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const<br>RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const override<br>
-</li>
-<li>
-<b>void* icu::SelectFormat::clone() const</b>
-<br>SelectFormat* icu::SelectFormat::clone() const<br>SelectFormat* icu::SelectFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::SimpleDateFormat::clone() const</b>
-<br>SimpleDateFormat* icu::SimpleDateFormat::clone() const<br>SimpleDateFormat* icu::SimpleDateFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::SimpleTimeZone::clone() const</b>
-<br>SimpleTimeZone* icu::SimpleTimeZone::clone() const<br>SimpleTimeZone* icu::SimpleTimeZone::clone() const override<br>
-</li>
-<li>
-<b>void* icu::StringCharacterIterator::clone() const</b>
-<br>StringCharacterIterator* icu::StringCharacterIterator::clone() const<br>StringCharacterIterator* icu::StringCharacterIterator::clone() const override<br>
-</li>
-<li>
-<b>void* icu::StringSearch::safeClone() const</b>
-<br>StringSearch* icu::StringSearch::safeClone() const<br>StringSearch* icu::StringSearch::safeClone() const override<br>
-</li>
-<li>
-<b>void* icu::TimeArrayTimeZoneRule::clone() const</b>
-<br>TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const<br>TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const override<br>
-</li>
-<li>
-<b>void* icu::TimeUnit::clone() const</b>
-<br>TimeUnit* icu::TimeUnit::clone() const<br>TimeUnit* icu::TimeUnit::clone() const override<br>
-</li>
-<li>
-<b>void* icu::TimeUnitAmount::clone() const</b>
-<br>TimeUnitAmount* icu::TimeUnitAmount::clone() const<br>TimeUnitAmount* icu::TimeUnitAmount::clone() const override<br>
-</li>
-<li>
-<b>void* icu::TimeUnitFormat::clone() const</b>
-<br>TimeUnitFormat* icu::TimeUnitFormat::clone() const<br>TimeUnitFormat* icu::TimeUnitFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::TimeZoneFormat::clone() const</b>
-<br>TimeZoneFormat* icu::TimeZoneFormat::clone() const<br>TimeZoneFormat* icu::TimeZoneFormat::clone() const override<br>
-</li>
-<li>
-<b>void* icu::UCharCharacterIterator::clone() const</b>
-<br>UCharCharacterIterator* icu::UCharCharacterIterator::clone() const<br>UCharCharacterIterator* icu::UCharCharacterIterator::clone() const override<br>
-</li>
-<li>
-<b>void* icu::UnicodeFilter::clone() const</b>
-<br>UnicodeFilter* icu::UnicodeFilter::clone() const override=0<br>UnicodeFilter* icu::UnicodeFilter::clone() const=0<br>
-</li>
-<li>
-<b>void* icu::UnicodeSet::clone() const</b>
-<br>UnicodeSet* icu::UnicodeSet::clone() const<br>UnicodeSet* icu::UnicodeSet::clone() const override<br>
-</li>
-<li>
-<b>void* icu::UnicodeString::clone() const</b>
-<br>UnicodeString* icu::UnicodeString::clone() const<br>UnicodeString* icu::UnicodeString::clone() const override<br>
-</li>
-<li>
-<b>void* icu::VTimeZone::clone() const</b>
-<br>VTimeZone* icu::VTimeZone::clone() const<br>VTimeZone* icu::VTimeZone::clone() const override<br>
-</li>
-</ul>
+<ul></ul>
</div>
<P></P>
<a href="#_top">(jump back to top)</a>
<hr>
<p>
-<i><font size="-1">Contents generated by StableAPI tool on Wed Sep 29 11:59:05 PDT 2021<br>
+<i><font size="-1">Contents generated by StableAPI tool on Thu Mar 10 11:12:56 PST 2022<br>
Copyright © 2017 and later: Unicode, Inc. and others.<br>
License & terms of use: http://www.unicode.org/copyright.html
</font></i>
License & terms of use: http://www.unicode.org/copyright.html
-->
-# ICU4C API Comparison: ICU 69 with ICU 70
+# ICU4C API Comparison: ICU 70 with ICU 71
> _Note_ Markdown format of this document is new for ICU 65.
-- [Removed from ICU 69](#removed)
-- [Deprecated or Obsoleted in ICU 70](#deprecated)
-- [Changed in ICU 70](#changed)
-- [Promoted to stable in ICU 70](#promoted)
-- [Added in ICU 70](#added)
-- [Other existing drafts in ICU 70](#other)
+- [Removed from ICU 70](#removed)
+- [Deprecated or Obsoleted in ICU 71](#deprecated)
+- [Changed in ICU 71](#changed)
+- [Promoted to stable in ICU 71](#promoted)
+- [Added in ICU 71](#added)
+- [Other existing drafts in ICU 71](#other)
- [Signature Simplifications](#simplifications)
## Removed
-Removed from ICU 69
+Removed from ICU 70
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| tmutfmt.h | bool icu::TimeUnitFormat::operator!=(const Format&) const | DeprecatedICU 53 | (missing)
## Deprecated
-Deprecated or Obsoleted in ICU 70
+Deprecated or Obsoleted in ICU 71
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration() | StableICU 2.4 | DeprecatedICU 70
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*) | StableICU 2.4 | DeprecatedICU 70
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t) | StableICU 2.4 | DeprecatedICU 70
+| numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&) const | InternalICU 69 | Deprecated
+| ucnv.h | UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*) | StableICU 2.0 | DeprecatedICU 71
+| ucol.h | UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*) | StableICU 2.0 | DeprecatedICU 71
## Changed
-Changed in ICU 70 (old, new)
+Changed in ICU 71 (old, new)
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const | Draft→StableICU 68
-| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&) | Draft→StableICU 68
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&) | Draft→StableICU 68
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale() | Draft→StableICU 68
-| localematcher.h | bool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&) | Draft→StableICU 68
-| measunit.h | std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const | Draft→StableICU 68
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const& | Draft→StableICU 68
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&& | Draft→StableICU 68
-| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const | Draft→StableICU 68
-| numberrangeformatter.h | std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const | Draft→StableICU 68
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const | Draft→StableICU 68
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration() | StableICU 2.4 | DeprecatedICU 70
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(const char*) | StableICU 2.4 | DeprecatedICU 70
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(int32_t) | StableICU 2.4 | DeprecatedICU 70
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME | Draft→StableICU 68
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME | Draft→StableICU 68
-| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) | Draft→StableICU 68
-| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) | Draft→StableICU 68
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO | Draft→StableICU 68
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 | Draft→StableICU 68
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL | Draft→StableICU 68
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT | Draft→StableICU 68
-| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) | Draft→StableICU 68
+| basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const | Draft→StableICU 69
+| measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const | Draft→StableICU 69
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | Draft→StableICU 69
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&) | Draft→StableICU 69
+| numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | Draft→StableICU 69
+| numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | Draft→StableICU 69
+| numberformatter.h | const char* icu::number::FormattedNumber::getGender(UErrorCode&) const | InternalICU 69 | Deprecated
+| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | Draft→StableICU 69
+| ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | Draft→StableICU 69
+| ucnv.h | UConverter* ucnv_safeClone(const UConverter*, void*, int32_t*, UErrorCode*) | StableICU 2.0 | DeprecatedICU 71
+| ucol.h | UCollator* ucol_safeClone(const UCollator*, void*, int32_t*, UErrorCode*) | StableICU 2.0 | DeprecatedICU 71
+| uniset.h | UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&) | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | Draft→StableICU 69
+| uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_complementRange(USet*, UChar32, UChar32) | Draft→StableICU 69
+| uset.h | void uset_complementString(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_retainString(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
## Promoted
-Promoted to stable in ICU 70
+Promoted to stable in ICU 71
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| dtitvfmt.h | UDisplayContext icu::DateIntervalFormat::getContext(UDisplayContextType, UErrorCode&) const | Draft→StableICU 68
-| dtitvfmt.h | void icu::DateIntervalFormat::setContext(UDisplayContext, UErrorCode&) | Draft→StableICU 68
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setMaxDistance(const Locale&, const Locale&) | Draft→StableICU 68
-| localematcher.h | Builder& icu::LocaleMatcher::Builder::setNoDefaultLocale() | Draft→StableICU 68
-| localematcher.h | bool icu::LocaleMatcher::isMatch(const Locale&, const Locale&, UErrorCode&) const | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getCandela() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoon() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDessertSpoonImperial() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDot() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDram() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getDrop() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getEarthRadius() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getGrain() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getJigger() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getLumen() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getPinch() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getQuartImperial() | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createCandela(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoon(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDessertSpoonImperial(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDot(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDram(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createDrop(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createEarthRadius(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createGrain(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createJigger(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createLumen(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createPinch(UErrorCode&) | Draft→StableICU 68
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createQuartImperial(UErrorCode&) | Draft→StableICU 68
-| measunit.h | std::pair< LocalArray< MeasureUnit >, int32_t > icu::MeasureUnit::splitToSingleUnits(UErrorCode&) const | Draft→StableICU 68
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece) const& | Draft→StableICU 68
-| numberformatter.h | Derived icu::number::NumberFormatterSettings< Derived >::usage(StringPiece)&& | Draft→StableICU 68
-| numberformatter.h | MeasureUnit icu::number::FormattedNumber::getOutputUnit(UErrorCode&) const | Draft→StableICU 68
-| numberrangeformatter.h | std::pair< StringClass, StringClass > icu::number::FormattedNumberRange::getDecimalNumbers(UErrorCode&) const | Draft→StableICU 68
-| plurrule.h | UnicodeString icu::PluralRules::select(const number::FormattedNumberRange&, UErrorCode&) const | Draft→StableICU 68
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TANGSA | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TOTO | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL | (missing) | StableICU 70| *(Born Stable)* |
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_FORMAL_SYMBOL_NAME | Draft→StableICU 68
-| ucurr.h | <tt>enum</tt> UCurrNameStyle::UCURR_VARIANT_SYMBOL_NAME | Draft→StableICU 68
-| udateintervalformat.h | UDisplayContext udtitvfmt_getContext(const UDateIntervalFormat*, UDisplayContextType, UErrorCode*) | Draft→StableICU 68
-| udateintervalformat.h | void udtitvfmt_setContext(UDateIntervalFormat*, UDisplayContext, UErrorCode*) | Draft→StableICU 68
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_AUTO | Draft→StableICU 68
-| unum.h | <tt>enum</tt> UNumberFormatMinimumGroupingDigits::UNUM_MINIMUM_GROUPING_DIGITS_MIN2 | Draft→StableICU 68
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_FORMAL | Draft→StableICU 68
-| unumberformatter.h | <tt>enum</tt> UNumberUnitWidth::UNUM_UNIT_WIDTH_VARIANT | Draft→StableICU 68
-| unumberformatter.h | int32_t unumf_resultToDecimalNumber(const UFormattedNumber*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UFormattedNumberRange* unumrf_openResult(UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(const UChar*, int32_t, UNumberRangeCollapse, UNumberRangeIdentityFallback, const char*, UParseError*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | UNumberRangeIdentityResult unumrf_resultGetIdentityResult(const UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | const UFormattedValue* unumrf_resultAsValue(const UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | int32_t unumrf_resultGetFirstDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | int32_t unumrf_resultGetSecondDecimalNumber(const UFormattedNumberRange*, char*, int32_t, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_close(UNumberRangeFormatter*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_closeResult(UFormattedNumberRange*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_formatDecimalRange(const UNumberRangeFormatter*, const char*, int32_t, const char*, int32_t, UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| unumberrangeformatter.h | void unumrf_formatDoubleRange(const UNumberRangeFormatter*, double, double, UFormattedNumberRange*, UErrorCode*) | Draft→StableICU 68
-| upluralrules.h | int32_t uplrules_selectForRange(const UPluralRules*, const struct UFormattedNumberRange*, UChar*, int32_t, UErrorCode*) | Draft→StableICU 68
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TANGSA | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TOTO | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI | (missing) | StableICU 70| *(Born Stable)* |
-| utypes.h | <tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR | (missing) | StableICU 68
+| basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const | Draft→StableICU 69
+| measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const | Draft→StableICU 69
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | Draft→StableICU 69
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&) | Draft→StableICU 69
+| numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | Draft→StableICU 69
+| numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | Draft→StableICU 69
+| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
+| ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | Draft→StableICU 69
+| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | Draft→StableICU 69
+| ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | Draft→StableICU 69
+| ucnv.h | UConverter* ucnv_clone(const UConverter*, UErrorCode*) | (missing) | StableICU 71| *(Born Stable)* |
+| ucol.h | UCollator* ucol_clone(const UCollator*, UErrorCode*) | (missing) | StableICU 71| *(Born Stable)* |
+| uniset.h | UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&) | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | Draft→StableICU 69
+| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | Draft→StableICU 69
+| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | Draft→StableICU 69
+| uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_complementRange(USet*, UChar32, UChar32) | Draft→StableICU 69
+| uset.h | void uset_complementString(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| uset.h | void uset_retainString(USet*, const UChar*, int32_t) | Draft→StableICU 69
+| vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | Draft→StableICU 69
## Added
-Added in ICU 70
+Added in ICU 71
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| dcfmtsym.h | <tt>enum</tt> icu::DecimalFormatSymbols::ENumberFormatSymbol::kApproximatelySignSymbol | (missing) | Internal
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getItem() | (missing) | DraftICU 70
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() | (missing) | DraftICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&) | (missing) | DraftICU 70
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&) | (missing) | DraftICU 70
-| numberformatter.h | const DecimalFormatSymbols* icu::number::LocalizedNumberFormatter::getDecimalFormatSymbols() const | (missing) | Internal
-| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() | (missing) | DraftICU 70
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumeration(UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRawOffset(int32_t, UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| timezone.h | <tt>static</tt> StringEnumeration* icu::TimeZone::createEnumerationForRegion(const char*, UErrorCode&) | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ARABIC_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_CYPRO_MINOAN | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ETHIOPIC_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_KANA_EXTENDED_B | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_F | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_LATIN_EXTENDED_G | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_OLD_UYGHUR | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TANGSA | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_TOTO | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_A | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_VITHKUQI | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UBlockCode::UBLOCK_ZNAMENNY_MUSICAL_NOTATION | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_THIN_YEH | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UJoiningGroup::U_JG_VERTICAL_TAIL | (missing) | StableICU 70| *(Born Stable)* |
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE | (missing) | DraftICU 70
-| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI | (missing) | DraftICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS | (missing) | DraftICU 70
-| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS | (missing) | DraftICU 70
-| uniset.h | bool icu::UnicodeSet::hasStrings() const | (missing) | DraftICU 70
-| unum.h | <tt>enum</tt> UNumberFormatSymbol::UNUM_APPROXIMATELY_SIGN_SYMBOL | (missing) | Internal
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_CYPRO_MINOAN | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_OLD_UYGHUR | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TANGSA | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_TOTO | (missing) | StableICU 70| *(Born Stable)* |
-| uscript.h | <tt>enum</tt> UScriptCode::USCRIPT_VITHKUQI | (missing) | StableICU 70| *(Born Stable)* |
-| uset.h | bool uset_hasStrings(const USet*) | (missing) | DraftICU 70
-| uset.h | int32_t uset_getRangeCount(const USet*) | (missing) | DraftICU 70
-| usetiter.h | UnicodeSetIterator& icu::UnicodeSetIterator::skipToStrings() | (missing) | DraftICU 70
-| utypes.h | <tt>enum</tt> UErrorCode::U_INPUT_TOO_LONG_ERROR | (missing) | StableICU 68
+| dtptngen.h | const UnicodeString& icu::DateTimePatternGenerator::getDateTimeFormat(UDateFormatStyle, UErrorCode&) const | (missing) | DraftICU 71
+| dtptngen.h | void icu::DateTimePatternGenerator::setDateTimeFormat(UDateFormatStyle, const UnicodeString&, UErrorCode&) | (missing) | DraftICU 71
+| numberformatter.h | NounClass icu::number::FormattedNumber::getNounClass(UErrorCode&) const | (missing) | DraftICU 71
+| numberformatter.h | <tt>static</tt> IncrementPrecision icu::number::Precision::incrementExact(uint64_t, int16_t) | (missing) | DraftICU 71
+| ucnv.h | UConverter* ucnv_clone(const UConverter*, UErrorCode*) | (missing) | StableICU 71| *(Born Stable)* |
+| ucol.h | UCollator* ucol_clone(const UCollator*, UErrorCode*) | (missing) | StableICU 71| *(Born Stable)* |
+| udatpg.h | const UChar* udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator*, UDateFormatStyle, int32_t*, UErrorCode*) | (missing) | DraftICU 71
+| udatpg.h | void udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator*, UDateFormatStyle, const UChar*, int32_t, UErrorCode*) | (missing) | DraftICU 71
+| unum.h | <tt>enum</tt> UNumberFormatFields::UNUM_APPROXIMATELY_SIGN_FIELD | (missing) | DraftICU 71
## Other
-Other existing drafts in ICU 70
+Other existing drafts in ICU 71
-| File | API | ICU 69 | ICU 70 |
+| File | API | ICU 70 | ICU 71 |
|---|---|---|---|
-| basictz.h | void icu::BasicTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | DraftICU 69 |
| measfmt.h | void icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&) const | DraftICU 53 |
-| measunit.h | MeasureUnit icu::MeasureUnit::withPrefix(UMeasurePrefix, UErrorCode&) const | DraftICU 69 |
-| measunit.h | UMeasurePrefix icu::MeasureUnit::getPrefix(UErrorCode&) const | DraftICU 69 |
-| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getMilligramOfglucosePerDeciliter() | DraftICU 69 |
-| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createMilligramOfglucosePerDeciliter(UErrorCode&) | DraftICU 69 |
-| numberformatter.h | Precision icu::number::FractionPrecision::withSignificantDigits(int32_t, int32_t, UNumberRoundingPriority) const | DraftICU 69 |
-| numberformatter.h | Precision icu::number::Precision::trailingZeroDisplay(UNumberTrailingZeroDisplay) const | DraftICU 69 |
-| rbtz.h | void icu::RuleBasedTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | DraftICU 69 |
-| simpletz.h | void icu::SimpleTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | DraftICU 69 |
-| ubrk.h | UBreakIterator* ubrk_clone(const UBreakIterator*, UErrorCode*) | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_FORMER | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_DAYLIGHT_LATTER | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_FORMER | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_LATTER | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_FORMER | DraftICU 69 |
-| ucal.h | <tt>enum</tt> UTimeZoneLocalOption::UCAL_TZ_LOCAL_STANDARD_LATTER | DraftICU 69 |
-| ucal.h | void ucal_getTimeZoneOffsetFromLocal(const UCalendar*, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t*, int32_t*, UErrorCode*) | DraftICU 69 |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getItem() | DraftICU 70 |
+| measunit.h | <tt>static</tt> MeasureUnit icu::MeasureUnit::getKilowattHourPer100Kilometer() | DraftICU 70 |
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createItem(UErrorCode&) | DraftICU 70 |
+| measunit.h | <tt>static</tt> MeasureUnit* icu::MeasureUnit::createKilowattHourPer100Kilometer(UErrorCode&) | DraftICU 70 |
+| numberrangeformatter.h | icu::number::FormattedNumberRange::FormattedNumberRange() | DraftICU 70 |
+| uchar.h | bool u_stringHasBinaryProperty(const UChar*, int32_t, UProperty) | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_BASIC_EMOJI | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_EMOJI_KEYCAP_SEQUENCE | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_FLAG_SEQUENCE | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_TAG_SEQUENCE | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI_ZWJ_SEQUENCE | DraftICU 70 |
+| uchar.h | <tt>enum</tt> UProperty::UCHAR_RGI_EMOJI | DraftICU 70 |
+| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_NARROW_QUARTERS | DraftICU 70 |
+| udat.h | <tt>enum</tt> UDateFormatSymbolType::UDAT_STANDALONE_NARROW_QUARTERS | DraftICU 70 |
| uformattedvalue.h | <tt>enum</tt> UFieldCategory::UFIELD_CATEGORY_NUMBER_RANGE_SPAN | DraftICU 69 |
-| uniset.h | UnicodeSet& icu::UnicodeSet::retain(const UnicodeString&) | DraftICU 69 |
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_CEILING | DraftICU 69 |
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_FLOOR | DraftICU 69 |
-| unum.h | <tt>enum</tt> UNumberFormatRoundingMode::UNUM_ROUND_HALF_ODD | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_RELAXED | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberRoundingPriority::UNUM_ROUNDING_PRIORITY_STRICT | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_NEGATIVE | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_NEGATIVE | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_AUTO | DraftICU 69 |
-| unumberformatter.h | <tt>enum</tt> UNumberTrailingZeroDisplay::UNUM_TRAILING_ZERO_HIDE_IF_WHOLE | DraftICU 69 |
+| uniset.h | bool icu::UnicodeSet::hasStrings() const | DraftICU 70 |
| uregex.h | <tt>enum</tt> URegexpFlag::UREGEX_CANON_EQ | DraftICU 2.4 |
-| uset.h | void uset_complementAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 |
-| uset.h | void uset_complementRange(USet*, UChar32, UChar32) | DraftICU 69 |
-| uset.h | void uset_complementString(USet*, const UChar*, int32_t) | DraftICU 69 |
-| uset.h | void uset_removeAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 |
-| uset.h | void uset_retainAllCodePoints(USet*, const UChar*, int32_t) | DraftICU 69 |
-| uset.h | void uset_retainString(USet*, const UChar*, int32_t) | DraftICU 69 |
-| vtzone.h | void icu::VTimeZone::getOffsetFromLocal(UDate, UTimeZoneLocalOption, UTimeZoneLocalOption, int32_t&, int32_t&, UErrorCode&) const | DraftICU 69 |
+| uset.h | bool uset_hasStrings(const USet*) | DraftICU 70 |
+| uset.h | int32_t uset_getRangeCount(const USet*) | DraftICU 70 |
+| usetiter.h | UnicodeSetIterator& icu::UnicodeSetIterator::skipToStrings() | DraftICU 70 |
## Simplifications
This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
all possible variations in "original" form.
-- **`UClassID icu::BreakIterator::getDynamicClassID() const`**
- - `UClassID icu::BreakIterator::getDynamicClassID() const override=0`
- - `UClassID icu::BreakIterator::getDynamicClassID() const=0`
-- **`UClassID icu::Calendar::getDynamicClassID() const`**
- - `UClassID icu::Calendar::getDynamicClassID() const override=0`
- - `UClassID icu::Calendar::getDynamicClassID() const=0`
-- **`UClassID icu::Collator::getDynamicClassID() const`**
- - `UClassID icu::Collator::getDynamicClassID() const override=0`
- - `UClassID icu::Collator::getDynamicClassID() const=0`
-- **`UClassID icu::ForwardCharacterIterator::getDynamicClassID() const`**
- - `UClassID icu::ForwardCharacterIterator::getDynamicClassID() const override=0`
- - `UClassID icu::ForwardCharacterIterator::getDynamicClassID() const=0`
-- **`UClassID icu::NumberFormat::getDynamicClassID() const`**
- - `UClassID icu::NumberFormat::getDynamicClassID() const override=0`
- - `UClassID icu::NumberFormat::getDynamicClassID() const=0`
-- **`UClassID icu::TimeZone::getDynamicClassID() const`**
- - `UClassID icu::TimeZone::getDynamicClassID() const override=0`
- - `UClassID icu::TimeZone::getDynamicClassID() const=0`
-- **`UClassID icu::Transliterator::getDynamicClassID() const`**
- - `UClassID icu::Transliterator::getDynamicClassID() const override=0`
- - `UClassID icu::Transliterator::getDynamicClassID() const=0`
-- **`UClassID icu::UnicodeFunctor::getDynamicClassID() const`**
- - `UClassID icu::UnicodeFunctor::getDynamicClassID() const override=0`
- - `UClassID icu::UnicodeFunctor::getDynamicClassID() const=0`
-- **`UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, bool)`**
- - `UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool)`
- - `UMatchDegree icu::UnicodeFilter::matches(const Replaceable&, int32_t&, int32_t, UBool) override`
-- **`UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, bool)`**
- - `UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool)`
- - `UMatchDegree icu::UnicodeSet::matches(const Replaceable&, int32_t&, int32_t, UBool) override`
-- **`UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, bool escapeUnprintable=) const`**
- - `UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const`
- - `UnicodeString& icu::UnicodeSet::toPattern(UnicodeString&, UBool escapeUnprintable=) const override`
-- **`bool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::AnnualTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::AnnualTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::AnnualTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::AnnualTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
- - `UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
- - `UBool icu::AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
-- **`bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const`**
- - `UBool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const`
- - `bool icu::AnnualTimeZoneRule::operator!=(const TimeZoneRule&) const override`
-- **`bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const`**
- - `UBool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const`
- - `bool icu::AnnualTimeZoneRule::operator==(const TimeZoneRule&) const override`
-- **`bool icu::BreakIterator::operator==(const BreakIterator&) const`**
- - `UBool icu::BreakIterator::operator==(const BreakIterator&) const=0`
- - `bool icu::BreakIterator::operator==(const BreakIterator&) const=0`
-- **`bool icu::ChoiceFormat::operator==(const Format&) const`**
- - `UBool icu::ChoiceFormat::operator==(const Format&) const`
- - `bool icu::ChoiceFormat::operator==(const Format&) const override`
-- **`bool icu::DateFormat::operator==(const Format&) const`**
- - `UBool icu::DateFormat::operator==(const Format&) const`
- - `bool icu::DateFormat::operator==(const Format&) const override`
-- **`bool icu::DateIntervalFormat::operator==(const Format&) const`**
- - `UBool icu::DateIntervalFormat::operator==(const Format&) const`
- - `bool icu::DateIntervalFormat::operator==(const Format&) const override`
-- **`bool icu::DecimalFormat::operator==(const Format&) const`**
- - `UBool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE`
- - `bool icu::DecimalFormat::operator==(const Format&) const U_OVERRIDE`
-- **`bool icu::Format::operator==(const Format&) const`**
- - `UBool icu::Format::operator==(const Format&) const=0`
- - `bool icu::Format::operator==(const Format&) const=0`
-- **`bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
- - `UBool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0`
- - `bool icu::ForwardCharacterIterator::operator==(const ForwardCharacterIterator&) const=0`
-- **`bool icu::GregorianCalendar::haveDefaultCentury() const`**
- - `UBool icu::GregorianCalendar::haveDefaultCentury() const`
- - `UBool icu::GregorianCalendar::haveDefaultCentury() const override`
-- **`bool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const`**
- - `UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const`
- - `UBool icu::GregorianCalendar::inDaylightTime(UErrorCode&) const override`
-- **`bool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const`**
- - `UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const`
- - `UBool icu::GregorianCalendar::isEquivalentTo(const Calendar&) const override`
-- **`bool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::InitialTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::InitialTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::InitialTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::InitialTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
- - `UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
- - `UBool icu::InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
-- **`bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const`**
- - `UBool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const`
- - `bool icu::InitialTimeZoneRule::operator!=(const TimeZoneRule&) const override`
-- **`bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const`**
- - `UBool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const`
- - `bool icu::InitialTimeZoneRule::operator==(const TimeZoneRule&) const override`
-- **`bool icu::MeasureFormat::operator==(const Format&) const`**
- - `UBool icu::MeasureFormat::operator==(const Format&) const`
- - `bool icu::MeasureFormat::operator==(const Format&) const override`
-- **`bool icu::MessageFormat::operator==(const Format&) const`**
- - `UBool icu::MessageFormat::operator==(const Format&) const`
- - `bool icu::MessageFormat::operator==(const Format&) const override`
-- **`bool icu::NumberFormat::operator==(const Format&) const`**
- - `UBool icu::NumberFormat::operator==(const Format&) const`
- - `bool icu::NumberFormat::operator==(const Format&) const override`
-- **`bool icu::PluralFormat::operator==(const Format&) const`**
- - `UBool icu::PluralFormat::operator==(const Format&) const`
- - `bool icu::PluralFormat::operator==(const Format&) const override`
-- **`bool icu::RuleBasedBreakIterator::isBoundary(int32_t)`**
- - `UBool icu::RuleBasedBreakIterator::isBoundary(int32_t)`
- - `UBool icu::RuleBasedBreakIterator::isBoundary(int32_t) override`
-- **`bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const`**
- - `UBool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const`
- - `bool icu::RuleBasedBreakIterator::operator==(const BreakIterator&) const override`
-- **`bool icu::RuleBasedCollator::operator==(const Collator&) const`**
- - `UBool icu::RuleBasedCollator::operator==(const Collator&) const`
- - `bool icu::RuleBasedCollator::operator==(const Collator&) const override`
-- **`bool icu::RuleBasedNumberFormat::isLenient() const`**
- - `UBool icu::RuleBasedNumberFormat::isLenient() const`
- - `UBool icu::RuleBasedNumberFormat::isLenient() const override`
-- **`bool icu::RuleBasedNumberFormat::operator==(const Format&) const`**
- - `UBool icu::RuleBasedNumberFormat::operator==(const Format&) const`
- - `bool icu::RuleBasedNumberFormat::operator==(const Format&) const override`
-- **`bool icu::RuleBasedTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::RuleBasedTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::RuleBasedTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::RuleBasedTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const`**
- - `UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const`
- - `UBool icu::RuleBasedTimeZone::hasSameRules(const TimeZone&) const override`
-- **`bool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
- - `UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const`
- - `UBool icu::RuleBasedTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
-- **`bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const`**
- - `UBool icu::RuleBasedTimeZone::operator==(const TimeZone&) const`
- - `bool icu::RuleBasedTimeZone::operator==(const TimeZone&) const override`
-- **`bool icu::RuleBasedTimeZone::useDaylightTime() const`**
- - `UBool icu::RuleBasedTimeZone::useDaylightTime() const`
- - `UBool icu::RuleBasedTimeZone::useDaylightTime() const override`
-- **`bool icu::SelectFormat::operator==(const Format&) const`**
- - `UBool icu::SelectFormat::operator==(const Format&) const`
- - `bool icu::SelectFormat::operator==(const Format&) const override`
-- **`bool icu::SimpleDateFormat::operator==(const Format&) const`**
- - `UBool icu::SimpleDateFormat::operator==(const Format&) const`
- - `bool icu::SimpleDateFormat::operator==(const Format&) const override`
-- **`bool icu::SimpleNumberFormatFactory::visible() const`**
- - `UBool icu::SimpleNumberFormatFactory::visible() const`
- - `UBool icu::SimpleNumberFormatFactory::visible() const override`
-- **`bool icu::SimpleTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::SimpleTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::SimpleTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::SimpleTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const`**
- - `UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const`
- - `UBool icu::SimpleTimeZone::hasSameRules(const TimeZone&) const override`
-- **`bool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
- - `UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const`
- - `UBool icu::SimpleTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
-- **`bool icu::SimpleTimeZone::operator==(const TimeZone&) const`**
- - `UBool icu::SimpleTimeZone::operator==(const TimeZone&) const`
- - `bool icu::SimpleTimeZone::operator==(const TimeZone&) const override`
-- **`bool icu::SimpleTimeZone::useDaylightTime() const`**
- - `UBool icu::SimpleTimeZone::useDaylightTime() const`
- - `UBool icu::SimpleTimeZone::useDaylightTime() const override`
-- **`bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
- - `UBool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const`
- - `bool icu::StringCharacterIterator::operator==(const ForwardCharacterIterator&) const override`
-- **`bool icu::StringSearch::operator==(const SearchIterator&) const`**
- - `UBool icu::StringSearch::operator==(const SearchIterator&) const`
- - `bool icu::StringSearch::operator==(const SearchIterator&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::TimeArrayTimeZoneRule::getFinalStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const`
- - `UBool icu::TimeArrayTimeZoneRule::getFirstStart(int32_t, int32_t, UDate&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::TimeArrayTimeZoneRule::getNextStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, bool, UDate&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const`
- - `UBool icu::TimeArrayTimeZoneRule::getPreviousStart(UDate, int32_t, int32_t, UBool, UDate&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const`
- - `UBool icu::TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const`
- - `bool icu::TimeArrayTimeZoneRule::operator!=(const TimeZoneRule&) const override`
-- **`bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const`**
- - `UBool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const`
- - `bool icu::TimeArrayTimeZoneRule::operator==(const TimeZoneRule&) const override`
-- **`bool icu::TimeZoneFormat::operator==(const Format&) const`**
- - `UBool icu::TimeZoneFormat::operator==(const Format&) const`
- - `bool icu::TimeZoneFormat::operator==(const Format&) const override`
-- **`bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const`**
- - `UBool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0`
- - `bool icu::TimeZoneNames::operator==(const TimeZoneNames&) const=0`
-- **`bool icu::UCharCharacterIterator::hasNext()`**
- - `UBool icu::UCharCharacterIterator::hasNext()`
- - `UBool icu::UCharCharacterIterator::hasNext() override`
-- **`bool icu::UCharCharacterIterator::hasPrevious()`**
- - `UBool icu::UCharCharacterIterator::hasPrevious()`
- - `UBool icu::UCharCharacterIterator::hasPrevious() override`
-- **`bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const`**
- - `UBool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const`
- - `bool icu::UCharCharacterIterator::operator==(const ForwardCharacterIterator&) const override`
-- **`bool icu::UnicodeSet::contains(UChar32) const`**
- - `UBool icu::UnicodeSet::contains(UChar32) const`
- - `UBool icu::UnicodeSet::contains(UChar32) const override`
-- **`bool icu::UnicodeString::hasMetaData() const`**
- - `UBool icu::UnicodeString::hasMetaData() const`
- - `UBool icu::UnicodeString::hasMetaData() const override`
-- **`bool icu::UnicodeStringAppendable::appendCodePoint(UChar32)`**
- - `UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32)`
- - `UBool icu::UnicodeStringAppendable::appendCodePoint(UChar32) override`
-- **`bool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)`**
- - `UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t)`
- - `UBool icu::UnicodeStringAppendable::appendCodeUnit(char16_t) override`
-- **`bool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)`**
- - `UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t)`
- - `UBool icu::UnicodeStringAppendable::appendString(const char16_t*, int32_t) override`
-- **`bool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)`**
- - `UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t)`
- - `UBool icu::UnicodeStringAppendable::reserveAppendCapacity(int32_t) override`
-- **`bool icu::VTimeZone::getNextTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::VTimeZone::getNextTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::VTimeZone::getPreviousTransition(UDate, bool, TimeZoneTransition&) const`**
- - `UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const`
- - `UBool icu::VTimeZone::getPreviousTransition(UDate, UBool, TimeZoneTransition&) const override`
-- **`bool icu::VTimeZone::hasSameRules(const TimeZone&) const`**
- - `UBool icu::VTimeZone::hasSameRules(const TimeZone&) const`
- - `UBool icu::VTimeZone::hasSameRules(const TimeZone&) const override`
-- **`bool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const`**
- - `UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const`
- - `UBool icu::VTimeZone::inDaylightTime(UDate, UErrorCode&) const override`
-- **`bool icu::VTimeZone::operator==(const TimeZone&) const`**
- - `UBool icu::VTimeZone::operator==(const TimeZone&) const`
- - `bool icu::VTimeZone::operator==(const TimeZone&) const override`
-- **`bool icu::VTimeZone::useDaylightTime() const`**
- - `UBool icu::VTimeZone::useDaylightTime() const`
- - `UBool icu::VTimeZone::useDaylightTime() const override`
-- **`void icu::RuleBasedNumberFormat::setLenient(bool)`**
- - `void icu::RuleBasedNumberFormat::setLenient(UBool)`
- - `void icu::RuleBasedNumberFormat::setLenient(UBool) override`
-- **`void icu::RuleBasedTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
- - `void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
- - `void icu::RuleBasedTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
-- **`void icu::SimpleTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
- - `void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
- - `void icu::SimpleTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
-- **`void icu::VTimeZone::getOffset(UDate, bool, int32_t&, int32_t&, UErrorCode&) const`**
- - `void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const`
- - `void icu::VTimeZone::getOffset(UDate, UBool, int32_t&, int32_t&, UErrorCode&) const override`
-- **`void* icu::AnnualTimeZoneRule::clone() const`**
- - `AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const`
- - `AnnualTimeZoneRule* icu::AnnualTimeZoneRule::clone() const override`
-- **`void* icu::BasicTimeZone::clone() const`**
- - `BasicTimeZone* icu::BasicTimeZone::clone() const override=0`
- - `BasicTimeZone* icu::BasicTimeZone::clone() const=0`
-- **`void* icu::ChoiceFormat::clone() const`**
- - `ChoiceFormat* icu::ChoiceFormat::clone() const`
- - `ChoiceFormat* icu::ChoiceFormat::clone() const override`
-- **`void* icu::CurrencyAmount::clone() const`**
- - `CurrencyAmount* icu::CurrencyAmount::clone() const`
- - `CurrencyAmount* icu::CurrencyAmount::clone() const override`
-- **`void* icu::CurrencyUnit::clone() const`**
- - `CurrencyUnit* icu::CurrencyUnit::clone() const`
- - `CurrencyUnit* icu::CurrencyUnit::clone() const override`
-- **`void* icu::DateFormat::clone() const`**
- - `DateFormat* icu::DateFormat::clone() const override=0`
- - `DateFormat* icu::DateFormat::clone() const=0`
-- **`void* icu::DateIntervalFormat::clone() const`**
- - `DateIntervalFormat* icu::DateIntervalFormat::clone() const`
- - `DateIntervalFormat* icu::DateIntervalFormat::clone() const override`
-- **`void* icu::GregorianCalendar::clone() const`**
- - `GregorianCalendar* icu::GregorianCalendar::clone() const`
- - `GregorianCalendar* icu::GregorianCalendar::clone() const override`
-- **`void* icu::InitialTimeZoneRule::clone() const`**
- - `InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const`
- - `InitialTimeZoneRule* icu::InitialTimeZoneRule::clone() const override`
-- **`void* icu::MeasureFormat::clone() const`**
- - `MeasureFormat* icu::MeasureFormat::clone() const`
- - `MeasureFormat* icu::MeasureFormat::clone() const override`
-- **`void* icu::MessageFormat::clone() const`**
- - `MessageFormat* icu::MessageFormat::clone() const`
- - `MessageFormat* icu::MessageFormat::clone() const override`
-- **`void* icu::NumberFormat::clone() const`**
- - `NumberFormat* icu::NumberFormat::clone() const override=0`
- - `NumberFormat* icu::NumberFormat::clone() const=0`
-- **`void* icu::PluralFormat::clone() const`**
- - `PluralFormat* icu::PluralFormat::clone() const`
- - `PluralFormat* icu::PluralFormat::clone() const override`
-- **`void* icu::RuleBasedBreakIterator::clone() const`**
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const`
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::clone() const override`
-- **`void* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`**
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&)`
- - `RuleBasedBreakIterator* icu::RuleBasedBreakIterator::createBufferClone(void*, int32_t&, UErrorCode&) override`
-- **`void* icu::RuleBasedCollator::clone() const`**
- - `RuleBasedCollator* icu::RuleBasedCollator::clone() const`
- - `RuleBasedCollator* icu::RuleBasedCollator::clone() const override`
-- **`void* icu::RuleBasedNumberFormat::clone() const`**
- - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const`
- - `RuleBasedNumberFormat* icu::RuleBasedNumberFormat::clone() const override`
-- **`void* icu::RuleBasedTimeZone::clone() const`**
- - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const`
- - `RuleBasedTimeZone* icu::RuleBasedTimeZone::clone() const override`
-- **`void* icu::SelectFormat::clone() const`**
- - `SelectFormat* icu::SelectFormat::clone() const`
- - `SelectFormat* icu::SelectFormat::clone() const override`
-- **`void* icu::SimpleDateFormat::clone() const`**
- - `SimpleDateFormat* icu::SimpleDateFormat::clone() const`
- - `SimpleDateFormat* icu::SimpleDateFormat::clone() const override`
-- **`void* icu::SimpleTimeZone::clone() const`**
- - `SimpleTimeZone* icu::SimpleTimeZone::clone() const`
- - `SimpleTimeZone* icu::SimpleTimeZone::clone() const override`
-- **`void* icu::StringCharacterIterator::clone() const`**
- - `StringCharacterIterator* icu::StringCharacterIterator::clone() const`
- - `StringCharacterIterator* icu::StringCharacterIterator::clone() const override`
-- **`void* icu::StringSearch::safeClone() const`**
- - `StringSearch* icu::StringSearch::safeClone() const`
- - `StringSearch* icu::StringSearch::safeClone() const override`
-- **`void* icu::TimeArrayTimeZoneRule::clone() const`**
- - `TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const`
- - `TimeArrayTimeZoneRule* icu::TimeArrayTimeZoneRule::clone() const override`
-- **`void* icu::TimeUnit::clone() const`**
- - `TimeUnit* icu::TimeUnit::clone() const`
- - `TimeUnit* icu::TimeUnit::clone() const override`
-- **`void* icu::TimeUnitAmount::clone() const`**
- - `TimeUnitAmount* icu::TimeUnitAmount::clone() const`
- - `TimeUnitAmount* icu::TimeUnitAmount::clone() const override`
-- **`void* icu::TimeUnitFormat::clone() const`**
- - `TimeUnitFormat* icu::TimeUnitFormat::clone() const`
- - `TimeUnitFormat* icu::TimeUnitFormat::clone() const override`
-- **`void* icu::TimeZoneFormat::clone() const`**
- - `TimeZoneFormat* icu::TimeZoneFormat::clone() const`
- - `TimeZoneFormat* icu::TimeZoneFormat::clone() const override`
-- **`void* icu::UCharCharacterIterator::clone() const`**
- - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const`
- - `UCharCharacterIterator* icu::UCharCharacterIterator::clone() const override`
-- **`void* icu::UnicodeFilter::clone() const`**
- - `UnicodeFilter* icu::UnicodeFilter::clone() const override=0`
- - `UnicodeFilter* icu::UnicodeFilter::clone() const=0`
-- **`void* icu::UnicodeSet::clone() const`**
- - `UnicodeSet* icu::UnicodeSet::clone() const`
- - `UnicodeSet* icu::UnicodeSet::clone() const override`
-- **`void* icu::UnicodeString::clone() const`**
- - `UnicodeString* icu::UnicodeString::clone() const`
- - `UnicodeString* icu::UnicodeString::clone() const override`
-- **`void* icu::VTimeZone::clone() const`**
- - `VTimeZone* icu::VTimeZone::clone() const`
- - `VTimeZone* icu::VTimeZone::clone() const override`
## Colophon
-Contents generated by StableAPI tool on Wed Sep 29 11:59:13 PDT 2021
+Contents generated by StableAPI tool on Thu Mar 10 11:13:13 PST 2022
Copyright © 2019 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html