ICU-20511 Merge release-64-1 to master

This commit is contained in:
Shane F. Carr 2019-04-11 15:20:09 -07:00 committed by GitHub
commit cab01e522e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 296 additions and 157 deletions

View File

@ -181,22 +181,6 @@
<td class="file">dtptngen.h</td><td class="proto">UnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 61</td> <td class="file">dtptngen.h</td><td class="proto">UnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth) const</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 61</td>
</tr> </tr>
<tr class="row0"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Appendable&amp; icu::number::FormattedNumber::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 62</td><td>Draft<br>
<span class="verchange"><span>ICU 64</span></span></td>
</tr>
<tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toString(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 62</td><td>Draft<br>
<span class="verchange"><span>ICU 64</span></span></td>
</tr>
<tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Appendable&amp; icu::number::FormattedNumberRange::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Draft<br>
<span class="verchange"><span>ICU 64</span></span></td>
</tr>
<tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&amp;) const</td><td class="">Draft<br>ICU 63</td><td>Draft<br>
<span class="verchange"><span>ICU 64</span></span></td>
</tr>
<tr class="row0">
<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_NARROW_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 61</td> <td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_NARROW_SYMBOL_NAME</td><td class="" colspan="2" align="center">Draft&rarr;Stable<br>ICU 61</td>
</tr> </tr>
<tr class="row1"> <tr class="row1">
@ -1883,155 +1867,161 @@
<td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">nounit.h</td><td class="proto"><tt>static</tt> UClassID icu::NoUnit::getStaticClassID()</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Appendable&amp; icu::number::FormattedNumber::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr>
<tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptPerUnit(icu::MeasureUnit*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptPerUnit(icu::MeasureUnit*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptPerUnit(icu::MeasureUnit*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptPerUnit(icu::MeasureUnit*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptSymbols(NumberingSystem*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptSymbols(NumberingSystem*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptSymbols(NumberingSystem*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptSymbols(NumberingSystem*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptUnit(icu::MeasureUnit*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptUnit(icu::MeasureUnit*) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptUnit(icu::MeasureUnit*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::adoptUnit(icu::MeasureUnit*)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::decimal(UNumberDecimalSeparatorDisplay) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::decimal(UNumberDecimalSeparatorDisplay) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::decimal(UNumberDecimalSeparatorDisplay)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::decimal(UNumberDecimalSeparatorDisplay)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::grouping(UNumberGroupingStrategy) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::grouping(UNumberGroupingStrategy) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::grouping(UNumberGroupingStrategy)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::grouping(UNumberGroupingStrategy)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::integerWidth(const IntegerWidth&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::integerWidth(const IntegerWidth&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::integerWidth(const IntegerWidth&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::integerWidth(const IntegerWidth&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::notation(const Notation&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::notation(const Notation&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::notation(const Notation&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::notation(const Notation&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::perUnit(const icu::MeasureUnit&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::perUnit(const icu::MeasureUnit&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 61</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::perUnit(const icu::MeasureUnit&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::perUnit(const icu::MeasureUnit&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::precision(const Precision&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::precision(const Precision&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::precision(const Precision&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::precision(const Precision&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::roundingMode(UNumberFormatRoundingMode) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::roundingMode(UNumberFormatRoundingMode) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::roundingMode(UNumberFormatRoundingMode)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::roundingMode(UNumberFormatRoundingMode)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::scale(const Scale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::scale(const Scale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::scale(const Scale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::scale(const Scale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::sign(UNumberSignDisplay) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::sign(UNumberSignDisplay) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::sign(UNumberSignDisplay)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::sign(UNumberSignDisplay)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::symbols(const DecimalFormatSymbols&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::symbols(const DecimalFormatSymbols&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::symbols(const DecimalFormatSymbols&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::symbols(const DecimalFormatSymbols&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unit(const icu::MeasureUnit&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unit(const icu::MeasureUnit&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unit(const icu::MeasureUnit&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unit(const icu::MeasureUnit&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitWidth(UNumberUnitWidth) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitWidth(UNumberUnitWidth) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitWidth(UNumberUnitWidth)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings&lt; Derived &gt;::unitWidth(UNumberUnitWidth)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Format* icu::number::LocalizedNumberFormatter::toFormat(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">FormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">FormattedNumber&amp; icu::number::FormattedNumber::operator=(FormattedNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">FormattedNumber&amp; icu::number::FormattedNumber::operator=(FormattedNumber&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">IntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter&amp; icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter&amp; icu::number::LocalizedNumberFormatter::operator=(LocalizedNumberFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter&amp; icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">LocalizedNumberFormatter&amp; icu::number::LocalizedNumberFormatter::operator=(const LocalizedNumberFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Precision icu::number::CurrencyPrecision::withCurrency(const CurrencyUnit&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMaxDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMinDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Precision icu::number::FractionPrecision::withMinDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">Precision icu::number::IncrementPrecision::withMinFraction(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">Scale&amp; icu::number::Scale::operator=(Scale&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Scale&amp; icu::number::Scale::operator=(Scale&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">Scale&amp; icu::number::Scale::operator=(const Scale&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">Scale&amp; icu::number::Scale::operator=(const Scale&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">ScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">UBool icu::number::FormattedNumber::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">UBool icu::number::NumberFormatterSettings&lt; Derived &gt;::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td> <td class="file">numberformatter.h</td><td class="proto">UBool icu::number::NumberFormatterSettings&lt; Derived &gt;::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 60</td>
</tr> </tr>
<tr class="row0">
<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumber::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr>
<tr class="row1"> <tr class="row1">
<td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::NumberFormatterSettings&lt; Derived &gt;::toSkeleton(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">UnicodeString icu::number::NumberFormatterSettings&lt; Derived &gt;::toSkeleton(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
@ -2159,86 +2149,92 @@
<td class="file">numberformatter.h</td><td class="proto">void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td> <td class="file">numberformatter.h</td><td class="proto">void icu::number::FormattedNumber::getAllFieldPositions(FieldPositionIterator&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 62</td>
</tr> </tr>
<tr class="row1"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Appendable&amp; icu::number::FormattedNumberRange::appendTo(Appendable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr>
<tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::collapse(UNumberRangeCollapse) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::collapse(UNumberRangeCollapse) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::collapse(UNumberRangeCollapse)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::collapse(UNumberRangeCollapse)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::identityFallback(UNumberRangeIdentityFallback) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::identityFallback(UNumberRangeIdentityFallback) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::identityFallback(UNumberRangeIdentityFallback)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::identityFallback(UNumberRangeIdentityFallback)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterBoth(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterFirst(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(UnlocalizedNumberFormatter&amp;&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(UnlocalizedNumberFormatter&amp;&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(const UnlocalizedNumberFormatter&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">Derived icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::numberFormatterSecond(const UnlocalizedNumberFormatter&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&amp;, const Formattable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange icu::number::LocalizedNumberRangeFormatter::formatFormattableRange(const Formattable&amp;, const Formattable&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange&amp; icu::number::FormattedNumberRange::operator=(FormattedNumberRange&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">FormattedNumberRange&amp; icu::number::FormattedNumberRange::operator=(FormattedNumberRange&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&amp;) const&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter icu::number::UnlocalizedNumberRangeFormatter::locale(const icu::Locale&amp;)&amp;&amp;</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter&amp; icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter&amp; icu::number::LocalizedNumberRangeFormatter::operator=(LocalizedNumberRangeFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter&amp; icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">LocalizedNumberRangeFormatter&amp; icu::number::LocalizedNumberRangeFormatter::operator=(const LocalizedNumberRangeFormatter&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::FormattedNumberRange::nextFieldPosition(FieldPosition&amp;, UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UBool icu::number::NumberRangeFormatterSettings&lt; Derived &gt;::copyErrorTo(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UNumberRangeIdentityResult icu::number::FormattedNumberRange::getIdentityResult(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row0"> <tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getFirstDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::getSecondDecimal(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
<tr class="row1">
<td class="file">numberrangeformatter.h</td><td class="proto">UnicodeString icu::number::FormattedNumberRange::toString(UErrorCode&amp;) const</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr>
<tr class="row0"> <tr class="row0">
<td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter&amp; icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td> <td class="file">numberrangeformatter.h</td><td class="proto">UnlocalizedNumberRangeFormatter&amp; icu::number::UnlocalizedNumberRangeFormatter::operator=(UnlocalizedNumberRangeFormatter&amp;&amp;)</td><td class="" colspan="2" align="center">Draft<br>ICU 63</td>
</tr> </tr>
@ -2531,7 +2527,7 @@
<a href="#_top">(jump back to top)</a> <a href="#_top">(jump back to top)</a>
<hr> <hr>
<p> <p>
<i><font size="-1">Contents generated by StableAPI tool on Wed Feb 27 14:05:03 PST 2019<br>Copyright (C) 2019, International Business Machines Corporation, All Rights Reserved.</font></i> <i><font size="-1">Contents generated by StableAPI tool on Sun Mar 24 10:57:24 PDT 2019<br>Copyright (C) 2019, International Business Machines Corporation, All Rights Reserved.</font></i>
</p> </p>
</body> </body>
</html> </html>

View File

@ -298,7 +298,7 @@ public:
*/ */
MaybeStackArray(int32_t newCapacity) : MaybeStackArray() { MaybeStackArray(int32_t newCapacity) : MaybeStackArray() {
if (capacity < newCapacity) { resize(newCapacity); } if (capacity < newCapacity) { resize(newCapacity); }
}; }
/** /**
* Destructor deletes the array (if owned). * Destructor deletes the array (if owned).
*/ */

View File

@ -103,8 +103,8 @@ private:
int32_t cpLengths[POSSIBLE_WORD_LIST_MAX]; // Word Lengths, in code points. int32_t cpLengths[POSSIBLE_WORD_LIST_MAX]; // Word Lengths, in code points.
public: public:
PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {}; PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {}
~PossibleWord() {}; ~PossibleWord() {}
// Fill the list of candidates if needed, select the longest, and return the number found // Fill the list of candidates if needed, select the longest, and return the number found
int32_t candidates( UText *text, DictionaryMatcher *dict, int32_t rangeEnd ); int32_t candidates( UText *text, DictionaryMatcher *dict, int32_t rangeEnd );
@ -118,13 +118,13 @@ public:
// Return the longest prefix this candidate location shares with a dictionary word // Return the longest prefix this candidate location shares with a dictionary word
// Return value is in code points. // Return value is in code points.
int32_t longestPrefix() { return prefix; }; int32_t longestPrefix() { return prefix; }
// Mark the current candidate as the one we like // Mark the current candidate as the one we like
void markCurrent() { mark = current; }; void markCurrent() { mark = current; }
// Get length in code points of the marked word. // Get length in code points of the marked word.
int32_t markedCPLength() { return cpLengths[mark]; }; int32_t markedCPLength() { return cpLengths[mark]; }
}; };

View File

@ -68,7 +68,7 @@ public:
*/ */
class U_COMMON_API DictionaryMatcher : public UMemory { class U_COMMON_API DictionaryMatcher : public UMemory {
public: public:
DictionaryMatcher() {}; DictionaryMatcher() {}
virtual ~DictionaryMatcher(); virtual ~DictionaryMatcher();
// this should emulate CompactTrieDictionary::matches() // this should emulate CompactTrieDictionary::matches()
/* @param text The text in which to look for matching words. Matching begins /* @param text The text in which to look for matching words. Matching begins

View File

@ -720,7 +720,7 @@ struct LookAheadResults {
int32_t fPositions[8]; int32_t fPositions[8];
int16_t fKeys[8]; int16_t fKeys[8];
LookAheadResults() : fUsedSlotLimit(0), fPositions(), fKeys() {}; LookAheadResults() : fUsedSlotLimit(0), fPositions(), fKeys() {}
int32_t getPosition(int16_t key) { int32_t getPosition(int16_t key) {
for (int32_t i=0; i<fUsedSlotLimit; ++i) { for (int32_t i=0; i<fUsedSlotLimit; ++i) {

View File

@ -95,7 +95,7 @@ class RuleBasedBreakIterator::BreakCache: public UMemory {
fTextIdx = fBI->fPosition = fBoundaries[fBufIdx]; fTextIdx = fBI->fPosition = fBoundaries[fBufIdx];
fBI->fRuleStatusIndex = fStatuses[fBufIdx]; fBI->fRuleStatusIndex = fStatuses[fBufIdx];
} }
}; }
void nextOL(); void nextOL();
@ -178,7 +178,7 @@ class RuleBasedBreakIterator::BreakCache: public UMemory {
void dumpCache(); void dumpCache();
private: private:
static inline int32_t modChunkSize(int index) { return index & (CACHE_SIZE - 1); }; static inline int32_t modChunkSize(int index) { return index & (CACHE_SIZE - 1); }
static constexpr int32_t CACHE_SIZE = 128; static constexpr int32_t CACHE_SIZE = 128;
static_assert((CACHE_SIZE & (CACHE_SIZE-1)) == 0, "CACHE_SIZE must be power of two."); static_assert((CACHE_SIZE & (CACHE_SIZE-1)) == 0, "CACHE_SIZE must be power of two.");

View File

@ -54,7 +54,7 @@ public:
struct RBBIRuleChar { struct RBBIRuleChar {
UChar32 fChar; UChar32 fChar;
UBool fEscaped; UBool fEscaped;
RBBIRuleChar() : fChar(0), fEscaped(FALSE) {}; RBBIRuleChar() : fChar(0), fEscaped(FALSE) {}
}; };
RBBIRuleScanner(RBBIRuleBuilder *rb); RBBIRuleScanner(RBBIRuleBuilder *rb);

View File

@ -95,8 +95,8 @@ inline int32_t umtx_atomic_dec(u_atomic_int32_t *var) {
struct UInitOnce { struct UInitOnce {
u_atomic_int32_t fState; u_atomic_int32_t fState;
UErrorCode fErrCode; UErrorCode fErrCode;
void reset() {fState = 0;}; void reset() {fState = 0;}
UBool isReset() {return umtx_loadAcquire(fState) == 0;}; UBool isReset() {return umtx_loadAcquire(fState) == 0;}
// Note: isReset() is used by service registration code. // Note: isReset() is used by service registration code.
// Thread safety of this usage needs review. // Thread safety of this usage needs review.
}; };

View File

@ -137,7 +137,7 @@ class LocaleCacheKey : public CacheKey<T> {
protected: protected:
Locale fLoc; Locale fLoc;
public: public:
LocaleCacheKey(const Locale &loc) : fLoc(loc) {}; LocaleCacheKey(const Locale &loc) : fLoc(loc) {}
LocaleCacheKey(const LocaleCacheKey<T> &other) LocaleCacheKey(const LocaleCacheKey<T> &other)
: CacheKey<T>(other), fLoc(other.fLoc) { } : CacheKey<T>(other), fLoc(other.fLoc) { }
virtual ~LocaleCacheKey() { } virtual ~LocaleCacheKey() { }

View File

@ -36,9 +36,9 @@ U_NAMESPACE_BEGIN
struct CSRecognizerInfo : public UMemory { struct CSRecognizerInfo : public UMemory {
CSRecognizerInfo(CharsetRecognizer *recognizer, UBool isDefaultEnabled) CSRecognizerInfo(CharsetRecognizer *recognizer, UBool isDefaultEnabled)
: recognizer(recognizer), isDefaultEnabled(isDefaultEnabled) {}; : recognizer(recognizer), isDefaultEnabled(isDefaultEnabled) {}
~CSRecognizerInfo() {delete recognizer;}; ~CSRecognizerInfo() {delete recognizer;}
CharsetRecognizer *recognizer; CharsetRecognizer *recognizer;
UBool isDefaultEnabled; UBool isDefaultEnabled;

View File

@ -732,7 +732,11 @@ CharString *Formattable::internalGetCharString(UErrorCode &status) {
// Older ICUs called uprv_decNumberToString here, which is not exactly the same as // Older ICUs called uprv_decNumberToString here, which is not exactly the same as
// DecimalQuantity::toScientificString(). The biggest difference is that uprv_decNumberToString does // DecimalQuantity::toScientificString(). The biggest difference is that uprv_decNumberToString does
// not print scientific notation for magnitudes greater than -5 and smaller than some amount (+5?). // not print scientific notation for magnitudes greater than -5 and smaller than some amount (+5?).
if (fDecimalQuantity->isZero()) { if (fDecimalQuantity->isInfinite()) {
fDecimalStr->append("Infinity", status);
} else if (fDecimalQuantity->isNaN()) {
fDecimalStr->append("NaN", status);
} else if (fDecimalQuantity->isZero()) {
fDecimalStr->append("0", -1, status); fDecimalStr->append("0", -1, status);
} else if (fType==kLong || fType==kInt64 || // use toPlainString for integer types } else if (fType==kLong || fType==kInt64 || // use toPlainString for integer types
(fDecimalQuantity->getMagnitude() != INT32_MIN && std::abs(fDecimalQuantity->getMagnitude()) < 5)) { (fDecimalQuantity->getMagnitude() != INT32_MIN && std::abs(fDecimalQuantity->getMagnitude()) < 5)) {

View File

@ -160,6 +160,11 @@ void DecimalQuantity::applyMaxInteger(int32_t maxInt) {
return; return;
} }
if (maxInt <= scale) {
setBcdToZero();
return;
}
int32_t magnitude = getMagnitude(); int32_t magnitude = getMagnitude();
if (maxInt <= magnitude) { if (maxInt <= magnitude) {
popFromLeft(magnitude - maxInt + 1); popFromLeft(magnitude - maxInt + 1);
@ -983,6 +988,7 @@ void DecimalQuantity::shiftRight(int32_t numDigits) {
} }
void DecimalQuantity::popFromLeft(int32_t numDigits) { void DecimalQuantity::popFromLeft(int32_t numDigits) {
U_ASSERT(numDigits <= precision);
if (usingBytes) { if (usingBytes) {
int i = precision - 1; int i = precision - 1;
for (; i >= precision - numDigits; i--) { for (; i >= precision - numDigits; i--) {

View File

@ -275,7 +275,7 @@ class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
inline bool isUsingBytes() { return usingBytes; } inline bool isUsingBytes() { return usingBytes; }
/** Visible for testing */ /** Visible for testing */
inline bool isExplicitExactDouble() { return explicitExactDouble; }; inline bool isExplicitExactDouble() { return explicitExactDouble; }
bool operator==(const DecimalQuantity& other) const; bool operator==(const DecimalQuantity& other) const;

View File

@ -16,6 +16,7 @@ namespace number {
UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumber) UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumber)
#define UPRV_NOARG
UBool FormattedNumber::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const { UBool FormattedNumber::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE)
@ -29,12 +30,12 @@ void FormattedNumber::getAllFieldPositions(FieldPositionIterator& iterator, UErr
void FormattedNumber::getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih, void FormattedNumber::getAllFieldPositionsImpl(FieldPositionIteratorHandler& fpih,
UErrorCode& status) const { UErrorCode& status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD() UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)
fData->getAllFieldPositions(fpih, status); fData->getAllFieldPositions(fpih, status);
} }
void FormattedNumber::getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const { void FormattedNumber::getDecimalQuantity(impl::DecimalQuantity& output, UErrorCode& status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD() UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)
output = fData->quantity; output = fData->quantity;
} }

View File

@ -98,7 +98,7 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor
int32_t offset = 0; int32_t offset = 0;
explicit ParserState(const UnicodeString& _pattern) explicit ParserState(const UnicodeString& _pattern)
: pattern(_pattern) {}; : pattern(_pattern) {}
ParserState& operator=(ParserState&& src) U_NOEXCEPT { ParserState& operator=(ParserState&& src) U_NOEXCEPT {
// Leave pattern reference alone; it will continue to point to the same place in memory, // Leave pattern reference alone; it will continue to point to the same place in memory,

View File

@ -239,7 +239,7 @@ class U_I18N_API NumberParseMatcher {
*/ */
virtual void postProcess(ParsedNumber&) const { virtual void postProcess(ParsedNumber&) const {
// Default implementation: no-op // Default implementation: no-op
}; }
// String for debugging // String for debugging
virtual UnicodeString toString() const = 0; virtual UnicodeString toString() const = 0;

View File

@ -377,6 +377,7 @@ LocalizedNumberRangeFormatter::getFormatter(UErrorCode& status) const {
UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange) UPRV_FORMATTED_VALUE_SUBCLASS_AUTO_IMPL(FormattedNumberRange)
#define UPRV_NOARG
UBool FormattedNumberRange::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const { UBool FormattedNumberRange::nextFieldPosition(FieldPosition& fieldPosition, UErrorCode& status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE) UPRV_FORMATTED_VALUE_METHOD_GUARD(FALSE)
@ -391,7 +392,7 @@ void FormattedNumberRange::getAllFieldPositions(FieldPositionIterator& iterator,
void FormattedNumberRange::getAllFieldPositionsImpl( void FormattedNumberRange::getAllFieldPositionsImpl(
FieldPositionIteratorHandler& fpih, UErrorCode& status) const { FieldPositionIteratorHandler& fpih, UErrorCode& status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD() UPRV_FORMATTED_VALUE_METHOD_GUARD(UPRV_NOARG)
fData->getAllFieldPositions(fpih, status); fData->getAllFieldPositions(fpih, status);
} }

View File

@ -260,8 +260,8 @@ void NumberingSystem::setName(const char *n) {
if ( n == nullptr ) { if ( n == nullptr ) {
name[0] = (char) 0; name[0] = (char) 0;
} else { } else {
uprv_strncpy(name,n,NUMSYS_NAME_CAPACITY); uprv_strncpy(name,n,kInternalNumSysNameCapacity);
name[NUMSYS_NAME_CAPACITY] = '\0'; // Make sure it is null terminated. name[kInternalNumSysNameCapacity] = '\0'; // Make sure it is null terminated.
} }
} }
UBool NumberingSystem::isAlgorithmic() const { UBool NumberingSystem::isAlgorithmic() const {

View File

@ -40,7 +40,7 @@ class U_I18N_API ScriptSet: public UMemory {
~ScriptSet(); ~ScriptSet();
UBool operator == (const ScriptSet &other) const; UBool operator == (const ScriptSet &other) const;
UBool operator != (const ScriptSet &other) const {return !(*this == other);}; UBool operator != (const ScriptSet &other) const {return !(*this == other);}
ScriptSet & operator = (const ScriptSet &other); ScriptSet & operator = (const ScriptSet &other);
UBool test(UScriptCode script, UErrorCode &status) const; UBool test(UScriptCode script, UErrorCode &status) const;

View File

@ -46,7 +46,7 @@ public:
static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status); static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status);
virtual UBool operator==(const TimeZoneGenericNames& other) const; virtual UBool operator==(const TimeZoneGenericNames& other) const;
virtual UBool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);}; virtual UBool operator!=(const TimeZoneGenericNames& other) const {return !operator==(other);}
virtual TimeZoneGenericNames* clone() const; virtual TimeZoneGenericNames* clone() const;
UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type, UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type,

View File

@ -108,7 +108,7 @@ public:
virtual ~TimeZoneNamesDelegate(); virtual ~TimeZoneNamesDelegate();
virtual UBool operator==(const TimeZoneNames& other) const; virtual UBool operator==(const TimeZoneNames& other) const;
virtual UBool operator!=(const TimeZoneNames& other) const {return !operator==(other);}; virtual UBool operator!=(const TimeZoneNames& other) const {return !operator==(other);}
virtual TimeZoneNames* clone() const; virtual TimeZoneNames* clone() const;
StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const; StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const;

View File

@ -651,7 +651,7 @@ private:
/** /**
* No assignment. * No assignment.
*/ */
AlphabeticIndex &operator =(const AlphabeticIndex & /*other*/) { return *this;}; AlphabeticIndex &operator =(const AlphabeticIndex & /*other*/) { return *this;}
/** /**
* No Equality operators. * No Equality operators.

View File

@ -60,7 +60,7 @@ class U_I18N_API FormattedDateInterval : public UMemory, public FormattedValue {
* Default constructor; makes an empty FormattedDateInterval. * Default constructor; makes an empty FormattedDateInterval.
* @draft ICU 64 * @draft ICU 64
*/ */
FormattedDateInterval() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}; FormattedDateInterval() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
/** /**
* Move constructor: Leaves the source FormattedDateInterval in an undefined state. * Move constructor: Leaves the source FormattedDateInterval in an undefined state.

View File

@ -122,7 +122,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/ */
inline int32_t getCategory() const { inline int32_t getCategory() const {
return fCategory; return fCategory;
}; }
/** /**
* Gets the field for the current position. * Gets the field for the current position.
@ -135,7 +135,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/ */
inline int32_t getField() const { inline int32_t getField() const {
return fField; return fField;
}; }
/** /**
* Gets the INCLUSIVE start index for the current position. * Gets the INCLUSIVE start index for the current position.
@ -147,7 +147,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/ */
inline int32_t getStart() const { inline int32_t getStart() const {
return fStart; return fStart;
}; }
/** /**
* Gets the EXCLUSIVE end index stored for the current position. * Gets the EXCLUSIVE end index stored for the current position.
@ -159,7 +159,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/ */
inline int32_t getLimit() const { inline int32_t getLimit() const {
return fLimit; return fLimit;
}; }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
//// The following methods are for FormattedValue implementers; //// //// The following methods are for FormattedValue implementers; ////

View File

@ -85,7 +85,7 @@ class U_I18N_API FormattedList : public UMemory, public FormattedValue {
* Default constructor; makes an empty FormattedList. * Default constructor; makes an empty FormattedList.
* @draft ICU 64 * @draft ICU 64
*/ */
FormattedList() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}; FormattedList() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
/** /**
* Move constructor: Leaves the source FormattedList in an undefined state. * Move constructor: Leaves the source FormattedList in an undefined state.

View File

@ -113,7 +113,7 @@ class IntegerWidth;
namespace impl { namespace impl {
#ifndef U_HIDE_INTERNAL_API // can't be #ifndef U_HIDE_INTERNAL_API; referenced throughout this file in public classes
/** /**
* Datatype for minimum/maximum fraction digits. Must be able to hold kMaxIntFracSig. * Datatype for minimum/maximum fraction digits. Must be able to hold kMaxIntFracSig.
* *
@ -121,14 +121,14 @@ namespace impl {
*/ */
typedef int16_t digits_t; typedef int16_t digits_t;
// can't be #ifndef U_HIDE_INTERNAL_API; needed for struct initialization
/** /**
* Use a default threshold of 3. This means that the third time .format() is called, the data structures get built * Use a default threshold of 3. This means that the third time .format() is called, the data structures get built
* using the "safe" code path. The first two calls to .format() will trigger the unsafe code path. * using the "safe" code path. The first two calls to .format() will trigger the unsafe code path.
* *
* @internal * @internal
*/ */
static constexpr int32_t DEFAULT_THRESHOLD = 3; static constexpr int32_t kInternalDefaultThreshold = 3;
#endif /* U_HIDE_INTERNAL_API */
// Forward declarations: // Forward declarations:
class Padder; class Padder;
@ -1411,7 +1411,7 @@ struct U_I18N_API MacroProps : public UMemory {
const CurrencySymbols* currencySymbols = nullptr; // no ownership const CurrencySymbols* currencySymbols = nullptr; // no ownership
/** @internal */ /** @internal */
int32_t threshold = DEFAULT_THRESHOLD; int32_t threshold = kInternalDefaultThreshold;
/** @internal */ /** @internal */
Locale locale; Locale locale;
@ -2411,7 +2411,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
* @draft ICU 64 * @draft ICU 64
*/ */
FormattedNumber() FormattedNumber()
: fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}; : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
/** /**
* Move constructor: Leaves the source FormattedNumber in an undefined state. * Move constructor: Leaves the source FormattedNumber in an undefined state.

View File

@ -481,7 +481,7 @@ class U_I18N_API NumberRangeFormatterSettings {
} }
fMacros.copyErrorTo(outErrorCode); fMacros.copyErrorTo(outErrorCode);
return U_FAILURE(outErrorCode); return U_FAILURE(outErrorCode);
}; }
// NOTE: Uses default copy and move constructors. // NOTE: Uses default copy and move constructors.

View File

@ -20,16 +20,6 @@
#include "unicode/utypes.h" #include "unicode/utypes.h"
#ifndef U_HIDE_INTERNAL_API
/**
* \def NUMSYS_NAME_CAPACITY
* Size of a numbering system name.
* @internal
*/
#define NUMSYS_NAME_CAPACITY 8
#endif /* U_HIDE_INTERNAL_API */
/** /**
* \file * \file
* \brief C++ API: NumberingSystem object * \brief C++ API: NumberingSystem object
@ -37,12 +27,18 @@
#if !UCONFIG_NO_FORMATTING #if !UCONFIG_NO_FORMATTING
#include "unicode/format.h" #include "unicode/format.h"
#include "unicode/uobject.h" #include "unicode/uobject.h"
U_NAMESPACE_BEGIN U_NAMESPACE_BEGIN
// can't be #ifndef U_HIDE_INTERNAL_API; needed for char[] field size
/**
* Size of a numbering system name.
* @internal
*/
constexpr const size_t kInternalNumSysNameCapacity = 8;
/** /**
* Defines numbering systems. A numbering system describes the scheme by which * Defines numbering systems. A numbering system describes the scheme by which
* numbers are to be presented to the end user. In its simplest form, a numbering * numbers are to be presented to the end user. In its simplest form, a numbering
@ -195,7 +191,7 @@ private:
UnicodeString desc; UnicodeString desc;
int32_t radix; int32_t radix;
UBool algorithmic; UBool algorithmic;
char name[NUMSYS_NAME_CAPACITY+1]; char name[kInternalNumSysNameCapacity+1];
void setRadix(int32_t radix); void setRadix(int32_t radix);

View File

@ -264,7 +264,7 @@ class U_I18N_API FormattedRelativeDateTime : public UMemory, public FormattedVal
* Default constructor; makes an empty FormattedRelativeDateTime. * Default constructor; makes an empty FormattedRelativeDateTime.
* @draft ICU 64 * @draft ICU 64
*/ */
FormattedRelativeDateTime() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}; FormattedRelativeDateTime() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
/** /**
* Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state. * Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state.
@ -708,11 +708,13 @@ private:
UErrorCode& status, UErrorCode& status,
Args... args) const; Args... args) const;
#ifndef U_HIDE_DRAFT_API // for FormattedRelativeDateTime
template<typename F, typename... Args> template<typename F, typename... Args>
FormattedRelativeDateTime doFormatToValue( FormattedRelativeDateTime doFormatToValue(
F callback, F callback,
UErrorCode& status, UErrorCode& status,
Args... args) const; Args... args) const;
#endif // U_HIDE_DRAFT_API
void formatImpl( void formatImpl(
double quantity, double quantity,

View File

@ -53,11 +53,13 @@ fieldpos.h
filteredbrk.h filteredbrk.h
fmtable.h fmtable.h
format.h format.h
formattedvalue.h
fpositer.h fpositer.h
gender.h gender.h
gregocal.h gregocal.h
idna.h idna.h
listformatter.h listformatter.h
localebuilder.h
locdspnm.h locdspnm.h
locid.h locid.h
measfmt.h measfmt.h

View File

@ -1658,6 +1658,31 @@ void NumberFormatterApiTest::integerWidth() {
u"00.08765", u"00.08765",
u"00.008765", u"00.008765",
u"00"); u"00");
assertFormatSingle(
u"Integer Width Remove All A",
u"integer-width/00",
NumberFormatter::with().integerWidth(IntegerWidth::zeroFillTo(2).truncateAt(2)),
"en",
2500,
u"00");
assertFormatSingle(
u"Integer Width Remove All B",
u"integer-width/00",
NumberFormatter::with().integerWidth(IntegerWidth::zeroFillTo(2).truncateAt(2)),
"en",
25000,
u"00");
assertFormatSingle(
u"Integer Width Remove All B, Bytes Mode",
u"integer-width/00",
NumberFormatter::with().integerWidth(IntegerWidth::zeroFillTo(2).truncateAt(2)),
"en",
// Note: this double produces all 17 significant digits
10000000000000002000.0,
u"00");
} }
void NumberFormatterApiTest::symbols() { void NumberFormatterApiTest::symbols() {

View File

@ -9443,6 +9443,32 @@ void NumberFormatTest::Test20037_ScientificIntegerOverflow() {
assertEquals(u"Should not overflow", assertEquals(u"Should not overflow",
u"3E-2147483648", u"3E-2147483648",
{sp.data(), sp.length(), US_INV}); {sp.data(), sp.length(), US_INV});
// Test largest parseable exponent
result = Formattable();
nf->parse(u"9876e2147483643", result, status);
sp = result.getDecimalNumber(status);
assertEquals(u"Should not overflow",
u"9.876E+2147483646",
{sp.data(), sp.length(), US_INV});
// Test max value as well
const char16_t* infinityInputs[] = {
u"9876e2147483644",
u"9876e2147483645",
u"9876e2147483646",
u"9876e2147483647",
u"9876e2147483648",
u"9876e2147483649",
};
for (const auto& input : infinityInputs) {
result = Formattable();
nf->parse(input, result, status);
sp = result.getDecimalNumber(status);
assertEquals(UnicodeString("Should become Infinity: ") + input,
u"Infinity",
{sp.data(), sp.length(), US_INV});
}
} }
void NumberFormatTest::Test13840_ParseLongStringCrash() { void NumberFormatTest::Test13840_ParseLongStringCrash() {

View File

@ -63,6 +63,9 @@ std::ostream& operator<<(std::ostream& out, const ResKeyPath& value) {
} }
PathFilter::~PathFilter() = default;
void SimpleRuleBasedPathFilter::addRule(const std::string& ruleLine, UErrorCode& status) { void SimpleRuleBasedPathFilter::addRule(const std::string& ruleLine, UErrorCode& status) {
if (ruleLine.empty()) { if (ruleLine.empty()) {
std::cerr << "genrb error: empty filter rules are not allowed" << std::endl; std::cerr << "genrb error: empty filter rules are not allowed" << std::endl;

View File

@ -51,6 +51,8 @@ public:
static const char* kEInclusionNames[]; static const char* kEInclusionNames[];
virtual ~PathFilter();
/** /**
* Returns an EInclusion on whether or not the given path should be included. * Returns an EInclusion on whether or not the given path should be included.
* *

View File

@ -182,7 +182,7 @@ DateFormatSymbols
DateIntervalFormat DateIntervalFormat
<ul> <ul>
<li><span style='color:orange'>(draft)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(Calendar, Calendar)</li> <li><span style='color:orange'>(draft)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(Calendar, Calendar)</li>
<li><span style='color:orange'>(draft)</span> public final DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(DateInterval)</li> <li><span style='color:orange'>(draft)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(DateInterval)</li>
</ul> </ul>
DecimalFormat DecimalFormat
<ul> <ul>
@ -234,8 +234,26 @@ CharsTrie
</ul> </ul>
MeasureUnit MeasureUnit
<ul> <ul>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit BARREL</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit BRITISH_THERMAL_UNIT</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DALTON</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DAY_PERSON</li> <li><span style='color:orange'>(draft)</span> public static final MeasureUnit DAY_PERSON</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit DUNAM</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit EARTH_MASS</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit ELECTRONVOLT</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit FLUID_OUNCE_IMPERIAL</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit KILOPASCAL</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit MEGAPASCAL</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit MOLE</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit MONTH_PERSON</li> <li><span style='color:orange'>(draft)</span> public static final MeasureUnit MONTH_PERSON</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit NEWTON</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit NEWTON_METER</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit PERMYRIAD</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit POUND_FOOT</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit POUND_FORCE</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit SOLAR_LUMINOSITY</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit SOLAR_MASS</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit SOLAR_RADIUS</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit WEEK_PERSON</li> <li><span style='color:orange'>(draft)</span> public static final MeasureUnit WEEK_PERSON</li>
<li><span style='color:orange'>(draft)</span> public static final MeasureUnit YEAR_PERSON</li> <li><span style='color:orange'>(draft)</span> public static final MeasureUnit YEAR_PERSON</li>
</ul> </ul>
@ -246,7 +264,6 @@ VersionInfo
</ul> </ul>
<hr/> <hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Fri Feb 22 16:33:29 EST 2019<br/>© 2019 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html#License">http://www.unicode.org/copyright.html#License</a></font></i></p> <p><i><font size="-1">Contents generated by ReportAPI tool on Mon Mar 25 15:50:58 EDT 2019<br/>© 2019 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html#License">http://www.unicode.org/copyright.html#License</a></font></i></p>
</body> </body>
</html> </html>


View File

@ -141,6 +141,11 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
return; return;
} }
if (maxInt <= scale) {
setBcdToZero();
return;
}
int magnitude = getMagnitude(); int magnitude = getMagnitude();
if (maxInt <= magnitude) { if (maxInt <= magnitude) {
popFromLeft(magnitude - maxInt + 1); popFromLeft(magnitude - maxInt + 1);
@ -205,6 +210,8 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
if (precision != 0) { if (precision != 0) {
scale = Utility.addExact(scale, delta); scale = Utility.addExact(scale, delta);
origDelta = Utility.addExact(origDelta, delta); origDelta = Utility.addExact(origDelta, delta);
// Make sure that precision + scale won't overflow, either
Utility.addExact(scale, precision);
} }
} }

View File

@ -156,6 +156,7 @@ public final class DecimalQuantity_DualStorageBCD extends DecimalQuantity_Abstra
@Override @Override
protected void popFromLeft(int numDigits) { protected void popFromLeft(int numDigits) {
assert numDigits <= precision;
if (usingBytes) { if (usingBytes) {
int i = precision - 1; int i = precision - 1;
for (; i >= precision - numDigits; i--) { for (; i >= precision - numDigits; i--) {
@ -252,17 +253,16 @@ public final class DecimalQuantity_DualStorageBCD extends DecimalQuantity_Abstra
tempLong = tempLong * 10 + getDigitPos(shift); tempLong = tempLong * 10 + getDigitPos(shift);
} }
BigDecimal result = BigDecimal.valueOf(tempLong); BigDecimal result = BigDecimal.valueOf(tempLong);
try { // Test that the new scale fits inside the BigDecimal
long newScale = result.scale() + scale;
if (newScale <= Integer.MIN_VALUE) {
result = BigDecimal.ZERO;
} else {
result = result.scaleByPowerOfTen(scale); result = result.scaleByPowerOfTen(scale);
} catch (ArithmeticException e) {
if (e.getMessage().contains("Underflow")) {
result = BigDecimal.ZERO;
} else {
throw e;
}
} }
if (isNegative()) if (isNegative()) {
result = result.negate(); result = result.negate();
}
return result; return result;
} }
} }

View File

@ -6511,6 +6511,32 @@ public class NumberFormatTest extends TestFmwk {
result = nf.parse(".0003e-2147483644"); result = nf.parse(".0003e-2147483644");
assertEquals("Should not overflow", assertEquals("Should not overflow",
"0", result.toString()); "0", result.toString());
// Test largest parseable exponent
// This is limited by ICU's BigDecimal implementation
result = nf.parse("1e999999999");
assertEquals("Should not overflow",
"1E+999999999", result.toString());
// Test max value as well
String[] infinityInputs = {
"9876e1000000000",
"9876e2147483640",
"9876e2147483641",
"9876e2147483642",
"9876e2147483643",
"9876e2147483644",
"9876e2147483645",
"9876e2147483646",
"9876e2147483647",
"9876e2147483648",
"9876e2147483649",
};
for (String input : infinityInputs) {
result = nf.parse(input);
assertEquals("Should become Infinity: " + input,
"Infinity", result.toString());
}
} }
@Test @Test

View File

@ -1591,6 +1591,31 @@ public class NumberFormatterApiTest {
"00.08765", "00.08765",
"00.008765", "00.008765",
"00"); "00");
assertFormatSingle(
"Integer Width Remove All A",
"integer-width/00",
NumberFormatter.with().integerWidth(IntegerWidth.zeroFillTo(2).truncateAt(2)),
ULocale.ENGLISH,
2500,
"00");
assertFormatSingle(
"Integer Width Remove All B",
"integer-width/00",
NumberFormatter.with().integerWidth(IntegerWidth.zeroFillTo(2).truncateAt(2)),
ULocale.ENGLISH,
25000,
"00");
assertFormatSingle(
"Integer Width Remove All B, Bytes Mode",
"integer-width/00",
NumberFormatter.with().integerWidth(IntegerWidth.zeroFillTo(2).truncateAt(2)),
ULocale.ENGLISH,
// Note: this double produces all 17 significant digits
10000000000000002000.0,
"00");
} }
@Test @Test