diff options
Diffstat (limited to 'deps/icu-small/source/i18n/number_fluent.cpp')
-rw-r--r-- | deps/icu-small/source/i18n/number_fluent.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/deps/icu-small/source/i18n/number_fluent.cpp b/deps/icu-small/source/i18n/number_fluent.cpp index 76c3a7ce5c..27113106c5 100644 --- a/deps/icu-small/source/i18n/number_fluent.cpp +++ b/deps/icu-small/source/i18n/number_fluent.cpp @@ -33,12 +33,13 @@ Derived NumberFormatterSettings<Derived>::unit(const icu::MeasureUnit &unit) con } template<typename Derived> -Derived NumberFormatterSettings<Derived>::adoptUnit(const icu::MeasureUnit *unit) const { +Derived NumberFormatterSettings<Derived>::adoptUnit(icu::MeasureUnit *unit) const { Derived copy(*this); // Just copy the unit into the MacroProps by value, and delete it since we have ownership. // NOTE: Slicing occurs here. However, CurrencyUnit can be restored from MeasureUnit. // TimeUnit may be affected, but TimeUnit is not as relevant to number formatting. if (unit != nullptr) { + // TODO: On nullptr, reset to default value? copy.fMacros.unit = *unit; delete unit; } @@ -46,6 +47,26 @@ Derived NumberFormatterSettings<Derived>::adoptUnit(const icu::MeasureUnit *unit } template<typename Derived> +Derived NumberFormatterSettings<Derived>::perUnit(const icu::MeasureUnit &perUnit) const { + Derived copy(*this); + // See comments above about slicing. + copy.fMacros.perUnit = perUnit; + return copy; +} + +template<typename Derived> +Derived NumberFormatterSettings<Derived>::adoptPerUnit(icu::MeasureUnit *perUnit) const { + Derived copy(*this); + // See comments above about slicing and ownership. + if (perUnit != nullptr) { + // TODO: On nullptr, reset to default value? + copy.fMacros.perUnit = *perUnit; + delete perUnit; + } + return copy; +} + +template<typename Derived> Derived NumberFormatterSettings<Derived>::rounding(const Rounder &rounder) const { Derived copy(*this); // NOTE: Slicing is OK. @@ -54,9 +75,11 @@ Derived NumberFormatterSettings<Derived>::rounding(const Rounder &rounder) const } template<typename Derived> -Derived NumberFormatterSettings<Derived>::grouping(const Grouper &grouper) const { +Derived NumberFormatterSettings<Derived>::grouping(const UGroupingStrategy &strategy) const { Derived copy(*this); - copy.fMacros.grouper = grouper; + // NOTE: This is slightly different than how the setting is stored in Java + // because we want to put it on the stack. + copy.fMacros.grouper = Grouper::forStrategy(strategy); return copy; } @@ -75,7 +98,7 @@ Derived NumberFormatterSettings<Derived>::symbols(const DecimalFormatSymbols &sy } template<typename Derived> -Derived NumberFormatterSettings<Derived>::adoptSymbols(const NumberingSystem *ns) const { +Derived NumberFormatterSettings<Derived>::adoptSymbols(NumberingSystem *ns) const { Derived copy(*this); copy.fMacros.symbols.setTo(ns); return copy; |