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>
</tr>
<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>
</tr>
<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>
</tr>
<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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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">
<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>
@ -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>
</tr>
<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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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>
</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">
<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>
@ -2531,7 +2527,7 @@
<a href="#_top">(jump back to top)</a>
<hr>
<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>
</body>
</html>

View File

@ -298,7 +298,7 @@ public:
*/
MaybeStackArray(int32_t newCapacity) : MaybeStackArray() {
if (capacity < newCapacity) { resize(newCapacity); }
};
}
/**
* 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.
public:
PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {};
~PossibleWord() {};
PossibleWord() : count(0), prefix(0), offset(-1), mark(0), current(0) {}
~PossibleWord() {}
// 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 );
@ -118,13 +118,13 @@ public:
// Return the longest prefix this candidate location shares with a dictionary word
// 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
void markCurrent() { mark = current; };
void markCurrent() { mark = current; }
// 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 {
public:
DictionaryMatcher() {};
DictionaryMatcher() {}
virtual ~DictionaryMatcher();
// this should emulate CompactTrieDictionary::matches()
/* @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];
int16_t fKeys[8];
LookAheadResults() : fUsedSlotLimit(0), fPositions(), fKeys() {};
LookAheadResults() : fUsedSlotLimit(0), fPositions(), fKeys() {}
int32_t getPosition(int16_t key) {
for (int32_t i=0; i<fUsedSlotLimit; ++i) {

View File

@ -95,7 +95,7 @@ class RuleBasedBreakIterator::BreakCache: public UMemory {
fTextIdx = fBI->fPosition = fBoundaries[fBufIdx];
fBI->fRuleStatusIndex = fStatuses[fBufIdx];
}
};
}
void nextOL();
@ -178,7 +178,7 @@ class RuleBasedBreakIterator::BreakCache: public UMemory {
void dumpCache();
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_assert((CACHE_SIZE & (CACHE_SIZE-1)) == 0, "CACHE_SIZE must be power of two.");

View File

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

View File

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

View File

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

View File

@ -36,9 +36,9 @@ U_NAMESPACE_BEGIN
struct CSRecognizerInfo : public UMemory {
CSRecognizerInfo(CharsetRecognizer *recognizer, UBool isDefaultEnabled)
: recognizer(recognizer), isDefaultEnabled(isDefaultEnabled) {};
: recognizer(recognizer), isDefaultEnabled(isDefaultEnabled) {}
~CSRecognizerInfo() {delete recognizer;};
~CSRecognizerInfo() {delete recognizer;}
CharsetRecognizer *recognizer;
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
// 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?).
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);
} else if (fType==kLong || fType==kInt64 || // use toPlainString for integer types
(fDecimalQuantity->getMagnitude() != INT32_MIN && std::abs(fDecimalQuantity->getMagnitude()) < 5)) {

View File

@ -160,6 +160,11 @@ void DecimalQuantity::applyMaxInteger(int32_t maxInt) {
return;
}
if (maxInt <= scale) {
setBcdToZero();
return;
}
int32_t magnitude = getMagnitude();
if (maxInt <= magnitude) {
popFromLeft(magnitude - maxInt + 1);
@ -983,6 +988,7 @@ void DecimalQuantity::shiftRight(int32_t numDigits) {
}
void DecimalQuantity::popFromLeft(int32_t numDigits) {
U_ASSERT(numDigits <= precision);
if (usingBytes) {
int i = precision - 1;
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; }
/** Visible for testing */
inline bool isExplicitExactDouble() { return explicitExactDouble; };
inline bool isExplicitExactDouble() { return explicitExactDouble; }
bool operator==(const DecimalQuantity& other) const;

View File

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

View File

@ -98,7 +98,7 @@ struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider, public UMemor
int32_t offset = 0;
explicit ParserState(const UnicodeString& _pattern)
: pattern(_pattern) {};
: pattern(_pattern) {}
ParserState& operator=(ParserState&& src) U_NOEXCEPT {
// 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 {
// Default implementation: no-op
};
}
// String for debugging
virtual UnicodeString toString() const = 0;

View File

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

View File

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

View File

@ -40,7 +40,7 @@ class U_I18N_API ScriptSet: public UMemory {
~ScriptSet();
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);
UBool test(UScriptCode script, UErrorCode &status) const;

View File

