Index: public/i18n/unicode/numfmt.h |
diff --git a/public/i18n/unicode/numfmt.h b/public/i18n/unicode/numfmt.h |
deleted file mode 100644 |
index 63914ca4f1a424051378691eb746ce06b267bdd3..0000000000000000000000000000000000000000 |
--- a/public/i18n/unicode/numfmt.h |
+++ /dev/null |
@@ -1,1051 +0,0 @@ |
-/* |
-******************************************************************************** |
-* Copyright (C) 1997-2010, International Business Machines Corporation and others. |
-* All Rights Reserved. |
-******************************************************************************** |
-* |
-* File NUMFMT.H |
-* |
-* Modification History: |
-* |
-* Date Name Description |
-* 02/19/97 aliu Converted from java. |
-* 03/18/97 clhuang Updated per C++ implementation. |
-* 04/17/97 aliu Changed DigitCount to int per code review. |
-* 07/20/98 stephen JDK 1.2 sync up. Added scientific support. |
-* Changed naming conventions to match C++ guidelines |
-* Derecated Java style constants (eg, INTEGER_FIELD) |
-******************************************************************************** |
-*/ |
- |
-#ifndef NUMFMT_H |
-#define NUMFMT_H |
- |
- |
-#include "unicode/utypes.h" |
- |
-/** |
- * \file |
- * \brief C++ API: Abstract base class for all number formats. |
- */ |
- |
-#if !UCONFIG_NO_FORMATTING |
- |
-#include "unicode/unistr.h" |
-#include "unicode/format.h" |
-#include "unicode/unum.h" // UNumberFormatStyle |
-#include "unicode/locid.h" |
-#include "unicode/stringpiece.h" |
- |
-U_NAMESPACE_BEGIN |
- |
-#if !UCONFIG_NO_SERVICE |
-class NumberFormatFactory; |
-class StringEnumeration; |
-#endif |
- |
-/** |
- * |
- * Abstract base class for all number formats. Provides interface for |
- * formatting and parsing a number. Also provides methods for |
- * determining which locales have number formats, and what their names |
- * are. |
- * <P> |
- * NumberFormat helps you to format and parse numbers for any locale. |
- * Your code can be completely independent of the locale conventions |
- * for decimal points, thousands-separators, or even the particular |
- * decimal digits used, or whether the number format is even decimal. |
- * <P> |
- * To format a number for the current Locale, use one of the static |
- * factory methods: |
- * <pre> |
- * \code |
- * double myNumber = 7.0; |
- * UnicodeString myString; |
- * UErrorCode success = U_ZERO_ERROR; |
- * NumberFormat* nf = NumberFormat::createInstance(success) |
- * nf->format(myNumber, myString); |
- * cout << " Example 1: " << myString << endl; |
- * \endcode |
- * </pre> |
- * If you are formatting multiple numbers, it is more efficient to get |
- * the format and use it multiple times so that the system doesn't |
- * have to fetch the information about the local language and country |
- * conventions multiple times. |
- * <pre> |
- * \code |
- * UnicodeString myString; |
- * UErrorCode success = U_ZERO_ERROR; |
- * nf = NumberFormat::createInstance( success ); |
- * int32_t a[] = { 123, 3333, -1234567 }; |
- * const int32_t a_len = sizeof(a) / sizeof(a[0]); |
- * myString.remove(); |
- * for (int32_t i = 0; i < a_len; i++) { |
- * nf->format(a[i], myString); |
- * myString += " ; "; |
- * } |
- * cout << " Example 2: " << myString << endl; |
- * \endcode |
- * </pre> |
- * To format a number for a different Locale, specify it in the |
- * call to createInstance(). |
- * <pre> |
- * \code |
- * nf = NumberFormat::createInstance( Locale::FRENCH, success ); |
- * \endcode |
- * </pre> |
- * You can use a NumberFormat to parse also. |
- * <pre> |
- * \code |
- * UErrorCode success; |
- * Formattable result(-999); // initialized with error code |
- * nf->parse(myString, result, success); |
- * \endcode |
- * </pre> |
- * Use createInstance to get the normal number format for that country. |
- * There are other static factory methods available. Use getCurrency |
- * to get the currency number format for that country. Use getPercent |
- * to get a format for displaying percentages. With this format, a |
- * fraction from 0.53 is displayed as 53%. |
- * <P> |
- * Starting from ICU 4.2, you can use createInstance() by passing in a 'style' |
- * as parameter to get the correct instance. |
- * For example, |
- * use createInstance(...kNumberStyle...) to get the normal number format, |
- * createInstance(...kPercentStyle...) to get a format for displaying |
- * percentage, |
- * createInstance(...kScientificStyle...) to get a format for displaying |
- * scientific number, |
- * createInstance(...kCurrencyStyle...) to get the currency number format, |
- * in which the currency is represented by its symbol, for example, "$3.00". |
- * createInstance(...kIsoCurrencyStyle...) to get the currency number format, |
- * in which the currency is represented by its ISO code, for example "USD3.00". |
- * createInstance(...kPluralCurrencyStyle...) to get the currency number format, |
- * in which the currency is represented by its full name in plural format, |
- * for example, "3.00 US dollars" or "1.00 US dollar". |
- * <P> |
- * You can also control the display of numbers with such methods as |
- * getMinimumFractionDigits. If you want even more control over the |
- * format or parsing, or want to give your users more control, you can |
- * try casting the NumberFormat you get from the factory methods to a |
- * DecimalNumberFormat. This will work for the vast majority of |
- * countries; just remember to put it in a try block in case you |
- * encounter an unusual one. |
- * <P> |
- * You can also use forms of the parse and format methods with |
- * ParsePosition and FieldPosition to allow you to: |
- * <ul type=round> |
- * <li>(a) progressively parse through pieces of a string. |
- * <li>(b) align the decimal point and other areas. |
- * </ul> |
- * For example, you can align numbers in two ways. |
- * <P> |
- * If you are using a monospaced font with spacing for alignment, you |
- * can pass the FieldPosition in your format call, with field = |
- * INTEGER_FIELD. On output, getEndIndex will be set to the offset |
- * between the last character of the integer and the decimal. Add |
- * (desiredSpaceCount - getEndIndex) spaces at the front of the |
- * string. |
- * <P> |
- * If you are using proportional fonts, instead of padding with |
- * spaces, measure the width of the string in pixels from the start to |
- * getEndIndex. Then move the pen by (desiredPixelWidth - |
- * widthToAlignmentPoint) before drawing the text. It also works |
- * where there is no decimal, but possibly additional characters at |
- * the end, e.g. with parentheses in negative numbers: "(12)" for -12. |
- * <p> |
- * <em>User subclasses are not supported.</em> While clients may write |
- * subclasses, such code will not necessarily work and will not be |
- * guaranteed to work stably from release to release. |
- * |
- * @stable ICU 2.0 |
- */ |
-class U_I18N_API NumberFormat : public Format { |
-public: |
- |
- /** |
- * Constants for various number format styles. |
- * kNumberStyle specifies a normal number style of format. |
- * kCurrencyStyle specifies a currency format using currency symbol name, |
- * such as in "$1.00". |
- * kPercentStyle specifies a style of format to display percent. |
- * kScientificStyle specifies a style of format to display scientific number. |
- * kISOCurrencyStyle specifies a currency format using ISO currency code, |
- * such as in "USD1.00". |
- * kPluralCurrencyStyle specifies a currency format using currency plural |
- * names, such as in "1.00 US dollar" and "3.00 US dollars". |
- * @draft ICU 4.2 |
- */ |
- enum EStyles { |
- kNumberStyle, |
- kCurrencyStyle, |
- kPercentStyle, |
- kScientificStyle, |
- kIsoCurrencyStyle, |
- kPluralCurrencyStyle, |
- kStyleCount // ALWAYS LAST ENUM: number of styles |
- }; |
- |
- /** |
- * Alignment Field constants used to construct a FieldPosition object. |
- * Signifies that the position of the integer part or fraction part of |
- * a formatted number should be returned. |
- * |
- * Note: as of ICU 4.4, the values in this enum have been extended to |
- * support identification of all number format fields, not just those |
- * pertaining to alignment. |
- * |
- * @see FieldPosition |
- * @stable ICU 2.0 |
- */ |
- enum EAlignmentFields { |
- kIntegerField, |
- kFractionField, |
- kDecimalSeparatorField, |
- kExponentSymbolField, |
- kExponentSignField, |
- kExponentField, |
- kGroupingSeparatorField, |
- kCurrencyField, |
- kPercentField, |
- kPermillField, |
- kSignField, |
- |
- /** |
- * These constants are provided for backwards compatibility only. |
- * Please use the C++ style constants defined above. |
- * @stable ICU 2.0 |
- */ |
- INTEGER_FIELD = kIntegerField, |
- FRACTION_FIELD = kFractionField |
- }; |
- |
- /** |
- * Destructor. |
- * @stable ICU 2.0 |
- */ |
- virtual ~NumberFormat(); |
- |
- /** |
- * Return true if the given Format objects are semantically equal. |
- * Objects of different subclasses are considered unequal. |
- * @return true if the given Format objects are semantically equal. |
- * @stable ICU 2.0 |
- */ |
- virtual UBool operator==(const Format& other) const; |
- |
- |
- using Format::format; |
- |
- /** |
- * Format an object to produce a string. This method handles |
- * Formattable objects with numeric types. If the Formattable |
- * object type is not a numeric type, then it returns a failing |
- * UErrorCode. |
- * |
- * @param obj The object to format. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param pos On input: an alignment field, if desired. |
- * On output: the offsets of the alignment field. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- virtual UnicodeString& format(const Formattable& obj, |
- UnicodeString& appendTo, |
- FieldPosition& pos, |
- UErrorCode& status) const; |
- |
- /** |
- * Format an object to produce a string. This method handles |
- * Formattable objects with numeric types. If the Formattable |
- * object type is not a numeric type, then it returns a failing |
- * UErrorCode. |
- * |
- * @param obj The object to format. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. Can be |
- * NULL. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable 4.4 |
- */ |
- virtual UnicodeString& format(const Formattable& obj, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
- |
- /** |
- * Parse a string to produce an object. This methods handles |
- * parsing of numeric strings into Formattable objects with numeric |
- * types. |
- * <P> |
- * Before calling, set parse_pos.index to the offset you want to |
- * start parsing at in the source. After calling, parse_pos.index |
- * indicates the position after the successfully parsed text. If |
- * an error occurs, parse_pos.index is unchanged. |
- * <P> |
- * When parsing, leading whitespace is discarded (with successful |
- * parse), while trailing whitespace is left as is. |
- * <P> |
- * See Format::parseObject() for more. |
- * |
- * @param source The string to be parsed into an object. |
- * @param result Formattable to be set to the parse result. |
- * If parse fails, return contents are undefined. |
- * @param parse_pos The position to start parsing at. Upon return |
- * this param is set to the position after the |
- * last character successfully parsed. If the |
- * source is not parsed successfully, this param |
- * will remain unchanged. |
- * @return A newly created Formattable* object, or NULL |
- * on failure. The caller owns this and should |
- * delete it when done. |
- * @stable ICU 2.0 |
- */ |
- virtual void parseObject(const UnicodeString& source, |
- Formattable& result, |
- ParsePosition& parse_pos) const; |
- |
- /** |
- * Format a double number. These methods call the NumberFormat |
- * pure virtual format() methods with the default FieldPosition. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- UnicodeString& format( double number, |
- UnicodeString& appendTo) const; |
- |
- /** |
- * Format a long number. These methods call the NumberFormat |
- * pure virtual format() methods with the default FieldPosition. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- UnicodeString& format( int32_t number, |
- UnicodeString& appendTo) const; |
- |
- /** |
- * Format an int64 number. These methods call the NumberFormat |
- * pure virtual format() methods with the default FieldPosition. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.8 |
- */ |
- UnicodeString& format( int64_t number, |
- UnicodeString& appendTo) const; |
- |
- /** |
- * Format a double number. Concrete subclasses must implement |
- * these pure virtual methods. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param pos On input: an alignment field, if desired. |
- * On output: the offsets of the alignment field. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- virtual UnicodeString& format(double number, |
- UnicodeString& appendTo, |
- FieldPosition& pos) const = 0; |
- /** |
- * Format a double number. Subclasses must implement |
- * this method. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. |
- * Can be NULL. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable 4.4 |
- */ |
- virtual UnicodeString& format(double number, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
- /** |
- * Format a long number. Concrete subclasses must implement |
- * these pure virtual methods. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param pos On input: an alignment field, if desired. |
- * On output: the offsets of the alignment field. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- virtual UnicodeString& format(int32_t number, |
- UnicodeString& appendTo, |
- FieldPosition& pos) const = 0; |
- |
- /** |
- * Format an int32 number. Subclasses must implement |
- * this method. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. |
- * Can be NULL. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable 4.4 |
- */ |
- virtual UnicodeString& format(int32_t number, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
- /** |
- * Format an int64 number. (Not abstract to retain compatibility |
- * with earlier releases, however subclasses should override this |
- * method as it just delegates to format(int32_t number...); |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param pos On input: an alignment field, if desired. |
- * On output: the offsets of the alignment field. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.8 |
- */ |
- virtual UnicodeString& format(int64_t number, |
- UnicodeString& appendTo, |
- FieldPosition& pos) const; |
- /** |
- * Format an int64 number. Subclasses must implement |
- * this method. |
- * |
- * @param number The value to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. |
- * Can be NULL. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable 4.4 |
- */ |
- virtual UnicodeString& format(int64_t number, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
- |
- /** |
- * Format a decimal number. Subclasses must implement |
- * this method. The syntax of the unformatted number is a "numeric string" |
- * as defined in the Decimal Arithmetic Specification, available at |
- * http://speleotrove.com/decimal |
- * |
- * @param number The unformatted number, as a string, to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. |
- * Can be NULL. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @stable 4.4 |
- */ |
- virtual UnicodeString& format(const StringPiece &number, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
-public: |
- /** |
- * Format a decimal number. |
- * The number is a DigitList wrapper onto a floating point decimal number. |
- * The default implementation in NumberFormat converts the decimal number |
- * to a double and formats that. Subclasses of NumberFormat that want |
- * to specifically handle big decimal numbers must override this method. |
- * class DecimalFormat does so. |
- * |
- * @param number The number, a DigitList format Decimal Floating Point. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param posIter On return, can be used to iterate over positions |
- * of fields generated by this format call. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @internal |
- */ |
- virtual UnicodeString& format(const DigitList &number, |
- UnicodeString& appendTo, |
- FieldPositionIterator* posIter, |
- UErrorCode& status) const; |
- |
- /** |
- * Format a decimal number. |
- * The number is a DigitList wrapper onto a floating point decimal number. |
- * The default implementation in NumberFormat converts the decimal number |
- * to a double and formats that. Subclasses of NumberFormat that want |
- * to specifically handle big decimal numbers must override this method. |
- * class DecimalFormat does so. |
- * |
- * @param number The number, a DigitList format Decimal Floating Point. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param pos On input: an alignment field, if desired. |
- * On output: the offsets of the alignment field. |
- * @param status Output param filled with success/failure status. |
- * @return Reference to 'appendTo' parameter. |
- * @internal |
- */ |
- virtual UnicodeString& format(const DigitList &number, |
- UnicodeString& appendTo, |
- FieldPosition& pos, |
- UErrorCode& status) const; |
- |
-public: |
- |
- /** |
- * Redeclared Format method. |
- * @param obj The object to be formatted. |
- * @param appendTo Output parameter to receive result. |
- * Result is appended to existing contents. |
- * @param status Output parameter set to a failure error code |
- * when a failure occurs. |
- * @return Reference to 'appendTo' parameter. |
- * @stable ICU 2.0 |
- */ |
- UnicodeString& format(const Formattable& obj, |
- UnicodeString& appendTo, |
- UErrorCode& status) const; |
- |
- /** |
- * Return a long if possible (e.g. within range LONG_MAX, |
- * LONG_MAX], and with no decimals), otherwise a double. If |
- * IntegerOnly is set, will stop at a decimal point (or equivalent; |
- * e.g. for rational numbers "1 2/3", will stop after the 1). |
- * <P> |
- * If no object can be parsed, index is unchanged, and NULL is |
- * returned. |
- * <P> |
- * This is a pure virtual which concrete subclasses must implement. |
- * |
- * @param text The text to be parsed. |
- * @param result Formattable to be set to the parse result. |
- * If parse fails, return contents are undefined. |
- * @param parsePosition The position to start parsing at on input. |
- * On output, moved to after the last successfully |
- * parse character. On parse failure, does not change. |
- * @return A Formattable object of numeric type. The caller |
- * owns this an must delete it. NULL on failure. |
- * @stable ICU 2.0 |
- */ |
- virtual void parse(const UnicodeString& text, |
- Formattable& result, |
- ParsePosition& parsePosition) const = 0; |
- |
- /** |
- * Parse a string as a numeric value, and return a Formattable |
- * numeric object. This method parses integers only if IntegerOnly |
- * is set. |
- * |
- * @param text The text to be parsed. |
- * @param result Formattable to be set to the parse result. |
- * If parse fails, return contents are undefined. |
- * @param status Output parameter set to a failure error code |
- * when a failure occurs. |
- * @return A Formattable object of numeric type. The caller |
- * owns this an must delete it. NULL on failure. |
- * @see NumberFormat::isParseIntegerOnly |
- * @stable ICU 2.0 |
- */ |
- virtual void parse( const UnicodeString& text, |
- Formattable& result, |
- UErrorCode& status) const; |
- |
- /** |
- * Parses text from the given string as a currency amount. Unlike |
- * the parse() method, this method will attempt to parse a generic |
- * currency name, searching for a match of this object's locale's |
- * currency display names, or for a 3-letter ISO currency code. |
- * This method will fail if this format is not a currency format, |
- * that is, if it does not contain the currency pattern symbol |
- * (U+00A4) in its prefix or suffix. |
- * |
- * @param text the string to parse |
- * @param result output parameter to receive result. This will have |
- * its currency set to the parsed ISO currency code. |
- * @param pos input-output position; on input, the position within |
- * text to match; must have 0 <= pos.getIndex() < text.length(); |
- * on output, the position after the last matched character. If |
- * the parse fails, the position in unchanged upon output. |
- * @return a reference to result |
- * @internal |
- */ |
- virtual Formattable& parseCurrency(const UnicodeString& text, |
- Formattable& result, |
- ParsePosition& pos) const; |
- |
- /** |
- * Return true if this format will parse numbers as integers |
- * only. For example in the English locale, with ParseIntegerOnly |
- * true, the string "1234." would be parsed as the integer value |
- * 1234 and parsing would stop at the "." character. Of course, |
- * the exact format accepted by the parse operation is locale |
- * dependant and determined by sub-classes of NumberFormat. |
- * @return true if this format will parse numbers as integers |
- * only. |
- * @stable ICU 2.0 |
- */ |
- UBool isParseIntegerOnly(void) const; |
- |
- /** |
- * Sets whether or not numbers should be parsed as integers only. |
- * @param value set True, this format will parse numbers as integers |
- * only. |
- * @see isParseIntegerOnly |
- * @stable ICU 2.0 |
- */ |
- virtual void setParseIntegerOnly(UBool value); |
- |
- /** |
- * Returns the default number format for the current default |
- * locale. The default format is one of the styles provided by |
- * the other factory methods: getNumberInstance, |
- * getCurrencyInstance or getPercentInstance. Exactly which one |
- * is locale dependant. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createInstance(UErrorCode&); |
- |
- /** |
- * Returns the default number format for the specified locale. |
- * The default format is one of the styles provided by the other |
- * factory methods: getNumberInstance, getCurrencyInstance or |
- * getPercentInstance. Exactly which one is locale dependant. |
- * @param inLocale the given locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createInstance(const Locale& inLocale, |
- UErrorCode&); |
- |
- /** |
- * Creates the specified decimal format style of the desired locale. |
- * @param desiredLocale the given locale. |
- * @param choice the given style. |
- * @param success Output param filled with success/failure status. |
- * @return A new NumberFormat instance. |
- * @draft ICU 4.2 |
- */ |
- static NumberFormat* U_EXPORT2 createInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success); |
- |
- |
- /** |
- * Returns a currency format for the current default locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createCurrencyInstance(UErrorCode&); |
- |
- /** |
- * Returns a currency format for the specified locale. |
- * @param inLocale the given locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createCurrencyInstance(const Locale& inLocale, |
- UErrorCode&); |
- |
- /** |
- * Returns a percentage format for the current default locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createPercentInstance(UErrorCode&); |
- |
- /** |
- * Returns a percentage format for the specified locale. |
- * @param inLocale the given locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createPercentInstance(const Locale& inLocale, |
- UErrorCode&); |
- |
- /** |
- * Returns a scientific format for the current default locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createScientificInstance(UErrorCode&); |
- |
- /** |
- * Returns a scientific format for the specified locale. |
- * @param inLocale the given locale. |
- * @stable ICU 2.0 |
- */ |
- static NumberFormat* U_EXPORT2 createScientificInstance(const Locale& inLocale, |
- UErrorCode&); |
- |
- /** |
- * Get the set of Locales for which NumberFormats are installed. |
- * @param count Output param to receive the size of the locales |
- * @stable ICU 2.0 |
- */ |
- static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count); |
- |
-#if !UCONFIG_NO_SERVICE |
- /** |
- * Register a new NumberFormatFactory. The factory will be adopted. |
- * @param toAdopt the NumberFormatFactory instance to be adopted |
- * @param status the in/out status code, no special meanings are assigned |
- * @return a registry key that can be used to unregister this factory |
- * @stable ICU 2.6 |
- */ |
- static URegistryKey U_EXPORT2 registerFactory(NumberFormatFactory* toAdopt, UErrorCode& status); |
- |
- /** |
- * Unregister a previously-registered NumberFormatFactory using the key returned from the |
- * register call. Key becomes invalid after a successful call and should not be used again. |
- * The NumberFormatFactory corresponding to the key will be deleted. |
- * @param key the registry key returned by a previous call to registerFactory |
- * @param status the in/out status code, no special meanings are assigned |
- * @return TRUE if the factory for the key was successfully unregistered |
- * @stable ICU 2.6 |
- */ |
- static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status); |
- |
- /** |
- * Return a StringEnumeration over the locales available at the time of the call, |
- * including registered locales. |
- * @return a StringEnumeration over the locales available at the time of the call |
- * @stable ICU 2.6 |
- */ |
- static StringEnumeration* U_EXPORT2 getAvailableLocales(void); |
-#endif /* UCONFIG_NO_SERVICE */ |
- |
- /** |
- * Returns true if grouping is used in this format. For example, |
- * in the English locale, with grouping on, the number 1234567 |
- * might be formatted as "1,234,567". The grouping separator as |
- * well as the size of each group is locale dependant and is |
- * determined by sub-classes of NumberFormat. |
- * @see setGroupingUsed |
- * @stable ICU 2.0 |
- */ |
- UBool isGroupingUsed(void) const; |
- |
- /** |
- * Set whether or not grouping will be used in this format. |
- * @param newValue True, grouping will be used in this format. |
- * @see getGroupingUsed |
- * @stable ICU 2.0 |
- */ |
- virtual void setGroupingUsed(UBool newValue); |
- |
- /** |
- * Returns the maximum number of digits allowed in the integer portion of a |
- * number. |
- * @return the maximum number of digits allowed in the integer portion of a |
- * number. |
- * @see setMaximumIntegerDigits |
- * @stable ICU 2.0 |
- */ |
- int32_t getMaximumIntegerDigits(void) const; |
- |
- /** |
- * Sets the maximum number of digits allowed in the integer portion of a |
- * number. maximumIntegerDigits must be >= minimumIntegerDigits. If the |
- * new value for maximumIntegerDigits is less than the current value |
- * of minimumIntegerDigits, then minimumIntegerDigits will also be set to |
- * the new value. |
- * |
- * @param newValue the new value for the maximum number of digits |
- * allowed in the integer portion of a number. |
- * @see getMaximumIntegerDigits |
- * @stable ICU 2.0 |
- */ |
- virtual void setMaximumIntegerDigits(int32_t newValue); |
- |
- /** |
- * Returns the minimum number of digits allowed in the integer portion of a |
- * number. |
- * @return the minimum number of digits allowed in the integer portion of a |
- * number. |
- * @see setMinimumIntegerDigits |
- * @stable ICU 2.0 |
- */ |
- int32_t getMinimumIntegerDigits(void) const; |
- |
- /** |
- * Sets the minimum number of digits allowed in the integer portion of a |
- * number. minimumIntegerDigits must be <= maximumIntegerDigits. If the |
- * new value for minimumIntegerDigits exceeds the current value |
- * of maximumIntegerDigits, then maximumIntegerDigits will also be set to |
- * the new value. |
- * @param newValue the new value to be set. |
- * @see getMinimumIntegerDigits |
- * @stable ICU 2.0 |
- */ |
- virtual void setMinimumIntegerDigits(int32_t newValue); |
- |
- /** |
- * Returns the maximum number of digits allowed in the fraction portion of a |
- * number. |
- * @return the maximum number of digits allowed in the fraction portion of a |
- * number. |
- * @see setMaximumFractionDigits |
- * @stable ICU 2.0 |
- */ |
- int32_t getMaximumFractionDigits(void) const; |
- |
- /** |
- * Sets the maximum number of digits allowed in the fraction portion of a |
- * number. maximumFractionDigits must be >= minimumFractionDigits. If the |
- * new value for maximumFractionDigits is less than the current value |
- * of minimumFractionDigits, then minimumFractionDigits will also be set to |
- * the new value. |
- * @param newValue the new value to be set. |
- * @see getMaximumFractionDigits |
- * @stable ICU 2.0 |
- */ |
- virtual void setMaximumFractionDigits(int32_t newValue); |
- |
- /** |
- * Returns the minimum number of digits allowed in the fraction portion of a |
- * number. |
- * @return the minimum number of digits allowed in the fraction portion of a |
- * number. |
- * @see setMinimumFractionDigits |
- * @stable ICU 2.0 |
- */ |
- int32_t getMinimumFractionDigits(void) const; |
- |
- /** |
- * Sets the minimum number of digits allowed in the fraction portion of a |
- * number. minimumFractionDigits must be <= maximumFractionDigits. If the |
- * new value for minimumFractionDigits exceeds the current value |
- * of maximumFractionDigits, then maximumIntegerDigits will also be set to |
- * the new value |
- * @param newValue the new value to be set. |
- * @see getMinimumFractionDigits |
- * @stable ICU 2.0 |
- */ |
- virtual void setMinimumFractionDigits(int32_t newValue); |
- |
- /** |
- * Sets the currency used to display currency |
- * amounts. This takes effect immediately, if this format is a |
- * currency format. If this format is not a currency format, then |
- * the currency is used if and when this object becomes a |
- * currency format. |
- * @param theCurrency a 3-letter ISO code indicating new currency |
- * to use. It need not be null-terminated. May be the empty |
- * string or NULL to indicate no currency. |
- * @param ec input-output error code |
- * @stable ICU 3.0 |
- */ |
- virtual void setCurrency(const UChar* theCurrency, UErrorCode& ec); |
- |
- /** |
- * Gets the currency used to display currency |
- * amounts. This may be an empty string for some subclasses. |
- * @return a 3-letter null-terminated ISO code indicating |
- * the currency in use, or a pointer to the empty string. |
- * @stable ICU 2.6 |
- */ |
- const UChar* getCurrency() const; |
- |
-public: |
- |
- /** |
- * Return the class ID for this class. This is useful for |
- * comparing to a return value from getDynamicClassID(). Note that, |
- * because NumberFormat is an abstract base class, no fully constructed object |
- * will have the class ID returned by NumberFormat::getStaticClassID(). |
- * @return The class ID for all objects of this class. |
- * @stable ICU 2.0 |
- */ |
- static UClassID U_EXPORT2 getStaticClassID(void); |
- |
- /** |
- * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. |
- * This method is to implement a simple version of RTTI, since not all |
- * C++ compilers support genuine RTTI. Polymorphic operator==() and |
- * clone() methods call this method. |
- * <P> |
- * @return The class ID for this object. All objects of a |
- * given class have the same class ID. Objects of |
- * other classes have different class IDs. |
- * @stable ICU 2.0 |
- */ |
- virtual UClassID getDynamicClassID(void) const = 0; |
- |
-protected: |
- |
- /** |
- * Default constructor for subclass use only. |
- * @stable ICU 2.0 |
- */ |
- NumberFormat(); |
- |
- /** |
- * Copy constructor. |
- * @stable ICU 2.0 |
- */ |
- NumberFormat(const NumberFormat&); |
- |
- /** |
- * Assignment operator. |
- * @stable ICU 2.0 |
- */ |
- NumberFormat& operator=(const NumberFormat&); |
- |
- /** |
- * Returns the currency in effect for this formatter. Subclasses |
- * should override this method as needed. Unlike getCurrency(), |
- * this method should never return "". |
- * @result output parameter for null-terminated result, which must |
- * have a capacity of at least 4 |
- * @internal |
- */ |
- virtual void getEffectiveCurrency(UChar* result, UErrorCode& ec) const; |
- |
-private: |
- |
- /** |
- * Creates the specified decimal format style of the desired locale. |
- * @param desiredLocale the given locale. |
- * @param choice the given style. |
- * @param success Output param filled with success/failure status. |
- * @return A new NumberFormat instance. |
- */ |
- static NumberFormat* makeInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success); |
- |
- UBool fGroupingUsed; |
- int32_t fMaxIntegerDigits; |
- int32_t fMinIntegerDigits; |
- int32_t fMaxFractionDigits; |
- int32_t fMinFractionDigits; |
- UBool fParseIntegerOnly; |
- |
- // ISO currency code |
- UChar fCurrency[4]; |
- |
- friend class ICUNumberFormatFactory; // access to makeInstance, EStyles |
- friend class ICUNumberFormatService; |
-}; |
- |
-#if !UCONFIG_NO_SERVICE |
-/** |
- * A NumberFormatFactory is used to register new number formats. The factory |
- * should be able to create any of the predefined formats for each locale it |
- * supports. When registered, the locales it supports extend or override the |
- * locale already supported by ICU. |
- * |
- * @stable ICU 2.6 |
- */ |
-class U_I18N_API NumberFormatFactory : public UObject { |
-public: |
- |
- /** |
- * Destructor |
- * @stable ICU 3.0 |
- */ |
- virtual ~NumberFormatFactory(); |
- |
- /** |
- * Return true if this factory will be visible. Default is true. |
- * If not visible, the locales supported by this factory will not |
- * be listed by getAvailableLocales. |
- * @stable ICU 2.6 |
- */ |
- virtual UBool visible(void) const = 0; |
- |
- /** |
- * Return the locale names directly supported by this factory. The number of names |
- * is returned in count; |
- * @stable ICU 2.6 |
- */ |
- virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const = 0; |
- |
- /** |
- * Return a number format of the appropriate type. If the locale |
- * is not supported, return null. If the locale is supported, but |
- * the type is not provided by this service, return null. Otherwise |
- * return an appropriate instance of NumberFormat. |
- * @stable ICU 2.6 |
- */ |
- virtual NumberFormat* createFormat(const Locale& loc, UNumberFormatStyle formatType) = 0; |
-}; |
- |
-/** |
- * A NumberFormatFactory that supports a single locale. It can be visible or invisible. |
- * @stable ICU 2.6 |
- */ |
-class U_I18N_API SimpleNumberFormatFactory : public NumberFormatFactory { |
-protected: |
- /** |
- * True if the locale supported by this factory is visible. |
- * @stable ICU 2.6 |
- */ |
- const UBool _visible; |
- |
- /** |
- * The locale supported by this factory, as a UnicodeString. |
- * @stable ICU 2.6 |
- */ |
- UnicodeString _id; |
- |
-public: |
- /** |
- * @stable ICU 2.6 |
- */ |
- SimpleNumberFormatFactory(const Locale& locale, UBool visible = TRUE); |
- |
- /** |
- * @stable ICU 3.0 |
- */ |
- virtual ~SimpleNumberFormatFactory(); |
- |
- /** |
- * @stable ICU 2.6 |
- */ |
- virtual UBool visible(void) const; |
- |
- /** |
- * @stable ICU 2.6 |
- */ |
- virtual const UnicodeString * getSupportedIDs(int32_t &count, UErrorCode& status) const; |
-}; |
-#endif /* #if !UCONFIG_NO_SERVICE */ |
- |
-// ------------------------------------- |
- |
-inline UBool |
-NumberFormat::isParseIntegerOnly() const |
-{ |
- return fParseIntegerOnly; |
-} |
- |
-inline UnicodeString& |
-NumberFormat::format(const Formattable& obj, |
- UnicodeString& appendTo, |
- UErrorCode& status) const { |
- return Format::format(obj, appendTo, status); |
-} |
- |
-U_NAMESPACE_END |
- |
-#endif /* #if !UCONFIG_NO_FORMATTING */ |
- |
-#endif // _NUMFMT |
-//eof |