* }
* </pre>
*/
-class AffixUtils {
+class U_I18N_API AffixUtils {
public:
*
* <p>Java has multiple implementations for testing, but C++ has only one implementation.
*/
-class DecimalQuantity : public IFixedDecimal, public UMemory {
+class U_I18N_API DecimalQuantity : public IFixedDecimal, public UMemory {
public:
/** Copy constructor. */
DecimalQuantity(const DecimalQuantity &other);
}
};
-struct DecimalFormatProperties {
+struct U_I18N_API DecimalFormatProperties {
public:
NullableValue<UNumberCompactStyle> compactStyle;
* The canonical implementation of {@link Modifier}, containing a prefix and suffix string.
* TODO: This is not currently being used by real code and could be removed.
*/
-class ConstantAffixModifier : public Modifier, public UObject {
+class U_I18N_API ConstantAffixModifier : public Modifier, public UObject {
public:
ConstantAffixModifier(const UnicodeString &prefix, const UnicodeString &suffix, Field field,
bool strong)
* The second primary implementation of {@link Modifier}, this one consuming a {@link SimpleFormatter}
* pattern.
*/
-class SimpleModifier : public Modifier, public UMemory {
+class U_I18N_API SimpleModifier : public Modifier, public UMemory {
public:
SimpleModifier(const SimpleFormatter &simpleFormatter, Field field, bool strong);
* An implementation of {@link Modifier} that allows for multiple types of fields in the same modifier. Constructed
* based on the contents of two {@link NumberStringBuilder} instances (one for the prefix, one for the suffix).
*/
-class ConstantMultiFieldModifier : public Modifier, public UMemory {
+class U_I18N_API ConstantMultiFieldModifier : public Modifier, public UMemory {
public:
ConstantMultiFieldModifier(const NumberStringBuilder &prefix, const NumberStringBuilder &suffix,
bool strong) : fPrefix(prefix), fSuffix(suffix), fStrong(strong) {}
};
/** Identical to {@link ConstantMultiFieldModifier}, but supports currency spacing. */
-class CurrencySpacingEnabledModifier : public ConstantMultiFieldModifier {
+class U_I18N_API CurrencySpacingEnabledModifier : public ConstantMultiFieldModifier {
public:
/** Safe code path */
CurrencySpacingEnabledModifier(const NumberStringBuilder &prefix, const NumberStringBuilder &suffix,
};
/** A Modifier that does not do anything. */
-class EmptyModifier : public Modifier, public UMemory {
+class U_I18N_API EmptyModifier : public Modifier, public UMemory {
public:
explicit EmptyModifier(bool isStrong) : fStrong(isStrong) {}
* A ParameterizedModifier by itself is NOT a Modifier. Rather, it wraps a data structure containing two or more
* Modifiers and returns the modifier appropriate for the current situation.
*/
-class ParameterizedModifier : public UMemory {
+class U_I18N_API ParameterizedModifier : public UMemory {
public:
// NOTE: mods is zero-initialized (to nullptr)
ParameterizedModifier() : mods() {
namespace number {
namespace impl {
-class ImmutablePatternModifier : public MicroPropsGenerator {
+class U_I18N_API ImmutablePatternModifier : public MicroPropsGenerator {
public:
ImmutablePatternModifier(ParameterizedModifier *pm, const PluralRules *rules,
const MicroPropsGenerator *parent);
* {@link MutablePatternModifier#createImmutable}, in effect treating this instance as a builder for the immutable
* variant.
*/
-class MutablePatternModifier
+class U_I18N_API MutablePatternModifier
: public MicroPropsGenerator, public Modifier, public SymbolProvider, public CharSequence {
public:
Endpoints paddingEndpoints;
};
-struct ParsedPatternInfo : public AffixPatternProvider {
+struct U_I18N_API ParsedPatternInfo : public AffixPatternProvider {
UnicodeString pattern;
ParsedSubpatternInfo positive;
ParsedSubpatternInfo negative;
friend class PatternParser;
};
-class PatternParser {
+class U_I18N_API PatternParser {
public:
/**
* Runs the recursive descent parser on the given pattern string, returning a data structure with raw information
IgnoreRounding _ignoreRounding, UErrorCode &status);
};
-class PatternStringUtils {
+class U_I18N_API PatternStringUtils {
public:
/**
* Creates a pattern string from a property bag.
// Forward-declare
class ScientificHandler;
-class ScientificModifier : public UMemory, public Modifier {
+class U_I18N_API ScientificModifier : public UMemory, public Modifier {
public:
ScientificModifier();
const ScientificHandler *fHandler;
};
-class ScientificHandler : public UMemory, public MicroPropsGenerator, public MultiplierProducer {
+class U_I18N_API ScientificHandler : public UMemory, public MicroPropsGenerator, public MultiplierProducer {
public:
ScientificHandler(const Notation *notation, const DecimalFormatSymbols *symbols,
const MicroPropsGenerator *parent);
U_NAMESPACE_BEGIN namespace number {
namespace impl {
-class NumberStringBuilder : public UMemory {
+class U_I18N_API NumberStringBuilder : public UMemory {
private:
static const int32_t DEFAULT_CAPACITY = 40;
virtual UnicodeString toUnicodeString() const = 0;
};
-class AffixPatternProvider {
+class U_I18N_API AffixPatternProvider {
public:
static const int32_t AFFIX_PLURAL_MASK = 0xff;
static const int32_t AFFIX_PREFIX = 0x100;
* A Modifier is usually immutable, except in cases such as {@link MurkyModifier}, which are mutable for performance
* reasons.
*/
-class Modifier {
+class U_I18N_API Modifier {
public:
virtual ~Modifier() = default;
* @author sffc
*
*/
-class MicroPropsGenerator {
+class U_I18N_API MicroPropsGenerator {
public:
virtual ~MicroPropsGenerator() = default;
*
* @draft ICU 60
*/
-class Notation : public UMemory {
+class U_I18N_API Notation : public UMemory {
public:
/**
* Print the number using scientific notation (also known as scientific form, standard index form, or standard form
*
* @draft ICU 60
*/
-class ScientificNotation : public Notation {
+class U_I18N_API ScientificNotation : public Notation {
public:
/**
* Sets the minimum number of digits to show in the exponent of scientific notation, padding with zeros if
*
* @draft ICU 60
*/
-class Rounder : public UMemory {
+class U_I18N_API Rounder : public UMemory {
public:
/**
*
* @draft ICU 60
*/
-class FractionRounder : public Rounder {
+class U_I18N_API FractionRounder : public Rounder {
public:
/**
* Ensure that no less than this number of significant digits are retained when rounding according to fraction
*
* @draft ICU 60
*/
-class CurrencyRounder : public Rounder {
+class U_I18N_API CurrencyRounder : public Rounder {
public:
/**
* Associates a currency with this rounding strategy.
*
* @draft ICU 60
*/
-class IncrementRounder : public Rounder {
+class U_I18N_API IncrementRounder : public Rounder {
public:
/**
* Specifies the minimum number of fraction digits to render after the decimal separator, padding with zeros if
/**
* @internal This API is a technical preview. It is likely to change in an upcoming release.
*/
-class Grouper : public UMemory {
+class U_I18N_API Grouper : public UMemory {
public:
/**
* @internal This API is a technical preview. It is likely to change in an upcoming release.
* @draft ICU 60
* @see NumberFormatter
*/
-class IntegerWidth : public UMemory {
+class U_I18N_API IntegerWidth : public UMemory {
public:
/**
* Pad numbers at the beginning with zeros to guarantee a certain number of numerals before the decimal separator.
static uint32_t DEFAULT_THRESHOLD = 3;
/** @internal */
-class SymbolsWrapper : public UMemory {
+class U_I18N_API SymbolsWrapper : public UMemory {
public:
/** @internal */
SymbolsWrapper() : fType(SYMPTR_NONE), fPtr{nullptr} {}
};
/** @internal */
-class Padder : public UMemory {
+class U_I18N_API Padder : public UMemory {
public:
/** @internal */
static Padder none();
};
/** @internal */
-struct MacroProps : public UMemory {
+struct U_I18N_API MacroProps : public UMemory {
/** @internal */
Notation notation;
* {@link UnlocalizedNumberFormatter} and {@link LocalizedNumberFormatter}.
*/
template<typename Derived>
-class NumberFormatterSettings {
+class U_I18N_API NumberFormatterSettings {
public:
/**
* Specifies the notation style (simple, scientific, or compact) for rendering numbers.
* @see NumberFormatter
* @draft ICU 60
*/
-class UnlocalizedNumberFormatter
+class U_I18N_API UnlocalizedNumberFormatter
: public NumberFormatterSettings<UnlocalizedNumberFormatter>, public UMemory {
public:
* @see NumberFormatter
* @draft ICU 60
*/
-class LocalizedNumberFormatter
+class U_I18N_API LocalizedNumberFormatter
: public NumberFormatterSettings<LocalizedNumberFormatter>, public UMemory {
public:
/**
*
* @draft ICU 60
*/
-class FormattedNumber : public UMemory {
+class U_I18N_API FormattedNumber : public UMemory {
public:
/**
* Returns a UnicodeString representation of the the formatted number.
*
* @draft ICU 60
*/
-class NumberFormatter final {
+class U_I18N_API NumberFormatter final {
public:
/**
* Call this method at the beginning of a NumberFormatter fluent chain in which the locale is not currently known at