mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-10 07:39:16 +00:00
ICU-13634 Merging trunk to branch
X-SVN-Rev: 41162
This commit is contained in:
commit
1b4670fd29
191 changed files with 1089 additions and 656 deletions
153
.gitattributes
vendored
153
.gitattributes
vendored
|
@ -115,78 +115,6 @@ icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm
|
|||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.DateNumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.InvalidFormatException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.JavaTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.TimeZoneGenericNames.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.math.BigDecimal.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.math.MathContext.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.ArabicShapingException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.ChineseDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.CompactDecimalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.CurrencyPluralInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateIntervalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DateIntervalInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DecimalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.MeasureFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.MessageFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.MessageFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.NumberFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.NumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.PluralFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.PluralRules.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.SelectFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.SimpleDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.StringPrepParseException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.TimeUnitFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.text.TimeZoneFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.BuddhistCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.Calendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.ChineseCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.CopticCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.Currency.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.DangiCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.DateInterval.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.DateTimeRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.EthiopicCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.GregorianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.HebrewCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.ICUException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.ICUUncheckedIOException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.IllformedLocaleException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.IndianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.IslamicCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.JapaneseCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.MeasureUnit.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.PersianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.SimpleTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.TaiwanCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.TimeUnit.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.TimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.ULocale.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_56.1/com.ibm.icu.util.VTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_57.1/com.ibm.icu.impl.DateNumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_57.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_57.1/com.ibm.icu.impl.InvalidFormatException.dat -text
|
||||
|
@ -480,6 +408,82 @@ icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_60.1/com.ib
|
|||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_60.1/com.ibm.icu.util.ULocale.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_60.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_60.1/com.ibm.icu.util.VTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.DateNumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.InvalidFormatException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.JavaTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.TZDBTimeZoneNames.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.TimeZoneGenericNames.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.TimeZoneNamesImpl.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.number.CustomSymbolCurrency.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.number.DecimalFormatProperties.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.impl.number.Properties.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.math.BigDecimal.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.math.MathContext.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.ArabicShapingException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.ChineseDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.CompactDecimalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.CurrencyPluralInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateIntervalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DateIntervalInfo.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DecimalFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.MeasureFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.MessageFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.MessageFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.NumberFormat$Field.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.NumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.PluralFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.PluralRules.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.SelectFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.SimpleDateFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.StringPrepParseException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.TimeUnitFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.text.TimeZoneFormat.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.BuddhistCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.Calendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.ChineseCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.CopticCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.Currency.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.DangiCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.DateInterval.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.DateTimeRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.EthiopicCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.GregorianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.HebrewCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.ICUCloneNotSupportedException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.ICUException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.ICUUncheckedIOException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.IllformedLocaleException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.IndianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.IslamicCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.JapaneseCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.MeasureUnit.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.NoUnit.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.PersianCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.SimpleTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.TaiwanCalendar.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.TimeUnit.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.TimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.ULocale.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_61.1/com.ibm.icu.util.VTimeZone.dat -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges1.16.tri2 -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges1.32.tri2 -text
|
||||
icu4j/main/tests/core/src/com/ibm/icu/dev/test/util/Trie2Test.setRanges2.16.tri2 -text
|
||||
|
@ -498,10 +502,6 @@ icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/es.res -text
|
|||
icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/mt.res -text
|
||||
icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/res_index.res -text
|
||||
icu4j/samples/src/com/ibm/icu/samples/iuc/data/reshello/root.res -text
|
||||
icu4j/tools/build/icu4j48.api3.gz -text
|
||||
icu4j/tools/build/icu4j49.api3.gz -text
|
||||
icu4j/tools/build/icu4j50.api3.gz -text
|
||||
icu4j/tools/build/icu4j51.api3.gz -text
|
||||
icu4j/tools/build/icu4j52.api3.gz -text
|
||||
icu4j/tools/build/icu4j53.api3.gz -text
|
||||
icu4j/tools/build/icu4j54.api3.gz -text
|
||||
|
@ -511,6 +511,7 @@ icu4j/tools/build/icu4j57.api3.gz -text
|
|||
icu4j/tools/build/icu4j58.api3.gz -text
|
||||
icu4j/tools/build/icu4j59.api3.gz -text
|
||||
icu4j/tools/build/icu4j60.api3.gz -text
|
||||
icu4j/tools/build/icu4j61.api3.gz -text
|
||||
tools/multi/c/Makefile-c.inc -text
|
||||
tools/multi/c/patch/3_0 -text
|
||||
tools/multi/c/patch/3_2 -text
|
||||
|
|
|
@ -50,11 +50,11 @@
|
|||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(const NumberingSystem*)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(const NumberingSystem*)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>actually, just<br>removed “const”<br>from one param<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(const icu::MeasureUnit*)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(const icu::MeasureUnit*)</td><td class="">Draft<br>ICU 60</td><td>(missing)<br>actually, just<br>removed “const”<br>from one param<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
|
@ -74,11 +74,11 @@
|
|||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_trans(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing) actually,<br>just added “const”<br>to one parameter<br>
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_trans(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing)<br>actually, just<br>added “const”<br>to one param<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_transIncremental(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, UTransPosition*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing) actually,<br>just added “const”<br>to one paramete<br>
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_transIncremental(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, UTransPosition*, UErrorCode*)</td><td class="stabchange">Stable<br>ICU 2.0</td><td>(missing)<br>actually, just<br>added “const”<br>to one param<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -93,6 +93,9 @@
|
|||
<th>File</th><th>API</th><th>ICU 60</th><th>ICU 61</th>
|
||||
</tr>
|
||||
</THEAD>
|
||||
<tr>
|
||||
<td></td><td></td><td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<P></P>
|
||||
<a href="#_top">(jump back to top)</a>
|
||||
|
@ -172,85 +175,81 @@
|
|||
<td class="file">char16ptr.h</td><td class="proto">icu::ConstChar16Ptr::~ConstChar16Ptr()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">dcfmtsym.h</td><td class="proto">const UnicodeString& icu::DecimalFormatSymbols::getConstSymbol(ENumberFormatSymbol)</td><td class="">Internal</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseChangesIterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getCoarseIterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineChangesIterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">Iterator icu::Edits::getFineIterator()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">edits.h</td><td class="proto">UBool icu::Edits::copyErrorTo(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">UBool icu::Edits::hasChanges()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">edits.h</td><td class="proto">icu::Edits::Edits()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">icu::Edits::~Edits()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">edits.h</td><td class="proto">int32_t icu::Edits::lengthDelta()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">void icu::Edits::addReplace(int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">edits.h</td><td class="proto">void icu::Edits::addUnchanged(int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">edits.h</td><td class="proto">void icu::Edits::reset()</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">ubrk.h</td><td class="proto">UBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">ubrk.h</td><td class="proto">int32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">unistr.h</td><td class="proto">UNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const uint16_t*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(const wchar_t*, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">unistr.h</td><td class="proto">icu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">unum.h</td><td class="proto">int32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">upluralrules.h</td><td class="proto">UEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -410,11 +409,11 @@
|
|||
<td class="file">upluralrules.h</td><td class="proto">UEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)</td><td class="" colspan="2" align="center">Draft→Stable<br>ICU 59</td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_trans(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)</td><td class="">(missing) old version<br>(stable) lacked “const”<br>on one parameter</td><td>Stable<br>
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_trans(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)</td><td class="">(missing)<br>old version (stable)<br>lacked “const”<br>on one param</td><td>Stable<br>
|
||||
<span class=""><span>ICU 2.0</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_transIncremental(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, UTransPosition*, UErrorCode*)</td><td class="">(missing) old version<br>(stable) lacked “const”<br>on one parameter</td><td>Stable<br>
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_transIncremental(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, UTransPosition*, UErrorCode*)</td><td class="">(missing)<br>old version (stable)<br>lacked “const”<br>on one param</td><td>Stable<br>
|
||||
<span class=""><span>ICU 2.0</span></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -437,118 +436,114 @@
|
|||
<td class="file">dcfmtsym.h</td><td class="proto">const UnicodeString& icu::DecimalFormatSymbols::getConstDigitSymbol(int32_t)</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">dtptngen.h</td><td class="proto">UnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">measunit.h</td><td class="proto"><tt>static</tt> MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&, const MeasureUnit&, bool*)</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)</td><td class="">(missing)<br>old version<br>had “const”<br>on param</td><td>Draft<br>
|
||||
<span class=""><span>ICU 60</span>
|
||||
<br>
|
||||
<b class="bigwarn" title="A draft API has the wrong version.">(should be ICU 61)</b></span></td>
|
||||
<b class="bigwarn" title="A draft API has the wrong version.">(should be ICU 61)</b><br>decided to keep draft ICU 60</span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)</td><td class="">(missing)<br>old version<br>had “const”<br>on param</td><td>Draft<br>
|
||||
<span class=""><span>ICU 60</span>
|
||||
<br>
|
||||
<b class="bigwarn" title="A draft API has the wrong version.">(should be ICU 61)</b><br>decided to keep draft ICU 60</span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 60</span>
|
||||
<br>
|
||||
<b class="bigwarn" title="A draft API has the wrong version.">(should be ICU 61)</b></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::grouping(const UGroupingStrategy&)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">Derived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UGroupingStrategy::UNUM_GROUPING_AUTO</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UGroupingStrategy::UNUM_GROUPING_MIN2</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UGroupingStrategy::UNUM_GROUPING_OFF</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UGroupingStrategy::UNUM_GROUPING_ON_ALIGNED</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UGroupingStrategy::UNUM_GROUPING_THOUSANDS</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>enum</tt> UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">numberformatter.h</td><td class="proto">icu::number::impl::Grouper::Grouper(int16_t, int16_t, int16_t)</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">numberformatter.h</td><td class="proto"><tt>static</tt> Grouper icu::number::impl::Grouper::forStrategy(UGroupingStrategy)</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">rbbi.h</td><td class="proto">void icu::RuleBasedBreakIterator::dumpTables()</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">ucurr.h</td><td class="proto"><tt>enum</tt> UCurrNameStyle::UCURR_NARROW_SYMBOL_NAME</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePGDisplayWidth::UDATPG_ABBREVIATED</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePGDisplayWidth::UDATPG_NARROW</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">udatpg.h</td><td class="proto"><tt>enum</tt> UDateTimePGDisplayWidth::UDATPG_WIDE</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">udatpg.h</td><td class="proto">int32_t udatpg_getFieldDisplayName(const UDateTimePatternGenerator*, UDateTimePatternField, UDateTimePGDisplayWidth, UChar*, int32_t, UErrorCode*)</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">utf8.h</td><td class="proto"><tt>#define</tt> U8_INTERNAL_NEXT_OR_SUB</td><td class="">(missing)</td><td>Internal<br>
|
||||
<span class=""><span></span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">utf8.h</td><td class="proto"><tt>#define</tt> U8_TRUNCATE_IF_INCOMPLETE</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<tr class="row1">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_trans(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)</td><td class="">(missing) old version<br>(stable) lacked “const”<br>on one parameter</td><td>Stable<br>
|
||||
<span class=""><span>ICU 2.0</span></span></td>
|
||||
</tr>
|
||||
<tr class="row1">
|
||||
<tr class="row0">
|
||||
<td class="file">utrans.h</td><td class="proto">void utrans_transIncremental(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, UTransPosition*, UErrorCode*)</td><td class="">(missing) old version<br>(stable) lacked “const”<br>on one parameter</td><td>Stable<br>
|
||||
<span class=""><span>ICU 2.0</span></span></td>
|
||||
</tr>
|
||||
<tr class="row0">
|
||||
<td class="file">utypes.h</td><td class="proto"><tt>enum</tt> UErrorCode::U_NUMBER_ARG_OUTOFBOUNDS_ERROR</td><td class="">(missing)</td><td>Draft<br>
|
||||
<span class=""><span>ICU 61</span></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
<P></P>
|
||||
<a href="#_top">(jump back to top)</a>
|
||||
|
@ -903,13 +898,12 @@
|
|||
<i>This section shows cases where the signature was "simplified" for the sake of comparison. The simplified form is in bold, followed by
|
||||
all possible variations in "original" form.</i>
|
||||
<div class="other">
|
||||
<ul></ul>
|
||||
</div>
|
||||
<P></P>
|
||||
<a href="#_top">(jump back to top)</a>
|
||||
<hr>
|
||||
<p>
|
||||
<i><font size="-1">Contents generated by StableAPI tool on Thu Mar 01 06:18:25 UTC 2018<br>Copyright (C) 2018, International Business Machines Corporation, All Rights Reserved.</font></i>
|
||||
<i><font size="-1">Contents generated by StableAPI tool on Wed Mar 07 19:18:25 UTC 2018<br>Copyright (C) 2018, International Business Machines Corporation, All Rights Reserved.</font></i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
|
||||
|
||||
Copyright © 1991-2017 Unicode, Inc. All rights reserved.
|
||||
Distributed under the Terms of Use in http://www.unicode.org/copyright.html
|
||||
Copyright © 1991-2018 Unicode, Inc. All rights reserved.
|
||||
Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Unicode data files and any associated documentation
|
||||
|
|
|
@ -693,6 +693,11 @@ FilteredBreakIteratorBuilder::createInstance(const Locale& where, UErrorCode& st
|
|||
return (U_SUCCESS(status))? ret.orphan(): NULL;
|
||||
}
|
||||
|
||||
FilteredBreakIteratorBuilder *
|
||||
FilteredBreakIteratorBuilder::createInstance(UErrorCode &status) {
|
||||
return createEmptyInstance(status);
|
||||
}
|
||||
|
||||
FilteredBreakIteratorBuilder *
|
||||
FilteredBreakIteratorBuilder::createEmptyInstance(UErrorCode& status) {
|
||||
if(U_FAILURE(status)) return NULL;
|
||||
|
|
|
@ -154,7 +154,6 @@ private:
|
|||
const char *s;
|
||||
};
|
||||
|
||||
// don't use #ifndef U_HIDE_INTERNAL_API with private class members or virtual methods.
|
||||
virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length,
|
||||
Node *nextNode) const;
|
||||
|
||||
|
|
|
@ -64,9 +64,7 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject {
|
|||
* @deprecated ICU 60 use createEmptyInstance instead
|
||||
* @see createEmptyInstance()
|
||||
*/
|
||||
static inline FilteredBreakIteratorBuilder *createInstance(UErrorCode &status) {
|
||||
return createEmptyInstance(status);
|
||||
}
|
||||
static FilteredBreakIteratorBuilder *createInstance(UErrorCode &status);
|
||||
#endif /* U_HIDE_DEPRECATED_API */
|
||||
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
|
@ -105,7 +103,6 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject {
|
|||
*/
|
||||
virtual UBool unsuppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
|
||||
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
/**
|
||||
* This function has been deprecated in favor of wrapIteratorWithFilter()
|
||||
* The behavior is identical.
|
||||
|
@ -116,7 +113,6 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject {
|
|||
* @see wrapBreakIteratorWithFilter()
|
||||
*/
|
||||
virtual BreakIterator *build(BreakIterator* adoptBreakIterator, UErrorCode& status) = 0;
|
||||
#endif /* U_HIDE_DEPRECATED_API */
|
||||
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
/**
|
||||
|
|
|
@ -102,8 +102,10 @@ typedef enum UCurrNameStyle {
|
|||
* currency, such as "US Dollar" for USD.
|
||||
* @stable ICU 2.6
|
||||
*/
|
||||
UCURR_LONG_NAME,
|
||||
UCURR_LONG_NAME
|
||||
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
,
|
||||
/**
|
||||
* Selector for getName() indicating the narrow currency symbol.
|
||||
* The narrow currency symbol is similar to the regular currency
|
||||
|
@ -113,6 +115,7 @@ typedef enum UCurrNameStyle {
|
|||
* @draft ICU 61
|
||||
*/
|
||||
UCURR_NARROW_SYMBOL_NAME
|
||||
#endif // U_HIDE_DRAFT_API
|
||||
} UCurrNameStyle;
|
||||
|
||||
#if !UCONFIG_NO_SERVICE
|
||||
|
|
|
@ -609,6 +609,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i);
|
|||
} \
|
||||
}
|
||||
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
/**
|
||||
* If the string ends with a UTF-8 byte sequence that is valid so far
|
||||
* but incomplete, then reduce the length of the string to end before
|
||||
|
@ -657,6 +658,7 @@ utf8_back1SafeBody(const uint8_t *s, int32_t start, int32_t i);
|
|||
} \
|
||||
} \
|
||||
}
|
||||
#endif // U_HIDE_DRAFT_API
|
||||
|
||||
/* definitions with backward iteration -------------------------------------- */
|
||||
|
||||
|
|
|
@ -539,13 +539,15 @@ typedef enum UErrorCode {
|
|||
U_DEFAULT_KEYWORD_MISSING, /**< Missing DEFAULT rule in plural rules */
|
||||
U_DECIMAL_NUMBER_SYNTAX_ERROR, /**< Decimal number syntax error */
|
||||
U_FORMAT_INEXACT_ERROR, /**< Cannot format a number exactly and rounding mode is ROUND_UNNECESSARY @stable ICU 4.8 */
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
U_NUMBER_ARG_OUTOFBOUNDS_ERROR, /**< The argument to a NumberFormatter helper method was out of bounds; the bounds are usually 0 to 999. @draft ICU 61 */
|
||||
#endif // U_HIDE_DRAFT_API
|
||||
#ifndef U_HIDE_DEPRECATED_API
|
||||
/**
|
||||
* One more than the highest normal formatting API error code.
|
||||
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
|
||||
*/
|
||||
U_FMT_PARSE_ERROR_LIMIT,
|
||||
U_FMT_PARSE_ERROR_LIMIT = 0x10113,
|
||||
#endif // U_HIDE_DEPRECATED_API
|
||||
|
||||
/*
|
||||
|
|
|
@ -263,13 +263,10 @@ UBool UnifiedCache::_flush(UBool all) const {
|
|||
int32_t UnifiedCache::_computeCountOfItemsToEvict() const {
|
||||
int32_t totalItems = uhash_count(fHashtable);
|
||||
int32_t evictableItems = totalItems - fNumValuesInUse;
|
||||
U_ASSERT(totalItems >= fNumValuesInUse);
|
||||
U_ASSERT(totalItems >= evictableItems);
|
||||
|
||||
int32_t unusedLimitByPercentage = fNumValuesInUse * fMaxPercentageOfInUse / 100;
|
||||
int32_t unusedLimit = std::max(unusedLimitByPercentage, fMaxUnused);
|
||||
int32_t countOfItemsToEvict = std::max(0, evictableItems - unusedLimit);
|
||||
U_ASSERT(countOfItemsToEvict >= 0 && countOfItemsToEvict <= evictableItems);
|
||||
return countOfItemsToEvict;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//---------------------------------------------------------
|
||||
//---------------------------------------------------------
|
||||
// Copyright (C) 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html
|
||||
//---------------------------------------------------------
|
||||
|
@ -6,7 +6,7 @@
|
|||
// Corporation and others. All Rights Reserved.
|
||||
//---------------------------------------------------------
|
||||
// Build tool: com.ibm.icu.dev.tool.currency.NumericCodeData
|
||||
// Build date: 2017-09-28T21:49:02Z
|
||||
// Build date: 2018-03-06T17:38:16Z
|
||||
//---------------------------------------------------------
|
||||
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
|
||||
// >> !!! >>> DO NOT EDIT <<< !!! <<
|
||||
|
@ -179,6 +179,7 @@ currencyNumericCodes:table(nofallback){
|
|||
MNT:int{496}
|
||||
MOP:int{446}
|
||||
MRO:int{478}
|
||||
MRU:int{929}
|
||||
MTL:int{470}
|
||||
MTP:int{470}
|
||||
MUR:int{480}
|
||||
|
@ -239,6 +240,7 @@ currencyNumericCodes:table(nofallback){
|
|||
SRG:int{740}
|
||||
SSP:int{728}
|
||||
STD:int{678}
|
||||
STN:int{930}
|
||||
SUR:int{810}
|
||||
SVC:int{222}
|
||||
SYP:int{760}
|
||||
|
|
|
@ -437,15 +437,19 @@ DecimalFormatSymbols::initialize(const Locale& loc, UErrorCode& status,
|
|||
sink.resolveMissingMonetarySeparators(fSymbols);
|
||||
|
||||
// Resolve codePointZero
|
||||
const UnicodeString& stringZero = getConstDigitSymbol(0);
|
||||
UChar32 tempCodePointZero = stringZero.char32At(0);
|
||||
if (u_isdigit(tempCodePointZero) && stringZero.countChar32() == 1) {
|
||||
for (int32_t i=0; i<=9; i++) {
|
||||
const UnicodeString& stringDigit = getConstDigitSymbol(i);
|
||||
if (stringDigit.char32At(0) != tempCodePointZero + i || stringDigit.countChar32() != 1) {
|
||||
tempCodePointZero = -1;
|
||||
break;
|
||||
}
|
||||
UChar32 tempCodePointZero;
|
||||
for (int32_t i=0; i<=9; i++) {
|
||||
const UnicodeString& stringDigit = getConstDigitSymbol(i);
|
||||
if (stringDigit.countChar32() != 1) {
|
||||
tempCodePointZero = -1;
|
||||
break;
|
||||
}
|
||||
UChar32 cp = stringDigit.char32At(0);
|
||||
if (i == 0) {
|
||||
tempCodePointZero = cp;
|
||||
} else if (cp != tempCodePointZero + i) {
|
||||
tempCodePointZero = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
fCodePointZero = tempCodePointZero;
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#include <math.h>
|
||||
|
||||
// ICU PATCH: Customize header file paths for ICU.
|
||||
|
@ -39,6 +43,9 @@
|
|||
#include "double-conversion-bignum.h"
|
||||
#include "double-conversion-ieee.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
static int NormalizedExponent(uint64_t significand, int exponent) {
|
||||
|
@ -646,3 +653,7 @@ static void FixupMultiply10(int estimated_power, bool is_even,
|
|||
}
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
||||
#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
enum BignumDtoaMode {
|
||||
|
@ -88,4 +95,8 @@ void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits,
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,11 +30,18 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
// ICU PATCH: Customize header file paths for ICU.
|
||||
|
||||
#include "double-conversion-bignum.h"
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
Bignum::Bignum()
|
||||
|
@ -771,3 +778,7 @@ void Bignum::SubtractTimes(const Bignum& other, int factor) {
|
|||
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_BIGNUM_H_
|
||||
#define DOUBLE_CONVERSION_BIGNUM_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
class Bignum {
|
||||
|
@ -148,4 +155,8 @@ class Bignum {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_BIGNUM_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
|
@ -40,6 +44,9 @@
|
|||
|
||||
#include "double-conversion-cached-powers.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
struct CachedPower {
|
||||
|
@ -180,3 +187,7 @@ void PowersOfTenCache::GetCachedPowerForDecimalExponent(int requested_exponent,
|
|||
}
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_
|
||||
#define DOUBLE_CONVERSION_CACHED_POWERS_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-diy-fp.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
class PowersOfTenCache {
|
||||
|
@ -68,4 +75,8 @@ class PowersOfTenCache {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_CACHED_POWERS_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,12 +30,18 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
// ICU PATCH: Customize header file paths for ICU.
|
||||
|
||||
#include "double-conversion-diy-fp.h"
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
void DiyFp::Multiply(const DiyFp& other) {
|
||||
|
@ -62,3 +68,7 @@ void DiyFp::Multiply(const DiyFp& other) {
|
|||
}
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_DIY_FP_H_
|
||||
#define DOUBLE_CONVERSION_DIY_FP_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
// This "Do It Yourself Floating Point" class implements a floating-point number
|
||||
|
@ -122,4 +129,8 @@ class DiyFp {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_DIY_FP_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
// ICU PATCH: Customize header file paths for ICU.
|
||||
|
||||
#include "double-conversion-fast-dtoa.h"
|
||||
|
@ -38,6 +42,9 @@
|
|||
#include "double-conversion-diy-fp.h"
|
||||
#include "double-conversion-ieee.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
// The minimal and maximal target exponent define the range of w's binary
|
||||
|
@ -670,3 +677,7 @@ bool FastDtoa(double v,
|
|||
}
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_
|
||||
#define DOUBLE_CONVERSION_FAST_DTOA_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
enum FastDtoaMode {
|
||||
|
@ -92,4 +99,8 @@ bool FastDtoa(double d,
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_FAST_DTOA_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_DOUBLE_H_
|
||||
#define DOUBLE_CONVERSION_DOUBLE_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-diy-fp.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
// We assume that doubles and uint64_t have the same endianness.
|
||||
|
@ -406,4 +413,8 @@ class Single {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_DOUBLE_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_UTILS_H_
|
||||
#define DOUBLE_CONVERSION_UTILS_H_
|
||||
|
||||
|
@ -159,6 +163,9 @@ typedef uint16_t uc16;
|
|||
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
||||
#endif
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
static const int kCharSize = sizeof(char);
|
||||
|
@ -344,4 +351,8 @@ inline Dest BitCast(Source* source) {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_UTILS_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
|
||||
|
@ -43,6 +47,9 @@
|
|||
#include "double-conversion-ieee.h"
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
#if 0 // not needed for ICU
|
||||
|
@ -992,3 +999,7 @@ float StringToDoubleConverter::StringToFloat(
|
|||
#endif // not needed for ICU
|
||||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// ICU PATCH: ifdef around UCONFIG_NO_FORMATTING
|
||||
#include "unicode/utypes.h"
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
||||
#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||
#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||
|
||||
|
@ -37,6 +41,9 @@
|
|||
|
||||
#include "double-conversion-utils.h"
|
||||
|
||||
// ICU PATCH: Wrap in ICU namespace
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
namespace double_conversion {
|
||||
|
||||
class DoubleToStringConverter {
|
||||
|
@ -552,4 +559,8 @@ class StringToDoubleConverter {
|
|||
|
||||
} // namespace double_conversion
|
||||
|
||||
// ICU PATCH: Close ICU namespace
|
||||
U_NAMESPACE_END
|
||||
|
||||
#endif // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||
#endif // ICU PATCH: close #if !UCONFIG_NO_FORMATTING
|
||||
|
|
|
@ -271,6 +271,8 @@ static const char* const CLDR_FIELD_WIDTH[] = { // [UDATPG_WIDTH_COUNT]
|
|||
"", "-short", "-narrow"
|
||||
};
|
||||
|
||||
// TODO(ticket:13619): remove when definition uncommented in dtptngen.h.
|
||||
static const int32_t UDATPG_WIDTH_COUNT = UDATPG_NARROW + 1;
|
||||
static constexpr UDateTimePGDisplayWidth UDATPG_WIDTH_APPENDITEM = UDATPG_WIDE;
|
||||
static constexpr int32_t UDATPG_FIELD_KEY_MAX = 24; // max length of CLDR field tag (type + width)
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ using namespace icu;
|
|||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
using double_conversion::DoubleToStringConverter;
|
||||
using icu::double_conversion::DoubleToStringConverter;
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
|
@ -438,7 +438,7 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
|
|||
status = U_REGEX_INVALID_CAPTURE_GROUP_NAME;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else if (u_isdigit(nextChar)) {
|
||||
// $n Scan for a capture group number
|
||||
int32_t numCaptureGroups = fPattern->fGroupMap->size();
|
||||
|
@ -459,7 +459,7 @@ RegexMatcher &RegexMatcher::appendReplacement(UText *dest,
|
|||
break;
|
||||
}
|
||||
(void)UTEXT_NEXT32(replacement);
|
||||
groupNum=groupNum*10 + nextDigitVal;
|
||||
groupNum=groupNum*10 + nextDigitVal;
|
||||
++numDigits;
|
||||
}
|
||||
} else {
|
||||
|
@ -2187,7 +2187,7 @@ int32_t RegexMatcher::split(UText *input,
|
|||
break;
|
||||
}
|
||||
i++;
|
||||
dest[i] = utext_extract_replace(fInputText, dest[i],
|
||||
dest[i] = utext_extract_replace(fInputText, dest[i],
|
||||
start64(groupNum, status), end64(groupNum, status), &status);
|
||||
}
|
||||
|
||||
|
@ -5469,7 +5469,7 @@ GC_Done:
|
|||
if (lbStartIdx < 0) {
|
||||
// First time through loop.
|
||||
lbStartIdx = fp->fInputIdx - minML;
|
||||
if (lbStartIdx > 0) {
|
||||
if (lbStartIdx > 0 && lbStartIdx < fInputLength) {
|
||||
U16_SET_CP_START(inputBuf, 0, lbStartIdx);
|
||||
}
|
||||
} else {
|
||||
|
@ -5546,7 +5546,7 @@ GC_Done:
|
|||
if (lbStartIdx < 0) {
|
||||
// First time through loop.
|
||||
lbStartIdx = fp->fInputIdx - minML;
|
||||
if (lbStartIdx > 0) {
|
||||
if (lbStartIdx > 0 && lbStartIdx < fInputLength) {
|
||||
U16_SET_CP_START(inputBuf, 0, lbStartIdx);
|
||||
}
|
||||
} else {
|
||||
|
@ -5818,3 +5818,4 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(RegexMatcher)
|
|||
U_NAMESPACE_END
|
||||
|
||||
#endif // !UCONFIG_NO_REGULAR_EXPRESSIONS
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include "unicode/utypes.h"
|
||||
/**
|
||||
* \file
|
||||
* \brief C++ API: Formats decimal numbers in compact form.
|
||||
* \brief C++ API: Compatibility APIs for compact decimal number formatting.
|
||||
*/
|
||||
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
|
@ -30,6 +30,11 @@ U_NAMESPACE_BEGIN
|
|||
class PluralRules;
|
||||
|
||||
/**
|
||||
* <p><strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* numberformatter.h fits their use case. Although not deprecated, this header
|
||||
* is provided for backwards compatibility only.
|
||||
* <hr/>
|
||||
*
|
||||
* The CompactDecimalFormat produces abbreviated numbers, suitable for display in
|
||||
* environments will limited real estate. For example, 'Hits: 1.2B' instead of
|
||||
* 'Hits: 1,200,000,000'. The format will be appropriate for the given language,
|
||||
|
@ -56,6 +61,9 @@ public:
|
|||
|
||||
/**
|
||||
* Returns a compact decimal instance for specified locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param inLocale the given locale.
|
||||
* @param style whether to use short or long style.
|
||||
* @param status error code returned here.
|
||||
|
|
|
@ -411,7 +411,7 @@ public:
|
|||
*
|
||||
* @param symbol Constant to indicate a number format symbol.
|
||||
* @return the format symbol by the param 'symbol'
|
||||
* @draft ICU 61
|
||||
* @internal
|
||||
*/
|
||||
inline const UnicodeString& getConstSymbol(ENumberFormatSymbol symbol) const;
|
||||
|
||||
|
@ -501,7 +501,7 @@ DecimalFormatSymbols::getSymbol(ENumberFormatSymbol symbol) const {
|
|||
return *strPtr;
|
||||
}
|
||||
|
||||
// See comments above for this function. Not hidden with #ifndef U_HIDE_INTERNAL_API
|
||||
// See comments above for this function. Not hidden with #ifdef U_HIDE_INTERNAL_API
|
||||
inline const UnicodeString &
|
||||
DecimalFormatSymbols::getConstSymbol(ENumberFormatSymbol symbol) const {
|
||||
const UnicodeString *strPtr;
|
||||
|
@ -513,6 +513,7 @@ DecimalFormatSymbols::getConstSymbol(ENumberFormatSymbol symbol) const {
|
|||
return *strPtr;
|
||||
}
|
||||
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
inline const UnicodeString& DecimalFormatSymbols::getConstDigitSymbol(int32_t digit) const {
|
||||
if (digit < 0 || digit > 9) {
|
||||
digit = 0;
|
||||
|
@ -523,6 +524,7 @@ inline const UnicodeString& DecimalFormatSymbols::getConstDigitSymbol(int32_t di
|
|||
ENumberFormatSymbol key = static_cast<ENumberFormatSymbol>(kOneDigitSymbol + digit - 1);
|
||||
return fSymbols[key];
|
||||
}
|
||||
#endif
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ template class U_I18N_API EnumSet<UNumberFormatAttribute,
|
|||
/**
|
||||
* <p><strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* numberformatter.h fits their use case. Although not deprecated, this header
|
||||
* is on life support and is provided for backwards compatibility only.
|
||||
* is provided for backwards compatibility only.
|
||||
* <hr/>
|
||||
*
|
||||
* DecimalFormat is a concrete subclass of NumberFormat that formats decimal
|
||||
|
@ -704,6 +704,9 @@ class U_I18N_API DecimalFormat : public NumberFormat {
|
|||
* on NumberFormat such as createInstance. These factories will
|
||||
* return the most appropriate sub-class of NumberFormat for a given
|
||||
* locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of DecimalFormat.
|
||||
* @param status Output param set to success/failure code. If the
|
||||
* pattern is invalid this will be set to a failure code.
|
||||
* @stable ICU 2.0
|
||||
|
@ -719,6 +722,9 @@ class U_I18N_API DecimalFormat : public NumberFormat {
|
|||
* on NumberFormat such as createInstance. These factories will
|
||||
* return the most appropriate sub-class of NumberFormat for a given
|
||||
* locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of DecimalFormat.
|
||||
* @param pattern A non-localized pattern string.
|
||||
* @param status Output param set to success/failure code. If the
|
||||
* pattern is invalid this will be set to a failure code.
|
||||
|
@ -736,6 +742,9 @@ class U_I18N_API DecimalFormat : public NumberFormat {
|
|||
* createInstance or createCurrencyInstance. If you need only minor adjustments
|
||||
* to a standard format, you can modify the format returned by
|
||||
* a NumberFormat factory method.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of DecimalFormat.
|
||||
*
|
||||
* @param pattern a non-localized pattern string
|
||||
* @param symbolsToAdopt the set of symbols to be used. The caller should not
|
||||
|
@ -841,6 +850,9 @@ class U_I18N_API DecimalFormat : public NumberFormat {
|
|||
* createInstance or createCurrencyInstance. If you need only minor adjustments
|
||||
* to a standard format, you can modify the format returned by
|
||||
* a NumberFormat factory method.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of DecimalFormat.
|
||||
*
|
||||
* @param pattern a non-localized pattern string
|
||||
* @param symbolsToAdopt the set of symbols to be used. The caller should not
|
||||
|
@ -863,6 +875,9 @@ class U_I18N_API DecimalFormat : public NumberFormat {
|
|||
* createInstance or createCurrencyInstance. If you need only minor adjustments
|
||||
* to a standard format, you can modify the format returned by
|
||||
* a NumberFormat factory method.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of DecimalFormat.
|
||||
*
|
||||
* @param pattern a non-localized pattern string
|
||||
* @param symbols the set of symbols to be used
|
||||
|
|
|
@ -522,7 +522,8 @@ private:
|
|||
*/
|
||||
DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
|
||||
|
||||
static const int32_t UDATPG_WIDTH_COUNT = UDATPG_NARROW + 1;
|
||||
// TODO(ticket:13619): re-enable when UDATPG_NARROW no longer in draft mode.
|
||||
// static const int32_t UDATPG_WIDTH_COUNT = UDATPG_NARROW + 1;
|
||||
|
||||
Locale pLocale; // pattern locale
|
||||
FormatParser *fp;
|
||||
|
@ -530,7 +531,8 @@ private:
|
|||
DistanceInfo *distanceInfo;
|
||||
PatternMap *patternMap;
|
||||
UnicodeString appendItemFormats[UDATPG_FIELD_COUNT];
|
||||
UnicodeString fieldDisplayNames[UDATPG_FIELD_COUNT][UDATPG_WIDTH_COUNT];
|
||||
// TODO(ticket:13619): [3] -> UDATPG_WIDTH_COUNT
|
||||
UnicodeString fieldDisplayNames[UDATPG_FIELD_COUNT][3];
|
||||
UnicodeString dateTimeFormat;
|
||||
UnicodeString decimal;
|
||||
DateTimeMatcher *skipMatcher;
|
||||
|
@ -560,9 +562,11 @@ private:
|
|||
void setDateTimeFromCalendar(const Locale& locale, UErrorCode& status);
|
||||
void setDecimalSymbols(const Locale& locale, UErrorCode& status);
|
||||
UDateTimePatternField getAppendFormatNumber(const char* field) const;
|
||||
#ifndef U_HIDE_DRAFT_API
|
||||
UDateTimePatternField getFieldAndWidthIndices(const char* key, UDateTimePGDisplayWidth* widthP) const;
|
||||
void setFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width, const UnicodeString& value);
|
||||
UnicodeString& getMutableFieldDisplayName(UDateTimePatternField field, UDateTimePGDisplayWidth width);
|
||||
#endif // U_HIDE_DRAFT_API
|
||||
void getAppendName(UDateTimePatternField field, UnicodeString& value);
|
||||
UnicodeString mapSkeletonMetacharacters(const UnicodeString& patternForm, int32_t* flags, UErrorCode& status);
|
||||
int32_t getCanonicalIndex(const UnicodeString& field);
|
||||
|
|
|
@ -89,7 +89,7 @@ class DateFormat;
|
|||
/**
|
||||
* <p><strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* numberformatter.h fits their use case. Although not deprecated, this header
|
||||
* is on life support and is provided for backwards compatibility only.
|
||||
* is provided for backwards compatibility only.
|
||||
*
|
||||
* @see Format
|
||||
* @author Alan Liu
|
||||
|
@ -102,6 +102,9 @@ class U_I18N_API MeasureFormat : public Format {
|
|||
|
||||
/**
|
||||
* Constructor.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 53
|
||||
*/
|
||||
MeasureFormat(
|
||||
|
@ -109,6 +112,9 @@ class U_I18N_API MeasureFormat : public Format {
|
|||
|
||||
/**
|
||||
* Constructor.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 53
|
||||
*/
|
||||
MeasureFormat(
|
||||
|
@ -228,6 +234,9 @@ class U_I18N_API MeasureFormat : public Format {
|
|||
/**
|
||||
* Return a formatter for CurrencyAmount objects in the given
|
||||
* locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param locale desired locale
|
||||
* @param ec input-output error code
|
||||
* @return a formatter object, or NULL upon error
|
||||
|
@ -239,6 +248,9 @@ class U_I18N_API MeasureFormat : public Format {
|
|||
/**
|
||||
* Return a formatter for CurrencyAmount objects in the default
|
||||
* locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param ec input-output error code
|
||||
* @return a formatter object, or NULL upon error
|
||||
* @stable ICU 3.0
|
||||
|
|
|
@ -106,6 +106,7 @@ class IntegerWidth;
|
|||
|
||||
namespace impl {
|
||||
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
/**
|
||||
* Datatype for minimum/maximum fraction digits. Must be able to hold kMaxIntFracSig.
|
||||
*
|
||||
|
@ -120,6 +121,7 @@ typedef int16_t digits_t;
|
|||
* @internal
|
||||
*/
|
||||
static constexpr int32_t DEFAULT_THRESHOLD = 3;
|
||||
#endif // U_HIDE_INTERNAL_API
|
||||
|
||||
// Forward declarations:
|
||||
class Padder;
|
||||
|
@ -966,6 +968,7 @@ class U_I18N_API IntegerWidth : public UMemory {
|
|||
|
||||
namespace impl {
|
||||
|
||||
// Do not enclose entire SymbolsWrapper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
|
||||
/** @internal */
|
||||
class U_I18N_API SymbolsWrapper : public UMemory {
|
||||
public:
|
||||
|
@ -987,6 +990,8 @@ class U_I18N_API SymbolsWrapper : public UMemory {
|
|||
/** @internal */
|
||||
SymbolsWrapper &operator=(SymbolsWrapper&& src) U_NOEXCEPT;
|
||||
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
|
||||
/**
|
||||
* The provided object is copied, but we do not adopt it.
|
||||
* @internal
|
||||
|
@ -1035,6 +1040,8 @@ class U_I18N_API SymbolsWrapper : public UMemory {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
#endif // U_HIDE_INTERNAL_API
|
||||
|
||||
private:
|
||||
enum SymbolsPointerType {
|
||||
SYMPTR_NONE, SYMPTR_DFS, SYMPTR_NS
|
||||
|
@ -1052,9 +1059,11 @@ class U_I18N_API SymbolsWrapper : public UMemory {
|
|||
void doCleanup();
|
||||
};
|
||||
|
||||
// Do not enclose entire Grouper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
|
||||
/** @internal */
|
||||
class U_I18N_API Grouper : public UMemory {
|
||||
public:
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
/** @internal */
|
||||
static Grouper forStrategy(UGroupingStrategy grouping);
|
||||
|
||||
|
@ -1072,6 +1081,7 @@ class U_I18N_API Grouper : public UMemory {
|
|||
fGrouping2(grouping2),
|
||||
fMinGrouping(minGrouping),
|
||||
fStrategy(strategy) {}
|
||||
#endif // U_HIDE_INTERNAL_API
|
||||
|
||||
/** @internal */
|
||||
int16_t getPrimary() const;
|
||||
|
@ -1131,14 +1141,17 @@ class U_I18N_API Grouper : public UMemory {
|
|||
friend class impl::GeneratorHelpers;
|
||||
};
|
||||
|
||||
// Do not enclose entire Padder with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
|
||||
/** @internal */
|
||||
class U_I18N_API Padder : public UMemory {
|
||||
public:
|
||||
#ifndef U_HIDE_INTERNAL_API
|
||||
/** @internal */
|
||||
static Padder none();
|
||||
|
||||
/** @internal */
|
||||
static Padder codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosition position);
|
||||
#endif // U_HIDE_INTERNAL_API
|
||||
|
||||
/** @internal */
|
||||
static Padder forProperties(const DecimalFormatProperties& properties);
|
||||
|
@ -1194,6 +1207,7 @@ class U_I18N_API Padder : public UMemory {
|
|||
friend class impl::GeneratorHelpers;
|
||||
};
|
||||
|
||||
// Do not enclose entire MacroProps with #ifndef U_HIDE_INTERNAL_API, needed for a protected field
|
||||
/** @internal */
|
||||
class U_I18N_API Multiplier : public UMemory {
|
||||
public:
|
||||
|
@ -2329,4 +2343,3 @@ U_NAMESPACE_END
|
|||
#endif // __NUMBERFORMATTER_H__
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ class StringEnumeration;
|
|||
/**
|
||||
* <p><strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* numberformatter.h fits their use case. Although not deprecated, this header
|
||||
* is on life support and is provided for backwards compatibility only.
|
||||
* is provided for backwards compatibility only.
|
||||
* <hr/>
|
||||
*
|
||||
* Abstract base class for all number formats. Provides interface for
|
||||
|
@ -708,6 +708,9 @@ public:
|
|||
/**
|
||||
* Create a default style NumberFormat for the current default locale.
|
||||
* The default formatting style is locale dependent.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
static NumberFormat* U_EXPORT2 createInstance(UErrorCode&);
|
||||
|
@ -716,6 +719,9 @@ public:
|
|||
* Create a default style NumberFormat for the specified locale.
|
||||
* The default formatting style is locale dependent.
|
||||
* @param inLocale the given locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
static NumberFormat* U_EXPORT2 createInstance(const Locale& inLocale,
|
||||
|
@ -723,6 +729,9 @@ public:
|
|||
|
||||
/**
|
||||
* Create a specific style NumberFormat for the specified locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param desiredLocale the given locale.
|
||||
* @param style the given style.
|
||||
* @param errorCode Output param filled with success/failure status.
|
||||
|
@ -759,12 +768,18 @@ public:
|
|||
|
||||
/**
|
||||
* Returns a currency format for the current default locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
static NumberFormat* U_EXPORT2 createCurrencyInstance(UErrorCode&);
|
||||
|
||||
/**
|
||||
* Returns a currency format for the specified locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param inLocale the given locale.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
|
@ -773,12 +788,18 @@ public:
|
|||
|
||||
/**
|
||||
* Returns a percentage format for the current default locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
static NumberFormat* U_EXPORT2 createPercentInstance(UErrorCode&);
|
||||
|
||||
/**
|
||||
* Returns a percentage format for the specified locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param inLocale the given locale.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
|
@ -787,12 +808,18 @@ public:
|
|||
|
||||
/**
|
||||
* Returns a scientific format for the current default locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
static NumberFormat* U_EXPORT2 createScientificInstance(UErrorCode&);
|
||||
|
||||
/**
|
||||
* Returns a scientific format for the specified locale.
|
||||
* <p>
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* @param inLocale the given locale.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
|
|
|
@ -1465,8 +1465,10 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp,
|
|||
|
||||
int32_t groupNum = 0;
|
||||
U_ASSERT(c == DOLLARSIGN);
|
||||
UChar32 c32;
|
||||
U16_GET(replacementText, 0, replIdx, replacementLength, c32);
|
||||
UChar32 c32 = -1;
|
||||
if (replIdx < replacementLength) {
|
||||
U16_GET(replacementText, 0, replIdx, replacementLength, c32);
|
||||
}
|
||||
if (u_isdigit(c32)) {
|
||||
int32_t numDigits = 0;
|
||||
int32_t numCaptureGroups = m->fPattern->fGroupMap->size();
|
||||
|
|
|
@ -20,14 +20,17 @@
|
|||
|
||||
/**
|
||||
* Opaque datatype representing an array of font runs
|
||||
* @internal
|
||||
*/
|
||||
typedef void pl_fontRuns;
|
||||
/**
|
||||
* Opaque datatype representing an array of value runs
|
||||
* @internal
|
||||
*/
|
||||
typedef void pl_valueRuns;
|
||||
/**
|
||||
* Opaque datatype representing an array of locale runs
|
||||
* @internal
|
||||
*/
|
||||
typedef void pl_localeRuns;
|
||||
|
||||
|
|
|
@ -757,6 +757,14 @@ static void TestFwdBack() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ticket #13636 - Visual Studio 2017 has problems optimizing this function.
|
||||
* As a workaround, we will turn off optimization just for this function on VS2017 and above.
|
||||
*/
|
||||
#if defined(_MSC_VER) && (_MSC_VER > 1900)
|
||||
#pragma optimize( "", off )
|
||||
#endif
|
||||
|
||||
static void TestFwdBackUnsafe() {
|
||||
/*
|
||||
* Use a (mostly) well-formed UTF-8 string and test at code point boundaries.
|
||||
|
@ -842,6 +850,13 @@ static void TestFwdBackUnsafe() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ticket #13636 - Turn optimization back on.
|
||||
*/
|
||||
#if defined(_MSC_VER) && (_MSC_VER > 1900)
|
||||
#pragma optimize( "", on )
|
||||
#endif
|
||||
|
||||
static void TestSetChar() {
|
||||
static const uint8_t input[]
|
||||
= {0x61, 0xe4, 0xba, 0x8c, 0x7f, 0xfe, 0x62, 0xc5, 0x7f, 0x61, 0x80, 0x80, 0xe0, 0x00 };
|
||||
|
|
|
@ -736,7 +736,11 @@ void AlphabeticIndexTest::testHasBuckets() {
|
|||
void AlphabeticIndexTest::checkHasBuckets(const Locale &locale, UScriptCode script) {
|
||||
IcuTestErrorCode errorCode(*this, "checkHasBuckets");
|
||||
AlphabeticIndex aindex(locale, errorCode);
|
||||
LocalPointer<AlphabeticIndex::ImmutableIndex> index(aindex.buildImmutableIndex(errorCode));
|
||||
LocalPointer<AlphabeticIndex::ImmutableIndex> index(aindex.buildImmutableIndex(errorCode), errorCode);
|
||||
if (U_FAILURE(errorCode)) {
|
||||
dataerrln("%s %d Error in index creation", __FILE__, __LINE__);
|
||||
return;
|
||||
}
|
||||
UnicodeString loc = locale.getName();
|
||||
assertTrue(loc + u" at least 3 buckets", index->getBucketCount() >= 3);
|
||||
const AlphabeticIndex::Bucket *bucket = index->getBucket(1);
|
||||
|
|
|
@ -106,8 +106,13 @@ void PatternModifierTest::testPatternWithNoPlaceholder() {
|
|||
nsb.append(u"x123y", UNUM_FIELD_COUNT, status);
|
||||
assertSuccess("Spot 5", status);
|
||||
MicroProps micros;
|
||||
LocalPointer<ImmutablePatternModifier> imod(mod.createImmutable(status));
|
||||
assertSuccess("Spot 6", status);
|
||||
LocalPointer<ImmutablePatternModifier> imod(mod.createImmutable(status), status);
|
||||
if (U_FAILURE(status)) {
|
||||
dataerrln("%s %d Error in ImmutablePatternModifier creation",
|
||||
__FILE__, __LINE__);
|
||||
assertSuccess("Spot 6", status);
|
||||
return;
|
||||
}
|
||||
DecimalQuantity quantity;
|
||||
imod->applyToMicros(micros, quantity);
|
||||
micros.modMiddle->apply(nsb, 1, 4, status);
|
||||
|
|
|
@ -8927,8 +8927,12 @@ void NumberFormatTest::Test11035_FormatCurrencyAmount() {
|
|||
// Test two ways to set a currency via API
|
||||
|
||||
Locale loc1 = Locale("pt_PT");
|
||||
LocalPointer<NumberFormat> fmt1(NumberFormat::createCurrencyInstance(loc1, status));
|
||||
assertSuccess("Creating fmt1", status);
|
||||
LocalPointer<NumberFormat> fmt1(NumberFormat::createCurrencyInstance("loc1", status),
|
||||
status);
|
||||
if (U_FAILURE(status)) {
|
||||
dataerrln("%s %d NumberFormat instance fmt1 is null", __FILE__, __LINE__);
|
||||
return;
|
||||
}
|
||||
fmt1->setCurrency(u"PTE", status);
|
||||
assertSuccess("Setting currency on fmt1", status);
|
||||
UnicodeString actualSetCurrency;
|
||||
|
@ -8940,7 +8944,7 @@ void NumberFormatTest::Test11035_FormatCurrencyAmount() {
|
|||
UnicodeString actualLocaleString;
|
||||
fmt2->format(amount, actualLocaleString);
|
||||
|
||||
// TODO: The following test fill fail until DecimalFormat wraps NumberFormatter.
|
||||
// TODO: The following test will fail until DecimalFormat wraps NumberFormatter.
|
||||
if (!logKnownIssue("13574")) {
|
||||
assertEquals("Custom Currency Pattern, Set Currency", expected, actualSetCurrency);
|
||||
}
|
||||
|
@ -8948,7 +8952,11 @@ void NumberFormatTest::Test11035_FormatCurrencyAmount() {
|
|||
|
||||
void NumberFormatTest::Test11318_DoubleConversion() {
|
||||
IcuTestErrorCode status(*this, "Test11318_DoubleConversion");
|
||||
LocalPointer<NumberFormat> nf(NumberFormat::createInstance("en", status));
|
||||
LocalPointer<NumberFormat> nf(NumberFormat::createInstance("en", status), status);
|
||||
if (U_FAILURE(status)) {
|
||||
dataerrln("%s %d Error in NumberFormat instance creation", __FILE__, __LINE__);
|
||||
return;
|
||||
}
|
||||
nf->setMaximumFractionDigits(40);
|
||||
nf->setMaximumIntegerDigits(40);
|
||||
UnicodeString appendTo;
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "unicode/ustring.h"
|
||||
#include "unicode/utext.h"
|
||||
#include "unicode/utf16.h"
|
||||
#include "cstr.h"
|
||||
#include "regextst.h"
|
||||
#include "regexcmp.h"
|
||||
#include "uvector.h"
|
||||
|
@ -101,6 +102,8 @@ void RegexTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch
|
|||
TESTCASE_AUTO(NamedCapture);
|
||||
TESTCASE_AUTO(NamedCaptureLimits);
|
||||
TESTCASE_AUTO(TestBug12884);
|
||||
TESTCASE_AUTO(TestBug13631);
|
||||
TESTCASE_AUTO(TestBug13632);
|
||||
TESTCASE_AUTO_END;
|
||||
}
|
||||
|
||||
|
@ -5806,4 +5809,46 @@ void RegexTest::TestBug12884() {
|
|||
REGEX_ASSERT(status == U_REGEX_TIME_OUT);
|
||||
}
|
||||
|
||||
// Bug 13631. A find() of a pattern with a zero length look-behind assertions
|
||||
// can cause a read past the end of the input text.
|
||||
// The failure is seen when running this test with Clang's Addresss Sanitizer.
|
||||
|
||||
void RegexTest::TestBug13631() {
|
||||
const UChar *pats[] = { u"(?<!^)",
|
||||
u"(?<=^)",
|
||||
nullptr
|
||||
};
|
||||
for (const UChar **pat=pats; *pat; ++pat) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
UnicodeString upat(*pat);
|
||||
RegexMatcher matcher(upat, 0, status);
|
||||
const UChar s =u'a';
|
||||
UText *ut = utext_openUChars(nullptr, &s, 1, &status);
|
||||
REGEX_CHECK_STATUS;
|
||||
matcher.reset(ut);
|
||||
while (matcher.find()) {
|
||||
}
|
||||
utext_close(ut);
|
||||
}
|
||||
}
|
||||
|
||||
// Bug 13632 Out of bounds memory reference if a replacement string ends with a '$',
|
||||
// where a following group specification would be expected.
|
||||
// Failure shows when running the test under Clang's Address Sanitizer.
|
||||
|
||||
void RegexTest::TestBug13632() {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
URegularExpression *re = uregex_openC(" ", 0, nullptr, &status);
|
||||
const char16_t *sourceString = u"Hello, world.";
|
||||
uregex_setText(re, sourceString, u_strlen(sourceString), &status);
|
||||
|
||||
const int32_t destCap = 20;
|
||||
char16_t dest[destCap] = {};
|
||||
const char16_t replacement[] = {u'x', u'$'}; // Not nul terminated string.
|
||||
uregex_replaceAll(re, replacement, 2, dest, destCap, &status);
|
||||
|
||||
assertEquals("", U_REGEX_INVALID_CAPTURE_GROUP_NAME, status);
|
||||
uregex_close(re);
|
||||
}
|
||||
|
||||
#endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */
|
||||
|
|
|
@ -57,7 +57,9 @@ public:
|
|||
virtual void TestBug11371();
|
||||
virtual void TestBug11480();
|
||||
virtual void TestBug12884();
|
||||
|
||||
virtual void TestBug13631();
|
||||
virtual void TestBug13632();
|
||||
|
||||
// The following functions are internal to the regexp tests.
|
||||
virtual void assertUText(const char *expected, UText *actual, const char *file, int line);
|
||||
virtual void assertUTextInvariant(const char *invariant, UText *actual, const char *file, int line);
|
||||
|
|
|
@ -45,6 +45,7 @@ MultithreadTest::~MultithreadTest()
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h> // tolower, toupper
|
||||
#include <memory>
|
||||
|
||||
#include "unicode/putil.h"
|
||||
|
||||
|
@ -62,82 +63,24 @@ void MultithreadTest::runIndexedTest( int32_t index, UBool exec,
|
|||
const char* &name, char* /*par*/ ) {
|
||||
if (exec)
|
||||
logln("TestSuite MultithreadTest: ");
|
||||
switch (index) {
|
||||
case 0:
|
||||
name = "TestThreads";
|
||||
if (exec)
|
||||
TestThreads();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
name = "TestMutex";
|
||||
if (exec)
|
||||
TestMutex();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
name = "TestThreadedIntl";
|
||||
TESTCASE_AUTO_BEGIN;
|
||||
TESTCASE_AUTO(TestThreads);
|
||||
TESTCASE_AUTO(TestMutex);
|
||||
#if !UCONFIG_NO_FORMATTING
|
||||
if (exec) {
|
||||
TestThreadedIntl();
|
||||
}
|
||||
TESTCASE_AUTO(TestThreadedIntl);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case 3:
|
||||
name = "TestCollators";
|
||||
#if !UCONFIG_NO_COLLATION
|
||||
if (exec) {
|
||||
TestCollators();
|
||||
}
|
||||
TESTCASE_AUTO(TestCollators);
|
||||
#endif /* #if !UCONFIG_NO_COLLATION */
|
||||
break;
|
||||
|
||||
case 4:
|
||||
name = "TestString";
|
||||
if (exec) {
|
||||
TestString();
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
name = "TestArabicShapingThreads";
|
||||
if (exec) {
|
||||
TestArabicShapingThreads();
|
||||
}
|
||||
break;
|
||||
|
||||
case 6:
|
||||
name = "TestAnyTranslit";
|
||||
if (exec) {
|
||||
TestAnyTranslit();
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
name = "TestConditionVariables";
|
||||
if (exec) {
|
||||
TestConditionVariables();
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
name = "TestUnifiedCache";
|
||||
if (exec) {
|
||||
TestUnifiedCache();
|
||||
}
|
||||
break;
|
||||
#if !UCONFIG_NO_TRANSLITERATION
|
||||
case 9:
|
||||
name = "TestBreakTranslit";
|
||||
if (exec) {
|
||||
TestBreakTranslit();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
name = "";
|
||||
break; //needed to end loop
|
||||
}
|
||||
TESTCASE_AUTO(TestString);
|
||||
TESTCASE_AUTO(TestArabicShapingThreads);
|
||||
TESTCASE_AUTO(TestAnyTranslit);
|
||||
TESTCASE_AUTO(TestConditionVariables);
|
||||
TESTCASE_AUTO(TestUnifiedCache);
|
||||
TESTCASE_AUTO(TestBreakTranslit);
|
||||
TESTCASE_AUTO(TestIncDec);
|
||||
TESTCASE_AUTO_END
|
||||
}
|
||||
|
||||
|
||||
|
@ -1572,4 +1515,36 @@ void MultithreadTest::TestBreakTranslit() {
|
|||
gTranslitExpected = NULL;
|
||||
}
|
||||
|
||||
|
||||
class TestIncDecThread : public SimpleThread {
|
||||
public:
|
||||
TestIncDecThread() { };
|
||||
virtual void run();
|
||||
};
|
||||
|
||||
static u_atomic_int32_t gIncDecCounter;
|
||||
|
||||
void TestIncDecThread::run() {
|
||||
umtx_atomic_inc(&gIncDecCounter);
|
||||
for (int32_t i=0; i<5000000; ++i) {
|
||||
umtx_atomic_inc(&gIncDecCounter);
|
||||
umtx_atomic_dec(&gIncDecCounter);
|
||||
}
|
||||
}
|
||||
|
||||
void MultithreadTest::TestIncDec()
|
||||
{
|
||||
static constexpr int NUM_THREADS = 4;
|
||||
gIncDecCounter = 0;
|
||||
TestIncDecThread threads[NUM_THREADS];
|
||||
for (auto &thread:threads) {
|
||||
thread.start();
|
||||
}
|
||||
for (auto &thread:threads) {
|
||||
thread.join();
|
||||
}
|
||||
assertEquals("TestIncDec", NUM_THREADS, gIncDecCounter);
|
||||
}
|
||||
|
||||
|
||||
#endif /* !UCONFIG_NO_TRANSLITERATION */
|
||||
|
|
|
@ -52,7 +52,7 @@ public:
|
|||
void TestConditionVariables();
|
||||
void TestUnifiedCache();
|
||||
void TestBreakTranslit();
|
||||
|
||||
void TestIncDec();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -9,25 +9,24 @@
|
|||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
// Include this even though we aren't linking against it.
|
||||
// We only use U8_* macros, which are entirely inline.
|
||||
#include "unicode/utf8.h"
|
||||
|
||||
// Include this here, to avoid needing to compile and link part of common lib
|
||||
// (bootstrapping problem)
|
||||
#include "utf_impl.cpp"
|
||||
// This contains a codepage and ISO 14882:1998 illegality table.
|
||||
// Use "make gen-table" to rebuild it.
|
||||
#include "cptbl.h"
|
||||
|
||||
/**
|
||||
* What is this?
|
||||
* or even:
|
||||
* what IS this??
|
||||
*
|
||||
*
|
||||
* "This" is a preprocessor that makes an attempt to convert fully valid C++11 source code
|
||||
* in utf-8 into.. something else. Something consumable by certain compilers (Solaris, xlC)
|
||||
* which aren't quite there.
|
||||
* in utf-8 into something consumable by certain compilers (Solaris, xlC)
|
||||
* which aren't quite standards compliant.
|
||||
*
|
||||
* - u"<unicode>" or u'<unicode>' gets converted to u"\uNNNN" or u'\uNNNN'
|
||||
* - u8"<unicode>" gets converted to "\xAA\xBB\xCC\xDD" etc.
|
||||
* - if the system is EBCDIC-based, well, that's taken into account.
|
||||
* (some compilers do not support the u8 prefix correctly.)
|
||||
* - if the system is EBCDIC-based, that is used to correct the input characters.
|
||||
*
|
||||
* Usage:
|
||||
* escapesrc infile.cpp outfile.cpp
|
||||
|
@ -38,8 +37,8 @@
|
|||
* %.o: _%.cpp
|
||||
* $(COMPILE.cc) ... $@ $<
|
||||
*
|
||||
* Naturally, 'escapesrc' has to be excluded from said build rule.
|
||||
|
||||
* In the Makefiles, SKIP_ESCAPING=YES is used to prevent escapesrc.cpp
|
||||
* from being itself escaped.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -49,10 +48,6 @@ static const char
|
|||
kLF = 0x0A,
|
||||
kCR = 0x0D;
|
||||
|
||||
// This contains a codepage and ISO 14882:1998 illegality table.
|
||||
// Use "make gen-table" to rebuild it.
|
||||
# include "cptbl.h"
|
||||
|
||||
// For convenience
|
||||
# define cp1047_to_8859(c) cp1047_8859_1[c]
|
||||
|
||||
|
|
|
@ -85,8 +85,7 @@ public class StringSegment implements CharSequence {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the first code point in the string segment, or -1 if the string starts with an invalid
|
||||
* code point.
|
||||
* Returns the first code point in the string segment.
|
||||
*
|
||||
* <p>
|
||||
* <strong>Important:</strong> Most of the time, you should use {@link #startsWith}, which handles
|
||||
|
|
|
@ -23,8 +23,7 @@ import com.ibm.icu.util.ULocale;
|
|||
* <p>
|
||||
* <strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* {@link NumberFormatter} fits their use case. Although not deprecated, this
|
||||
* class, CompactDecimalFormat, is on life support and is provided for
|
||||
* backwards compatibility only.
|
||||
* class, CompactDecimalFormat, is provided for backwards compatibility only.
|
||||
* <hr>
|
||||
*
|
||||
* The CompactDecimalFormat produces abbreviated numbers, suitable for display in environments will
|
||||
|
@ -80,6 +79,9 @@ public class CompactDecimalFormat extends DecimalFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Creates a CompactDecimalFormat appropriate for a locale. The result may be affected by the
|
||||
* number system in the locale, such as ar-u-nu-latn.
|
||||
*
|
||||
|
@ -92,6 +94,9 @@ public class CompactDecimalFormat extends DecimalFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Creates a CompactDecimalFormat appropriate for a locale. The result may be affected by the
|
||||
* number system in the locale, such as ar-u-nu-latn.
|
||||
*
|
||||
|
|
|
@ -39,8 +39,7 @@ import com.ibm.icu.util.ULocale.Category;
|
|||
* <p>
|
||||
* <strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* {@link NumberFormatter} fits their use case. Although not deprecated, this
|
||||
* class, DecimalFormat, is on life support and is only provided for
|
||||
* java.text.DecimalFormat compatibility.
|
||||
* class, DecimalFormat, is only provided for java.text.DecimalFormat compatibility.
|
||||
* <hr>
|
||||
*
|
||||
* <code>DecimalFormat</code> is the primary
|
||||
|
|
|
@ -58,8 +58,7 @@ import com.ibm.icu.util.UResourceBundle;
|
|||
* <p>
|
||||
* <strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* {@link NumberFormatter} fits their use case. Although not deprecated, this
|
||||
* class, MeasureFormat, is on life support and is provided for
|
||||
* backwards compatibility only.
|
||||
* class, MeasureFormat, is provided for backwards compatibility only.
|
||||
* <hr>
|
||||
*
|
||||
* <p>
|
||||
|
|
|
@ -39,8 +39,7 @@ import com.ibm.icu.util.UResourceBundle;
|
|||
* <p>
|
||||
* <strong>IMPORTANT:</strong> New users are strongly encouraged to see if
|
||||
* {@link NumberFormatter} fits their use case. Although not deprecated, this
|
||||
* class, NumberFormat, is on life support and is only provided for
|
||||
* java.text.NumberFormat compatibility.
|
||||
* class, NumberFormat, is only provided for java.text.NumberFormat compatibility.
|
||||
* <hr>
|
||||
*
|
||||
* <code>NumberFormat</code> is the abstract base class for all number
|
||||
|
@ -585,6 +584,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
//============== Locale Stuff =====================
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns the default number format for the current default <code>FORMAT</code> locale.
|
||||
* The default format is one of the styles provided by the other
|
||||
* factory methods: getNumberInstance, getIntegerInstance,
|
||||
|
@ -599,6 +601,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns the default number format for the specified locale.
|
||||
* The default format is one of the styles provided by the other
|
||||
* factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
|
||||
|
@ -610,6 +615,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns the default number format for the specified locale.
|
||||
* The default format is one of the styles provided by the other
|
||||
* factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
|
||||
|
@ -621,6 +629,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a specific style number format for default <code>FORMAT</code> locale.
|
||||
* @param style number format style
|
||||
* @see Category#FORMAT
|
||||
|
@ -631,6 +642,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a specific style number format for a specific locale.
|
||||
* @param inLocale the specific locale.
|
||||
* @param style number format style
|
||||
|
@ -642,6 +656,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a general-purpose number format for the current default <code>FORMAT</code> locale.
|
||||
* @see Category#FORMAT
|
||||
* @stable ICU 2.0
|
||||
|
@ -651,6 +668,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a general-purpose number format for the specified locale.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
|
@ -659,6 +679,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a general-purpose number format for the specified locale.
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
|
@ -667,6 +690,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns an integer number format for the current default <code>FORMAT</code> locale. The
|
||||
* returned number format is configured to round floating point numbers
|
||||
* to the nearest integer using IEEE half-even rounding (see {@link
|
||||
|
@ -684,6 +710,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns an integer number format for the specified locale. The
|
||||
* returned number format is configured to round floating point numbers
|
||||
* to the nearest integer using IEEE half-even rounding (see {@link
|
||||
|
@ -701,6 +730,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns an integer number format for the specified locale. The
|
||||
* returned number format is configured to round floating point numbers
|
||||
* to the nearest integer using IEEE half-even rounding (see {@link
|
||||
|
@ -717,6 +749,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a currency format for the current default <code>FORMAT</code> locale.
|
||||
* @return a number format for currency
|
||||
* @see Category#FORMAT
|
||||
|
@ -727,6 +762,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a currency format for the specified locale.
|
||||
* @return a number format for currency
|
||||
* @stable ICU 2.0
|
||||
|
@ -736,6 +774,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a currency format for the specified locale.
|
||||
* @return a number format for currency
|
||||
* @stable ICU 3.2
|
||||
|
@ -745,6 +786,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a percentage format for the current default <code>FORMAT</code> locale.
|
||||
* @return a number format for percents
|
||||
* @see Category#FORMAT
|
||||
|
@ -755,6 +799,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a percentage format for the specified locale.
|
||||
* @return a number format for percents
|
||||
* @stable ICU 2.0
|
||||
|
@ -764,6 +811,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a percentage format for the specified locale.
|
||||
* @return a number format for percents
|
||||
* @stable ICU 3.2
|
||||
|
@ -773,6 +823,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a scientific format for the current default <code>FORMAT</code> locale.
|
||||
* @return a scientific number format
|
||||
* @see Category#FORMAT
|
||||
|
@ -783,6 +836,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a scientific format for the specified locale.
|
||||
* @return a scientific number format
|
||||
* @stable ICU 2.0
|
||||
|
@ -792,6 +848,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
}
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* {@icu} Returns a scientific format for the specified locale.
|
||||
* @return a scientific number format
|
||||
* @stable ICU 3.2
|
||||
|
@ -1345,6 +1404,9 @@ public abstract class NumberFormat extends UFormat {
|
|||
|
||||
|
||||
/**
|
||||
* <strong>NOTE:</strong> New users are strongly encouraged to use
|
||||
* {@link NumberFormatter} instead of NumberFormat.
|
||||
* <hr>
|
||||
* Returns a specific style number format for a specific locale.
|
||||
* @param desiredLocale the specific locale.
|
||||
* @param choice number format style
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
|
||||
package com.ibm.icu.text;
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.ibm.icu.impl.ICUBinary;
|
||||
import com.ibm.icu.impl.ICUBinary.Authenticate;
|
||||
|
@ -20,13 +21,140 @@ import com.ibm.icu.impl.Trie2;
|
|||
/**
|
||||
* <p>Internal class used for Rule Based Break Iterators.</p>
|
||||
* <p>This class provides access to the compiled break rule data, as
|
||||
* it is stored in a .brk file.
|
||||
* it is stored in a .brk file. Refer to the file common/rbbidata.h from
|
||||
* ICU4C for further details.
|
||||
* Not intended for public use; declared public for testing purposes only.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public final class RBBIDataWrapper {
|
||||
|
||||
/**
|
||||
* A RBBI State Transition table, the form of the data used at run time in Java.
|
||||
* These can be created from stored ICU data, or built from rules.
|
||||
* The structure corresponds closely to struct RBBIStateTable in ICU4C.
|
||||
* Not intended for public use; declared public for testing purposes only.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
static public class RBBIStateTable {
|
||||
/**
|
||||
* Number of states (rows) in this table.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public int fNumStates;
|
||||
/**
|
||||
* Length of a table row in bytes. Note mismatch with table data, which is short[].
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public int fRowLen;
|
||||
/**
|
||||
* Option Flags for this state table.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public int fFlags;
|
||||
/**
|
||||
* Option Flags for this state table.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public int fReserved;
|
||||
/**
|
||||
* Linear array of next state values, accessed as short[state, char_class]
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public short[] fTable;
|
||||
|
||||
RBBIStateTable() {
|
||||
}
|
||||
|
||||
static RBBIStateTable get(ByteBuffer bytes, int length) throws IOException {
|
||||
if (length == 0) {
|
||||
return null;
|
||||
}
|
||||
if (length < 16) {
|
||||
throw new IOException("Invalid RBBI state table length.");
|
||||
}
|
||||
RBBIStateTable This = new RBBIStateTable();
|
||||
This.fNumStates = bytes.getInt();
|
||||
This.fRowLen = bytes.getInt();
|
||||
This.fFlags = bytes.getInt();
|
||||
This.fReserved = bytes.getInt();
|
||||
int lengthOfShorts = length - 16; // length in bytes.
|
||||
This.fTable = ICUBinary.getShorts(bytes, lengthOfShorts / 2, lengthOfShorts & 1);
|
||||
return This;
|
||||
}
|
||||
|
||||
int put(DataOutputStream bytes) throws IOException {
|
||||
bytes.writeInt(fNumStates);
|
||||
bytes.writeInt(fRowLen);
|
||||
bytes.writeInt(fFlags);
|
||||
bytes.writeInt(fReserved);
|
||||
int tableLen = fRowLen * fNumStates / 2; // fRowLen is bytes.
|
||||
for (int i = 0; i < tableLen; i++) {
|
||||
bytes.writeShort(fTable[i]);
|
||||
}
|
||||
int bytesWritten = 16 + fRowLen * fNumStates; // total bytes written,
|
||||
// including 16 for the header.
|
||||
while (bytesWritten % 8 != 0) {
|
||||
bytes.writeByte(0);
|
||||
++bytesWritten;
|
||||
}
|
||||
return bytesWritten;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public boolean equals (Object other) {
|
||||
if (other == this) {
|
||||
return true;
|
||||
}
|
||||
if (!(other instanceof RBBIStateTable)) {
|
||||
return false;
|
||||
}
|
||||
RBBIStateTable otherST = (RBBIStateTable)other;
|
||||
if (fNumStates != otherST.fNumStates) return false;
|
||||
if (fRowLen != otherST.fRowLen) return false;
|
||||
if (fFlags != otherST.fFlags) return false;
|
||||
if (fReserved != otherST.fReserved) return false;
|
||||
return Arrays.equals(fTable, otherST.fTable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Equals helper for state tables, including null handling.
|
||||
* Not intended for public use; declared public for testing purposes only.
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
static public boolean equals(RBBIStateTable left, RBBIStateTable right) {
|
||||
if (left == right) {
|
||||
return true;
|
||||
}
|
||||
if (left == null || right == null) {
|
||||
return false;
|
||||
}
|
||||
return left.equals(right);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// These fields are the ready-to-use compiled rule data, as
|
||||
// read from the file.
|
||||
|
@ -42,31 +170,30 @@ public final class RBBIDataWrapper {
|
|||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public short fFTable[];
|
||||
public RBBIStateTable fFTable;
|
||||
/**
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public short fRTable[];
|
||||
public RBBIStateTable fRTable;
|
||||
/**
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public short fSFTable[];
|
||||
public RBBIStateTable fSFTable;
|
||||
/**
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public short fSRTable[];
|
||||
public RBBIStateTable fSRTable;
|
||||
|
||||
Trie2 fTrie;
|
||||
String fRuleSource;
|
||||
int fStatusTable[];
|
||||
|
||||
private boolean isBigEndian;
|
||||
|
||||
static final int DATA_FORMAT = 0x42726b20; // "Brk "
|
||||
static final int FORMAT_VERSION = 0x04000000; // 4.0.0.0
|
||||
|
||||
|
@ -138,15 +265,6 @@ public final class RBBIDataWrapper {
|
|||
@Deprecated
|
||||
public final static int NEXTSTATES = 4;
|
||||
|
||||
// Index offsets to header fields of a state table
|
||||
// struct RBBIStateTable {... in the C version.
|
||||
//
|
||||
static final int NUMSTATES = 0;
|
||||
static final int ROWLEN = 2;
|
||||
static final int FLAGS = 4;
|
||||
//ivate static final int RESERVED_2 = 6;
|
||||
private static final int ROW_DATA = 8;
|
||||
|
||||
// Bit selectors for the "FLAGS" field of the state table header
|
||||
// enum RBBIStateTableFlags in the C version.
|
||||
//
|
||||
|
@ -212,7 +330,7 @@ public final class RBBIDataWrapper {
|
|||
*/
|
||||
@Deprecated
|
||||
public int getRowIndex(int state){
|
||||
return ROW_DATA + state * (fHeader.fCatCount + 4);
|
||||
return state * (fHeader.fCatCount + 4);
|
||||
}
|
||||
|
||||
RBBIDataWrapper() {
|
||||
|
@ -226,7 +344,6 @@ public final class RBBIDataWrapper {
|
|||
RBBIDataWrapper This = new RBBIDataWrapper();
|
||||
|
||||
ICUBinary.readHeader(bytes, DATA_FORMAT, IS_ACCEPTABLE);
|
||||
This.isBigEndian = bytes.order() == ByteOrder.BIG_ENDIAN;
|
||||
|
||||
// Read in the RBBI data header...
|
||||
This.fHeader = new RBBIDataHeader();
|
||||
|
@ -274,8 +391,7 @@ public final class RBBIDataWrapper {
|
|||
ICUBinary.skipBytes(bytes, This.fHeader.fFTable - pos);
|
||||
pos = This.fHeader.fFTable;
|
||||
|
||||
This.fFTable = ICUBinary.getShorts(
|
||||
bytes, This.fHeader.fFTableLen / 2, This.fHeader.fFTableLen & 1);
|
||||
This.fFTable = RBBIStateTable.get(bytes, This.fHeader.fFTableLen);
|
||||
pos += This.fHeader.fFTableLen;
|
||||
|
||||
//
|
||||
|
@ -287,8 +403,7 @@ public final class RBBIDataWrapper {
|
|||
pos = This.fHeader.fRTable;
|
||||
|
||||
// Create & fill the table itself.
|
||||
This.fRTable = ICUBinary.getShorts(
|
||||
bytes, This.fHeader.fRTableLen / 2, This.fHeader.fRTableLen & 1);
|
||||
This.fRTable = RBBIStateTable.get(bytes, This.fHeader.fRTableLen);
|
||||
pos += This.fHeader.fRTableLen;
|
||||
|
||||
//
|
||||
|
@ -300,8 +415,7 @@ public final class RBBIDataWrapper {
|
|||
pos = This.fHeader.fSFTable;
|
||||
|
||||
// Create & fill the table itself.
|
||||
This.fSFTable = ICUBinary.getShorts(
|
||||
bytes, This.fHeader.fSFTableLen / 2, This.fHeader.fSFTableLen & 1);
|
||||
This.fSFTable = RBBIStateTable.get(bytes, This.fHeader.fSFTableLen);
|
||||
pos += This.fHeader.fSFTableLen;
|
||||
}
|
||||
|
||||
|
@ -314,8 +428,7 @@ public final class RBBIDataWrapper {
|
|||
pos = This.fHeader.fSRTable;
|
||||
|
||||
// Create & fill the table itself.
|
||||
This.fSRTable = ICUBinary.getShorts(
|
||||
bytes, This.fHeader.fSRTableLen / 2, This.fHeader.fSRTableLen & 1);
|
||||
This.fSRTable = RBBIStateTable.get(bytes, This.fHeader.fSRTableLen);
|
||||
pos += This.fHeader.fSRTableLen;
|
||||
}
|
||||
|
||||
|
@ -381,25 +494,6 @@ public final class RBBIDataWrapper {
|
|||
return This;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getters for fields from the state table header
|
||||
* @internal
|
||||
* @deprecated This API is ICU internal only.
|
||||
*/
|
||||
@Deprecated
|
||||
public int getStateTableNumStates(short table[]) {
|
||||
if (isBigEndian) {
|
||||
return (table[NUMSTATES] << 16) | (table[NUMSTATES+1] & 0xffff);
|
||||
} else {
|
||||
return (table[NUMSTATES+1] << 16) | (table[NUMSTATES] & 0xffff);
|
||||
}
|
||||
}
|
||||
|
||||
int getStateTableFlags(short table[]) {
|
||||
// This works for up to 15 flags bits.
|
||||
return table[isBigEndian ? FLAGS + 1 : FLAGS];
|
||||
}
|
||||
|
||||
///CLOVER:OFF
|
||||
/* Debug function to display the break iterator data. */
|
||||
/**
|
||||
|
@ -408,7 +502,7 @@ public final class RBBIDataWrapper {
|
|||
*/
|
||||
@Deprecated
|
||||
public void dump(java.io.PrintStream out) {
|
||||
if (fFTable.length == 0) {
|
||||
if (fFTable == null) {
|
||||
// There is no table. Fail early for testing purposes.
|
||||
throw new NullPointerException();
|
||||
}
|
||||
|
@ -465,8 +559,8 @@ public final class RBBIDataWrapper {
|
|||
|
||||
///CLOVER:OFF
|
||||
/** Dump a state table. (A full set of RBBI rules has 4 state tables.) */
|
||||
private void dumpTable(java.io.PrintStream out, short table[]) {
|
||||
if (table == null || table.length == 0) {
|
||||
private void dumpTable(java.io.PrintStream out, RBBIStateTable table) {
|
||||
if (table == null || table.fTable.length == 0) {
|
||||
out.println(" -- null -- ");
|
||||
} else {
|
||||
int n;
|
||||
|
@ -480,7 +574,7 @@ public final class RBBIDataWrapper {
|
|||
out.print("-");
|
||||
}
|
||||
out.println();
|
||||
for (state=0; state< getStateTableNumStates(table); state++) {
|
||||
for (state=0; state < table.fNumStates; state++) {
|
||||
dumpRow(out, table, state);
|
||||
}
|
||||
out.println();
|
||||
|
@ -494,24 +588,24 @@ public final class RBBIDataWrapper {
|
|||
* @param table
|
||||
* @param state
|
||||
*/
|
||||
private void dumpRow(java.io.PrintStream out, short table[], int state) {
|
||||
private void dumpRow(java.io.PrintStream out, RBBIStateTable table, int state) {
|
||||
StringBuilder dest = new StringBuilder(fHeader.fCatCount*5 + 20);
|
||||
dest.append(intToString(state, 4));
|
||||
int row = getRowIndex(state);
|
||||
if (table[row+ACCEPTING] != 0) {
|
||||
dest.append(intToString(table[row+ACCEPTING], 5));
|
||||
if (table.fTable[row+ACCEPTING] != 0) {
|
||||
dest.append(intToString(table.fTable[row+ACCEPTING], 5));
|
||||
}else {
|
||||
dest.append(" ");
|
||||
}
|
||||
if (table[row+LOOKAHEAD] != 0) {
|
||||
dest.append(intToString(table[row+LOOKAHEAD], 5));
|
||||
if (table.fTable[row+LOOKAHEAD] != 0) {
|
||||
dest.append(intToString(table.fTable[row+LOOKAHEAD], 5));
|
||||
}else {
|
||||
dest.append(" ");
|
||||
}
|
||||
dest.append(intToString(table[row+TAGIDX], 5));
|
||||
dest.append(intToString(table.fTable[row+TAGIDX], 5));
|
||||
|
||||
for (int col=0; col<fHeader.fCatCount; col++) {
|
||||
dest.append(intToString(table[row+NEXTSTATES+col], 5));
|
||||
dest.append(intToString(table.fTable[row+NEXTSTATES+col], 5));
|
||||
}
|
||||
|
||||
out.println(dest);
|
||||
|
|
|
@ -253,13 +253,9 @@ class RBBIRuleBuilder {
|
|||
}
|
||||
|
||||
// Write out the actual state tables.
|
||||
short[] tableData;
|
||||
tableData = fForwardTables.exportTable();
|
||||
Assert.assrt(outputPos == header[4]);
|
||||
for (i = 0; i < tableData.length; i++) {
|
||||
dos.writeShort(tableData[i]);
|
||||
outputPos += 2;
|
||||
}
|
||||
RBBIDataWrapper.RBBIStateTable table = fForwardTables.exportTable();
|
||||
assert(outputPos == header[4]);
|
||||
outputPos += table.put(dos);
|
||||
|
||||
/* do not write the reverse table
|
||||
tableData = fReverseTables.exportTable();
|
||||
|
@ -281,16 +277,13 @@ class RBBIRuleBuilder {
|
|||
|
||||
// Write the safe reverse table.
|
||||
// If not present, write the plain reverse table (old style rule compatibility)
|
||||
Assert.assrt(outputPos == header[10]);
|
||||
assert(outputPos == header[10]);
|
||||
if (safeRevTableSize > 0) {
|
||||
tableData = fSafeRevTables.exportTable();
|
||||
table = fSafeRevTables.exportTable();
|
||||
} else {
|
||||
tableData = fReverseTables.exportTable();
|
||||
}
|
||||
for (i = 0; i < tableData.length; i++) {
|
||||
dos.writeShort(tableData[i]);
|
||||
outputPos += 2;
|
||||
table = fReverseTables.exportTable();
|
||||
}
|
||||
outputPos += table.put(dos);
|
||||
|
||||
// write out the Trie table
|
||||
Assert.assrt(outputPos == header[12]);
|
||||
|
|
|
@ -978,118 +978,70 @@ class RBBITableBuilder {
|
|||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// getTableSize() Calculate the size in bytes of the runtime form of this
|
||||
// state transition table.
|
||||
//
|
||||
// Note: Refer to common/rbbidata.h from ICU4C for the declarations
|
||||
// of the structures being matched by this calculation.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
/**
|
||||
* Calculate the size in bytes of the serialized form of this state transition table,
|
||||
* which is identical to the ICU4C runtime form.
|
||||
* Refer to common/rbbidata.h from ICU4C for the declarations of the structures
|
||||
* being matched by this calculation.
|
||||
*/
|
||||
int getTableSize() {
|
||||
int size = 0;
|
||||
int numRows;
|
||||
int numCols;
|
||||
int rowSize;
|
||||
|
||||
if (fRB.fTreeRoots[fRootIx] == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size = /*sizeof(RBBIStateTable) - 4 */ 16; // The header, with no rows to the table.
|
||||
|
||||
numRows = fDStates.size();
|
||||
numCols = fRB.fSetBuilder.getNumCharCategories();
|
||||
|
||||
// Note The declaration of RBBIStateTableRow is for a table of two columns.
|
||||
// Therefore we subtract two from numCols when determining
|
||||
// how much storage to add to a row for the total columns.
|
||||
// rowSize = sizeof(RBBIStateTableRow) + sizeof(uint16_t)*(numCols-2);
|
||||
rowSize = 8 + 2*numCols;
|
||||
int size = 16; // The header of 4 ints, with no rows to the table.
|
||||
int numRows = fDStates.size();
|
||||
int numCols = fRB.fSetBuilder.getNumCharCategories();
|
||||
int rowSize = 8 + 2*numCols;
|
||||
size += numRows * rowSize;
|
||||
while (size % 8 > 0) { // Size must be multiple of 8 bytes in size.
|
||||
size++;
|
||||
}
|
||||
|
||||
size = (size + 7) & ~7; // round up to a multiple of 8 bytes
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// exportTable() export the state transition table in the ICU4C format.
|
||||
//
|
||||
// Most of the table is 16 bit shorts. This function exports
|
||||
// the whole thing as an array of shorts.
|
||||
//
|
||||
// The size of the array must be rounded up to a multiple of
|
||||
// 8 bytes.
|
||||
//
|
||||
// See struct RBBIStateTable in ICU4C, common/rbbidata.h
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
short [] exportTable() {
|
||||
/**
|
||||
* Create a RBBIDataWrapper.RBBIStateTable for a newly compiled table.
|
||||
* RBBIDataWrapper.RBBIStateTable is similar to struct RBBIStateTable in ICU4C,
|
||||
* in common/rbbidata.h
|
||||
*/
|
||||
RBBIDataWrapper.RBBIStateTable exportTable() {
|
||||
int state;
|
||||
int col;
|
||||
|
||||
RBBIDataWrapper.RBBIStateTable table = new RBBIDataWrapper.RBBIStateTable();
|
||||
if (fRB.fTreeRoots[fRootIx] == null) {
|
||||
return new short[0];
|
||||
return table;
|
||||
}
|
||||
|
||||
Assert.assrt(fRB.fSetBuilder.getNumCharCategories() < 0x7fff &&
|
||||
fDStates.size() < 0x7fff);
|
||||
|
||||
int numStates = fDStates.size();
|
||||
table.fNumStates = fDStates.size();
|
||||
|
||||
// Size of table size in shorts.
|
||||
// the "4" is the size of struct RBBIStateTableRow, the row header part only.
|
||||
int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories(); // Row Length in shorts.
|
||||
int tableSize = getTableSize() / 2;
|
||||
int tableSize = (getTableSize() - 16) / 2; // fTable length in shorts.
|
||||
table.fTable = new short[tableSize];
|
||||
table.fRowLen = rowLen * 2; // Row length in bytes.
|
||||
|
||||
|
||||
short [] table = new short[tableSize];
|
||||
|
||||
//
|
||||
// Fill in the header fields.
|
||||
// Note that NUMSTATES, ROWLEN and FLAGS are ints, not shorts.
|
||||
// ICU data created from Java is always big endian format, so
|
||||
// order the halves of the 32 bit fields into the short[] data accordingly.
|
||||
// TODO: ticket 13598 restructure so that ints are represented as ints directly.
|
||||
//
|
||||
// RBBIStateTable.fNumStates
|
||||
table[RBBIDataWrapper.NUMSTATES] = (short)(numStates >>> 16);
|
||||
table[RBBIDataWrapper.NUMSTATES+1] = (short)(numStates & 0x0000ffff);
|
||||
|
||||
// RBBIStateTable.fRowLen. In bytes.
|
||||
int rowLenInBytes = rowLen * 2;
|
||||
table[RBBIDataWrapper.ROWLEN] = (short)(rowLenInBytes >>> 16);
|
||||
table[RBBIDataWrapper.ROWLEN+1] = (short)(rowLenInBytes & 0x0000ffff);
|
||||
|
||||
// RBBIStateTable.fFlags
|
||||
int flags = 0;
|
||||
if (fRB.fLookAheadHardBreak) {
|
||||
flags |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
|
||||
table.fFlags |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
|
||||
}
|
||||
if (fRB.fSetBuilder.sawBOF()) {
|
||||
flags |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
|
||||
table.fFlags |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
|
||||
}
|
||||
table[RBBIDataWrapper.FLAGS] = (short)(flags >>> 16);
|
||||
table[RBBIDataWrapper.FLAGS+1] = (short)(flags & 0x0000ffff);
|
||||
|
||||
int numCharCategories = fRB.fSetBuilder.getNumCharCategories();
|
||||
for (state=0; state<numStates; state++) {
|
||||
for (state=0; state<table.fNumStates; state++) {
|
||||
RBBIStateDescriptor sd = fDStates.get(state);
|
||||
int row = 8 + state*rowLen;
|
||||
int row = state*rowLen;
|
||||
Assert.assrt (-32768 < sd.fAccepting && sd.fAccepting <= 32767);
|
||||
Assert.assrt (-32768 < sd.fLookAhead && sd.fLookAhead <= 32767);
|
||||
table[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
|
||||
table[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
|
||||
table[row + RBBIDataWrapper.TAGIDX] = (short)sd.fTagsIdx;
|
||||
table.fTable[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
|
||||
table.fTable[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
|
||||
table.fTable[row + RBBIDataWrapper.TAGIDX] = (short)sd.fTagsIdx;
|
||||
for (col=0; col<numCharCategories; col++) {
|
||||
table[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
|
||||
table.fTable[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
|
||||
}
|
||||
}
|
||||
return table;
|
||||
|
|
|
@ -805,7 +805,7 @@ public class RuleBasedBreakIterator extends BreakIterator {
|
|||
CharacterIterator text = fText;
|
||||
Trie2 trie = fRData.fTrie;
|
||||
|
||||
short[] stateTable = fRData.fFTable;
|
||||
short[] stateTable = fRData.fFTable.fTable;
|
||||
int initialPosition = fPosition;
|
||||
text.setIndex(initialPosition);
|
||||
int result = initialPosition;
|
||||
|
@ -824,7 +824,7 @@ public class RuleBasedBreakIterator extends BreakIterator {
|
|||
int state = START_STATE;
|
||||
int row = fRData.getRowIndex(state);
|
||||
short category = 3;
|
||||
int flagsState = fRData.getStateTableFlags(stateTable);
|
||||
int flagsState = fRData.fFTable.fFlags;
|
||||
int mode = RBBI_RUN;
|
||||
if ((flagsState & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
|
||||
category = 2;
|
||||
|
@ -984,7 +984,7 @@ public class RuleBasedBreakIterator extends BreakIterator {
|
|||
int result = 0;
|
||||
int initialPosition = fromPosition;
|
||||
fLookAheadMatches.reset();
|
||||
short[] stateTable = fRData.fSRTable;
|
||||
short[] stateTable = fRData.fSRTable.fTable;
|
||||
CISetIndex32(fText, fromPosition);
|
||||
if (fromPosition == fText.getBeginIndex()) {
|
||||
return BreakIterator.DONE;
|
||||
|
@ -999,7 +999,7 @@ public class RuleBasedBreakIterator extends BreakIterator {
|
|||
row = fRData.getRowIndex(state);
|
||||
category = 3; // TODO: obsolete? from the old start/run mode scheme?
|
||||
mode = RBBI_RUN;
|
||||
if ((fRData.getStateTableFlags(stateTable) & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
|
||||
if ((fRData.fSRTable.fFlags & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
|
||||
category = 2;
|
||||
mode = RBBI_START;
|
||||
}
|
||||
|
|
|
@ -568,7 +568,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
|
|||
UNICODE_10_0 = getInstance(10, 0, 0, 0);
|
||||
|
||||
ICU_VERSION = getInstance(61, 1, 0, 0);
|
||||
ICU_DATA_VERSION = getInstance(61, 0, 1, 0);
|
||||
ICU_DATA_VERSION = ICU_VERSION;
|
||||
UNICODE_VERSION = UNICODE_10_0;
|
||||
|
||||
UCOL_RUNTIME_VERSION = getInstance(9);
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5c858f2079eace62ae56dc51e99996e1c5dd99d7f22f3582d7186f51caae0eb2
|
||||
size 12505738
|
||||
oid sha256:3eb8332f908b83c82671f2b652d0bfdcc1c8da416884d0e358464af42af4f959
|
||||
size 12505745
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c02de21dd86cf635e3a1d809efc402c412f884354a2c37c9233bf2477b5ff635
|
||||
oid sha256:d95bab418a9b465de9415e4e9f878330dbc5f7d6cddc416c492ad871f514fa82
|
||||
size 92763
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
|
||||
|
||||
Copyright © 1991-2017 Unicode, Inc. All rights reserved.
|
||||
Distributed under the Terms of Use in http://www.unicode.org/copyright.html
|
||||
Copyright © 1991-2018 Unicode, Inc. All rights reserved.
|
||||
Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Unicode data files and any associated documentation
|
||||
|
@ -383,3 +383,32 @@ Database section 7.
|
|||
# by ICANN or the IETF Trust on the database or the code. Any person
|
||||
# making a contribution to the database or code waives all rights to
|
||||
# future claims in that contribution or in the TZ Database.
|
||||
|
||||
6. Google double-conversion
|
||||
|
||||
Copyright 2006-2011, the V8 project authors. All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// https://docs.google.com/document/d/1T2P0p953_Lh1pRwo-5CuPVrHlIBa_wcXElG-Hhg_WHM/edit?usp=sharing
|
||||
|
||||
test plus sign
|
||||
set locale ar
|
||||
set locale ar-EG
|
||||
set pattern +0;-#
|
||||
begin
|
||||
format output breaks
|
||||
|
|
|
@ -18,7 +18,6 @@ package com.ibm.icu.dev.test.rbbi;
|
|||
// or simply retired if it is no longer interesting.
|
||||
import java.text.CharacterIterator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
|
@ -574,16 +573,16 @@ public class RBBITest extends TestFmwk {
|
|||
// Build a break iterator from source rules.
|
||||
// Want to check the rule builder in Java, not the pre-built rules that are imported from ICU4C.
|
||||
RBBIDataWrapper dw = bi.fRData;
|
||||
short[] fwtbl = dw.fFTable;
|
||||
RBBIDataWrapper.RBBIStateTable fwtbl = dw.fFTable;
|
||||
int numCharClasses = dw.fHeader.fCatCount;
|
||||
|
||||
// Check for duplicate columns (character categories)
|
||||
List<String> columns = new ArrayList<String>();
|
||||
for (int column=0; column<numCharClasses; column++) {
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (int r = 1; r < dw.getStateTableNumStates(fwtbl); r++) {
|
||||
for (int r = 1; r < fwtbl.fNumStates; r++) {
|
||||
int row = dw.getRowIndex(r);
|
||||
short tableVal = fwtbl[row + RBBIDataWrapper.NEXTSTATES + column];
|
||||
short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
|
||||
s.append((char)tableVal);
|
||||
}
|
||||
columns.add(s.toString());
|
||||
|
@ -600,22 +599,22 @@ public class RBBITest extends TestFmwk {
|
|||
|
||||
// Check for duplicate states.
|
||||
List<String> rows = new ArrayList<String>();
|
||||
for (int r=0; r<dw.getStateTableNumStates(fwtbl); r++) {
|
||||
for (int r=0; r<fwtbl.fNumStates; r++) {
|
||||
StringBuilder s = new StringBuilder();
|
||||
int row = dw.getRowIndex(r);
|
||||
assertTrue("Accepting < -1", fwtbl[row + RBBIDataWrapper.ACCEPTING] >= -1);
|
||||
s.append(fwtbl[row + RBBIDataWrapper.ACCEPTING]);
|
||||
s.append(fwtbl[row + RBBIDataWrapper.LOOKAHEAD]);
|
||||
s.append(fwtbl[row + RBBIDataWrapper.TAGIDX]);
|
||||
assertTrue("Accepting < -1", fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING] >= -1);
|
||||
s.append(fwtbl.fTable[row + RBBIDataWrapper.ACCEPTING]);
|
||||
s.append(fwtbl.fTable[row + RBBIDataWrapper.LOOKAHEAD]);
|
||||
s.append(fwtbl.fTable[row + RBBIDataWrapper.TAGIDX]);
|
||||
for (int column=0; column<numCharClasses; column++) {
|
||||
short tableVal = fwtbl[row + RBBIDataWrapper.NEXTSTATES + column];
|
||||
short tableVal = fwtbl.fTable[row + RBBIDataWrapper.NEXTSTATES + column];
|
||||
s.append((char)tableVal);
|
||||
}
|
||||
rows.add(s.toString());
|
||||
}
|
||||
|
||||
for (int r1=0; r1 < dw.getStateTableNumStates(fwtbl); r1++) {
|
||||
for (int r2= r1+1; r2 < dw.getStateTableNumStates(fwtbl); r2++) {
|
||||
for (int r1=0; r1 < fwtbl.fNumStates; r1++) {
|
||||
for (int r2= r1+1; r2 < fwtbl.fNumStates; r2++) {
|
||||
assertFalse(String.format("Duplicate states (%d, %d)", r1, r2), rows.get(r1).equals(rows.get(r2)));
|
||||
// if (rows.get(r1).equals(rows.get(r2))) {
|
||||
// System.out.printf("Duplicate states (%d, %d)\n", r1, r2);
|
||||
|
@ -652,11 +651,10 @@ public class RBBITest extends TestFmwk {
|
|||
for (RuleBasedBreakIterator bi: breakIterators) {
|
||||
String rules = bi.toString();
|
||||
RuleBasedBreakIterator bi2 = new RuleBasedBreakIterator(rules);
|
||||
|
||||
assertTrue("Forward Table", Arrays.equals(bi.fRData.fFTable, bi2.fRData.fFTable));
|
||||
assertTrue("Reverse Table", Arrays.equals(bi.fRData.fRTable, bi2.fRData.fRTable));
|
||||
assertTrue("Safe Forward Table", Arrays.equals(bi.fRData.fSFTable, bi2.fRData.fSFTable));
|
||||
assertTrue("SafeForward Table", Arrays.equals(bi.fRData.fSRTable, bi2.fRData.fSRTable));
|
||||
assertTrue("Forward Table", RBBIDataWrapper.equals(bi.fRData.fFTable, bi2.fRData.fFTable));
|
||||
assertTrue("Reverse Table", RBBIDataWrapper.equals(bi.fRData.fRTable, bi2.fRData.fRTable));
|
||||
assertTrue("Safe Forward Table", RBBIDataWrapper.equals(bi.fRData.fSFTable, bi2.fRData.fSFTable));
|
||||
assertTrue("SafeForward Table", RBBIDataWrapper.equals(bi.fRData.fSRTable, bi2.fRData.fSRTable));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:52254032982876a6e09c5a944fd616cb38b9ef0bf77fc96d676b16f085b232e7
|
||||
size 1326
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4b1629d477faf37e068645dbd7bdd3f296b84bb9e9af7857b191d0758645d646
|
||||
size 7789
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3b71a1aa6334661bafe78b40cdd292172639a4983f620a6aeafd8157451010fd
|
||||
size 2543
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a99aba3a360ed13aee933cbaee252b7486da617e8e0cf3f98015c49d447a0d64
|
||||
size 20881
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bc02ee6f798fb5a63e6f9c1bc37787b3e88b2dc9d548b8e0544bd1b61cd260bb
|
||||
size 11139
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:42f57461449643a68e5390f9d1e0d9afef4932f660dcd7adbf6fc367b7e20780
|
||||
size 21314
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:467a7d6c89e76f9eb4a513d62192984eeafc3fee81d0f401c377a9318cd94cdc
|
||||
size 1616
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f659a4b818664f61566f7e64e73a26c7c4ec826b06dff489ba3d087c7ff7f359
|
||||
size 7789
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e8b0bb3b15f7e40c8dfc49601039333c5d6a6cc592999538a8d87d58d1950c78
|
||||
size 187867
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1e2b661b1469752d405eba96246b8837ee9440fd977ee9d277d8beacc800b17d
|
||||
size 40465
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1217ef9cd1162e28bfd1867e216a003ea7b8c5327b69dd591163fd4d8620e314
|
||||
size 1186
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3fb58afc6c2a264f7844fe58128111e2644fb343fce887b123a5046ba83611b1
|
||||
size 42240
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d867f33f71bb49653e1a0c9a83f80783a3696bfe2027f43a9327252421793684
|
||||
size 26889
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95ed3c962d6efb1ab00257a63845592703eee2ea39e0cdf3d1d69a8f34e493fd
|
||||
size 10730
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:875bb8966aff03b29eac45bf77914c14365ffb416d7c61da37098372c6bc9160
|
||||
size 568
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2785ebb976af3f8c8f9434ec296b7d84ddba73ce2dd73cc42a192d8418cea38d
|
||||
size 10640
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:24cdde3696db1f6a2feb44eec7bd94e00a043aa8253b8af7b7c906b04e35d6bd
|
||||
size 5298
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e2ae0ec0fe6d0470bf06d65f6ec1cfdb3186b021d249db45ec51654e4116a623
|
||||
size 3692
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:581715d958bcbba2f229dd6679c2c891390ee0dfc44580e8c9c416f87ccb4f79
|
||||
size 4238
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6cd9ecc9387f78d1f155378e588f7518c3e6d022d1043f74f358eaee8183c617
|
||||
size 3582
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3e41842affa91bd0d5aef2bd95f546d22fdff59f32181bfc6cd50ac788a0ffdd
|
||||
size 44566
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:683de991c6c19e48a3eb14ef2e8790721218bfd9a083c64d7454c8bfefb31e94
|
||||
size 84226
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66507ed5132b223e9a685071d0b58ee601ffb14a48af6ffbfb7ffdac26506f3f
|
||||
size 12324
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9a5d31a69b543f7e9fff358b0e15a1ebff3f1a35bfffe48f0168026d93ea3f16
|
||||
size 3226
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6ab8358a3b8086624b52607073ab6b0f000eff3e9fff79c2aff9fdd1c5a84703
|
||||
size 2672
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4129426033dc89387b59fc26793cd494e00bba2bd2d51be9672de8552c18749d
|
||||
size 4090
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ee50c904b7299aa5231cf3305ede35663979ae8951d71b6c02709d91132177e
|
||||
size 3152
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:81cde1a3c81c6903b40bbf774b6d2ea350ed218aad0aa9cfec32359b677585d5
|
||||
size 3328
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4749c561e70fae7aa9e25c56fac53fb2c154285452e9f16466b15459984952c2
|
||||
size 3538
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0af7860147c0471f76693fc447c511eb39ce8c1e1fb31fca6b00966899534e39
|
||||
size 2621
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0dff05da6620db99b4cf3d1de51deae4883727886052a73abd7130c0dfb687cb
|
||||
size 4099
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c3928c3b09855591e40160b12ba24cce9bcd042fa6af47b88670094235974df3
|
||||
size 3647
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0746a48c4146985c594ded58f22f589e4230082d97d3ae3c6b4219897b28c315
|
||||
size 2976
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1dd56dfbec495e034ed2fe3fe14ce2c74ac2d13eb641b59daf0b49e75acb2597
|
||||
size 2881
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:180601978bacbc685d519ab0583a14b29291b1eb387ceb65eb09d4a9d6ca6071
|
||||
size 2914
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f7a25bb8d755c096fca551f0869a11daeccecf9c503043acd9111ea27043a515
|
||||
size 1616
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9b18b919178557e2666a3b9ca7f94c4b376a11d567e2fce60a93e556b14f5582
|
||||
size 2493
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b634c9a6176dff02fad7e91af0dc654ef9d50b00015b42b09ff292df8c7e62a0
|
||||
size 3876
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue