// © 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_PATTERNMODIFIER_H__ #define __NUMBER_PATTERNMODIFIER_H__ #include "standardplural.h" #include "unicode/numberformatter.h" #include "number_patternstring.h" #include "number_types.h" #include "number_modifiers.h" #include "number_utils.h" #include "number_currencysymbols.h" U_NAMESPACE_BEGIN // Export an explicit template instantiation of the LocalPointer that is used as a // data member of AdoptingModifierStore. // (When building DLLs for Windows this is required.) #if U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN #if defined(_MSC_VER) // Ignore warning 4661 as LocalPointerBase does not use operator== or operator!= #pragma warning(push) #pragma warning(disable : 4661) #endif template class U_I18N_API LocalPointerBase<number::impl::AdoptingModifierStore>; template class U_I18N_API LocalPointer<number::impl::AdoptingModifierStore>; #if defined(_MSC_VER) #pragma warning(pop) #endif #endif namespace number { namespace impl { // Forward declaration class MutablePatternModifier; // Exported as U_I18N_API because it is needed for the unit test PatternModifierTest class U_I18N_API ImmutablePatternModifier : public MicroPropsGenerator, public UMemory { … }; /** * This class is a {@link Modifier} that wraps a decimal format pattern. It applies the pattern's affixes in * {@link Modifier#apply}. * * <p> * In addition to being a Modifier, this class contains the business logic for substituting the correct locale symbols * into the affixes of the decimal format pattern. * * <p> * In order to use this class, create a new instance and call the following four setters: {@link #setPatternInfo}, * {@link #setPatternAttributes}, {@link #setSymbols}, and {@link #setNumberProperties}. After calling these four * setters, the instance will be ready for use as a Modifier. * * <p> * This is a MUTABLE, NON-THREAD-SAFE class designed for performance. Do NOT save references to this or attempt to use * it from multiple threads! Instead, you can obtain a safe, immutable decimal format pattern modifier by calling * {@link MutablePatternModifier#createImmutable}, in effect treating this instance as a builder for the immutable * variant. */ class U_I18N_API MutablePatternModifier : public MicroPropsGenerator, public Modifier, public SymbolProvider, public UMemory { … }; } // namespace impl } // namespace number U_NAMESPACE_END #endif //__NUMBER_PATTERNMODIFIER_H__ #endif /* #if !UCONFIG_NO_FORMATTING */