diff options
Diffstat (limited to 'deps/icu-small/source/i18n/number_formatimpl.h')
-rw-r--r-- | deps/icu-small/source/i18n/number_formatimpl.h | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/deps/icu-small/source/i18n/number_formatimpl.h b/deps/icu-small/source/i18n/number_formatimpl.h index cbc04ba30d..744fecec13 100644 --- a/deps/icu-small/source/i18n/number_formatimpl.h +++ b/deps/icu-small/source/i18n/number_formatimpl.h @@ -3,7 +3,7 @@ #include "unicode/utypes.h" -#if !UCONFIG_NO_FORMATTING && !UPRV_INCOMPLETE_CPP11_SUPPORT +#if !UCONFIG_NO_FORMATTING #ifndef __NUMBER_FORMATIMPL_H__ #define __NUMBER_FORMATIMPL_H__ @@ -14,6 +14,7 @@ #include "number_patternmodifier.h" #include "number_longnames.h" #include "number_compact.h" +#include "number_microprops.h" U_NAMESPACE_BEGIN namespace number { namespace impl { @@ -38,9 +39,25 @@ class NumberFormatterImpl : public UMemory { UErrorCode &status); /** + * Prints only the prefix and suffix; used for DecimalFormat getters. + * + * @return The index into the output at which the prefix ends and the suffix starts; in other words, + * the prefix length. + */ + static int32_t getPrefixSuffixStatic(const MacroProps& macros, int8_t signum, + StandardPlural::Form plural, NumberStringBuilder& outString, + UErrorCode& status); + + /** * Evaluates the "safe" MicroPropsGenerator created by "fromMacros". */ - void apply(DecimalQuantity &inValue, NumberStringBuilder &outString, UErrorCode &status) const; + void apply(DecimalQuantity& inValue, NumberStringBuilder& outString, UErrorCode& status) const; + + /** + * Like getPrefixSuffixStatic() but uses the safe compiled object. + */ + int32_t getPrefixSuffix(int8_t signum, StandardPlural::Form plural, NumberStringBuilder& outString, + UErrorCode& status) const; private: // Head of the MicroPropsGenerator linked list: @@ -50,21 +67,29 @@ class NumberFormatterImpl : public UMemory { MicroProps fMicros; // Other fields possibly used by the number formatting pipeline: - // TODO: Convert some of these LocalPointers to value objects to reduce the number of news? + // TODO: Convert more of these LocalPointers to value objects to reduce the number of news? LocalPointer<const DecimalFormatSymbols> fSymbols; LocalPointer<const PluralRules> fRules; LocalPointer<const ParsedPatternInfo> fPatternInfo; LocalPointer<const ScientificHandler> fScientificHandler; - LocalPointer<const MutablePatternModifier> fPatternModifier; + LocalPointer<MutablePatternModifier> fPatternModifier; LocalPointer<const ImmutablePatternModifier> fImmutablePatternModifier; LocalPointer<const LongNameHandler> fLongNameHandler; LocalPointer<const CompactHandler> fCompactHandler; + // Value objects possibly used by the number formatting pipeline: + struct Warehouse { + CurrencySymbols fCurrencySymbols; + } fWarehouse; + NumberFormatterImpl(const MacroProps ¯os, bool safe, UErrorCode &status); void applyUnsafe(DecimalQuantity &inValue, NumberStringBuilder &outString, UErrorCode &status); + int32_t getPrefixSuffixUnsafe(int8_t signum, StandardPlural::Form plural, + NumberStringBuilder& outString, UErrorCode& status); + /** * If rulesPtr is non-null, return it. Otherwise, return a PluralRules owned by this object for the * specified locale, creating it if necessary. |