/src/icu/icu4c/source/i18n/number_multiplier.h
Line | Count | Source |
1 | | // © 2018 and later: Unicode, Inc. and others. |
2 | | // License & terms of use: http://www.unicode.org/copyright.html |
3 | | |
4 | | #include "unicode/utypes.h" |
5 | | |
6 | | #if !UCONFIG_NO_FORMATTING |
7 | | #ifndef __SOURCE_NUMBER_MULTIPLIER_H__ |
8 | | #define __SOURCE_NUMBER_MULTIPLIER_H__ |
9 | | |
10 | | #include "numparse_types.h" |
11 | | #include "number_decimfmtprops.h" |
12 | | |
13 | | U_NAMESPACE_BEGIN |
14 | | namespace number::impl { |
15 | | |
16 | | /** |
17 | | * Wraps a {@link Multiplier} for use in the number formatting pipeline. |
18 | | */ |
19 | | // Exported as U_I18N_API for tests |
20 | | class U_I18N_API MultiplierFormatHandler : public MicroPropsGenerator, public UMemory { |
21 | | public: |
22 | 1.26M | MultiplierFormatHandler() = default; // WARNING: Leaves object in an unusable state; call setAndChain() |
23 | | |
24 | | void setAndChain(const Scale& multiplier, const MicroPropsGenerator* parent); |
25 | | |
26 | | void processQuantity(DecimalQuantity& quantity, MicroProps& micros, |
27 | | UErrorCode& status) const override; |
28 | | |
29 | | private: |
30 | | Scale fMultiplier; |
31 | | const MicroPropsGenerator *fParent; |
32 | | }; |
33 | | |
34 | | |
35 | | /** Gets a Scale from a DecimalFormatProperties. In Java, defined in RoundingUtils.java */ |
36 | 623k | static inline Scale scaleFromProperties(const DecimalFormatProperties& properties) { |
37 | 623k | int32_t magnitudeMultiplier = properties.magnitudeMultiplier + properties.multiplierScale; |
38 | 623k | int32_t arbitraryMultiplier = properties.multiplier; |
39 | 623k | if (magnitudeMultiplier != 0 && arbitraryMultiplier != 1) { |
40 | 0 | return Scale::byDoubleAndPowerOfTen(arbitraryMultiplier, magnitudeMultiplier); |
41 | 623k | } else if (magnitudeMultiplier != 0) { |
42 | 23.0k | return Scale::powerOfTen(magnitudeMultiplier); |
43 | 600k | } else if (arbitraryMultiplier != 1) { |
44 | 0 | return Scale::byDouble(arbitraryMultiplier); |
45 | 600k | } else { |
46 | 600k | return Scale::none(); |
47 | 600k | } |
48 | 623k | } Unexecuted instantiation: reldatefmt.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: formattedval_sbimpl.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: numfmt.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: plurrule.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: decimfmt.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_decimalquantity.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_fluent.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_formatimpl.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_longnames.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) number_mapper.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Line | Count | Source | 36 | 489k | static inline Scale scaleFromProperties(const DecimalFormatProperties& properties) { | 37 | 489k | int32_t magnitudeMultiplier = properties.magnitudeMultiplier + properties.multiplierScale; | 38 | 489k | int32_t arbitraryMultiplier = properties.multiplier; | 39 | 489k | if (magnitudeMultiplier != 0 && arbitraryMultiplier != 1) { | 40 | 0 | return Scale::byDoubleAndPowerOfTen(arbitraryMultiplier, magnitudeMultiplier); | 41 | 489k | } else if (magnitudeMultiplier != 0) { | 42 | 11.8k | return Scale::powerOfTen(magnitudeMultiplier); | 43 | 477k | } else if (arbitraryMultiplier != 1) { | 44 | 0 | return Scale::byDouble(arbitraryMultiplier); | 45 | 477k | } else { | 46 | 477k | return Scale::none(); | 47 | 477k | } | 48 | 489k | } |
Unexecuted instantiation: number_multiplier.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_output.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_patternmodifier.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_patternstring.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_scientific.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_symbolswrapper.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_usageprefs.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_utils.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) numparse_impl.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Line | Count | Source | 36 | 134k | static inline Scale scaleFromProperties(const DecimalFormatProperties& properties) { | 37 | 134k | int32_t magnitudeMultiplier = properties.magnitudeMultiplier + properties.multiplierScale; | 38 | 134k | int32_t arbitraryMultiplier = properties.multiplier; | 39 | 134k | if (magnitudeMultiplier != 0 && arbitraryMultiplier != 1) { | 40 | 0 | return Scale::byDoubleAndPowerOfTen(arbitraryMultiplier, magnitudeMultiplier); | 41 | 134k | } else if (magnitudeMultiplier != 0) { | 42 | 11.1k | return Scale::powerOfTen(magnitudeMultiplier); | 43 | 123k | } else if (arbitraryMultiplier != 1) { | 44 | 0 | return Scale::byDouble(arbitraryMultiplier); | 45 | 123k | } else { | 46 | 123k | return Scale::none(); | 47 | 123k | } | 48 | 134k | } |
Unexecuted instantiation: pluralranges.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: plurfmt.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_compact.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: numparse_affixes.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: compactdecimalformat.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_skeletons.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_asformat.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) Unexecuted instantiation: number_simple.cpp:icu_78::number::impl::scaleFromProperties(icu_78::number::impl::DecimalFormatProperties const&) |
49 | | |
50 | | } // namespace number::impl |
51 | | U_NAMESPACE_END |
52 | | |
53 | | #endif //__SOURCE_NUMBER_MULTIPLIER_H__ |
54 | | #endif /* #if !UCONFIG_NO_FORMATTING */ |