1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // © 2017 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- #include "unicode/utypes.h"
- #if !UCONFIG_NO_FORMATTING
- #ifndef __NUMBER_SCIENTIFIC_H__
- #define __NUMBER_SCIENTIFIC_H__
- #include "number_types.h"
- U_NAMESPACE_BEGIN namespace number {
- namespace impl {
- // Forward-declare
- class ScientificHandler;
- class U_I18N_API ScientificModifier : public UMemory, public Modifier {
- public:
- ScientificModifier();
- void set(int32_t exponent, const ScientificHandler *handler);
- int32_t apply(FormattedStringBuilder &output, int32_t leftIndex, int32_t rightIndex,
- UErrorCode &status) const override;
- int32_t getPrefixLength() const override;
- int32_t getCodePointCount() const override;
- bool isStrong() const override;
- bool containsField(Field field) const override;
- void getParameters(Parameters& output) const override;
- bool semanticallyEquivalent(const Modifier& other) const override;
- private:
- int32_t fExponent;
- const ScientificHandler *fHandler;
- };
- class ScientificHandler : public UMemory, public MicroPropsGenerator, public MultiplierProducer {
- public:
- ScientificHandler(const Notation *notation, const DecimalFormatSymbols *symbols,
- const MicroPropsGenerator *parent);
- void
- processQuantity(DecimalQuantity &quantity, MicroProps µs, UErrorCode &status) const override;
- int32_t getMultiplier(int32_t magnitude) const override;
- private:
- const Notation::ScientificSettings fSettings;
- const DecimalFormatSymbols *fSymbols;
- const MicroPropsGenerator *fParent;
- friend class ScientificModifier;
- };
- } // namespace impl
- } // namespace number
- U_NAMESPACE_END
- #endif //__NUMBER_SCIENTIFIC_H__
- #endif /* #if !UCONFIG_NO_FORMATTING */
|