@ -46,7 +46,7 @@ public:
static TimeZoneGenericNames* createInstance(const Locale& locale, UErrorCode& status);
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;
UnicodeString& getDisplayName(const TimeZone& tz, UTimeZoneGenericNameType type,

View File

@ -108,7 +108,7 @@ public:
virtual ~TimeZoneNamesDelegate();
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;
StringEnumeration* getAvailableMetaZoneIDs(UErrorCode& status) const;

View File

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

View File

@ -60,7 +60,7 @@ class U_I18N_API FormattedDateInterval : public UMemory, public FormattedValue {
* Default constructor; makes an empty FormattedDateInterval.
* @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.

View File

@ -122,7 +122,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/
inline int32_t getCategory() const {
return fCategory;
};
}
/**
* Gets the field for the current position.
@ -135,7 +135,7 @@ class U_I18N_API ConstrainedFieldPosition : public UMemory {
*/
inline int32_t getField() const {
return fField;
};
}
/**
* 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 {
return fStart;
};
}
/**
* 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 {
return fLimit;
};
}
////////////////////////////////////////////////////////////////////
//// 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.
* @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.

View File

@ -113,7 +113,7 @@ class IntegerWidth;
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.
*
@ -121,14 +121,14 @@ namespace impl {
*/
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
* using the "safe" code path. The first two calls to .format() will trigger the unsafe code path.
*
* @internal
*/
static constexpr int32_t DEFAULT_THRESHOLD = 3;
#endif /* U_HIDE_INTERNAL_API */
static constexpr int32_t kInternalDefaultThreshold = 3;
// Forward declarations:
class Padder;
@ -1411,7 +1411,7 @@ struct U_I18N_API MacroProps : public UMemory {
const CurrencySymbols* currencySymbols = nullptr; // no ownership
/** @internal */
int32_t threshold = DEFAULT_THRESHOLD;
int32_t threshold = kInternalDefaultThreshold;
/** @internal */
Locale locale;
@ -2411,7 +2411,7 @@ class U_I18N_API FormattedNumber : public UMemory, public FormattedValue {
* @draft ICU 64
*/
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.

View File

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

View File

@ -20,16 +20,6 @@
#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
* \brief C++ API: NumberingSystem object
@ -37,12 +27,18 @@
#if !UCONFIG_NO_FORMATTING
#include "unicode/format.h"
#include "unicode/uobject.h"
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
* numbers are to be presented to the end user. In its simplest form, a numbering
@ -195,7 +191,7 @@ private:
UnicodeString desc;
int32_t radix;
UBool algorithmic;
char name[NUMSYS_NAME_CAPACITY+1];
char name[kInternalNumSysNameCapacity+1];
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.
* @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.
@ -708,11 +708,13 @@ private:
UErrorCode& status,
Args... args) const;
#ifndef U_HIDE_DRAFT_API // for FormattedRelativeDateTime
template<typename F, typename... Args>
FormattedRelativeDateTime doFormatToValue(
F callback,
UErrorCode& status,
Args... args) const;
#endif // U_HIDE_DRAFT_API
void formatImpl(
double quantity,

View File

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

View File

@ -1658,6 +1658,31 @@ void NumberFormatterApiTest::integerWidth() {
u"00.08765",
u"00.008765",
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() {

View File

@ -9443,6 +9443,32 @@ void NumberFormatTest::Test20037_ScientificIntegerOverflow() {
assertEquals(u"Should not overflow",
u"3E-2147483648",
{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() {

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) {
if (ruleLine.empty()) {
std::cerr << "genrb error: empty filter rules are not allowed" << std::endl;

View File

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

View File

@ -182,7 +182,7 @@ DateFormatSymbols
DateIntervalFormat
<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 final DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(DateInterval)</li>
<li><span style='color:orange'>(draft)</span> public DateIntervalFormat.FormattedDateInterval <i>formatToValue</i>(DateInterval)</li>
</ul>
DecimalFormat
<ul>
@ -234,8 +234,26 @@ CharsTrie
</ul>
MeasureUnit
<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 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 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 YEAR_PERSON</li>
</ul>
@ -246,7 +264,6 @@ VersionInfo
</ul>
<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>
</html>


View File

@ -141,6 +141,11 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
return;
}
if (maxInt <= scale) {
setBcdToZero();
return;
}
int magnitude = getMagnitude();
if (maxInt <= magnitude) {
popFromLeft(magnitude - maxInt + 1);
@ -205,6 +210,8 @@ public abstract class DecimalQuantity_AbstractBCD implements DecimalQuantity {
if (precision != 0) {
scale = Utility.addExact(scale, 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
protected void popFromLeft(int numDigits) {
assert numDigits <= precision;
if (usingBytes) {
int i = precision - 1;
for (; i >= precision - numDigits; i--) {
@ -252,17 +253,16 @@ public final class DecimalQuantity_DualStorageBCD extends DecimalQuantity_Abstra
tempLong = tempLong * 10 + getDigitPos(shift);
}
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);
} catch (ArithmeticException e) {
if (e.getMessage().contains("Underflow")) {
result = BigDecimal.ZERO;
} else {
throw e;
}
}
if (isNegative())
if (isNegative()) {
result = result.negate();
}
return result;
}
}

View File

@ -6511,6 +6511,32 @@ public class NumberFormatTest extends TestFmwk {
result = nf.parse(".0003e-2147483644");
assertEquals("Should not overflow",
"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

View File

@ -1591,6 +1591,31 @@ public class NumberFormatterApiTest {
"00.08765",
"00.008765",
"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