You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by be...@apache.org on 2014/02/15 10:49:38 UTC
[32/59] [abbrv] remove couch_collate
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/numfmt.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/numfmt.h b/apps/couch_collate/platform/osx/icu/unicode/numfmt.h
deleted file mode 100644
index 6deab8f..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/numfmt.h
+++ /dev/null
@@ -1,886 +0,0 @@
-/*
-********************************************************************************
-* Copyright (C) 1997-2009, 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"
-
-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>
- * 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:
-
- /**
- * 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.
- *
- * @see FieldPosition
- * @stable ICU 2.0
- */
- enum EAlignmentFields {
- kIntegerField,
- kFractionField,
-
-
- /**
- * 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;
-
- /**
- * 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;
-
- /**
- * 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 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 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;
- /**
- * 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);
-
- /**
- * Return whether or not strict parsing is in effect.
- *
- * @return <code>TRUE</code> if strict parsing is in effect,
- * <code>FALSE</code> otherwise.
- * @internal
- */
- UBool isParseStrict(void) const;
-
- /**
- * Set whether or not strict parsing should be used.
- *
- * @param value <code>TRUE</code> if strict parsing should be used,
- * <code>FALSE</code> otherwise.
- * @internal
- */
- virtual void setParseStrict(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&);
-
- /**
- * 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:
-
- enum EStyles {
- kNumberStyle,
- kCurrencyStyle,
- kPercentStyle,
- kScientificStyle,
- kStyleCount // ALWAYS LAST ENUM: number of styles
- };
-
- /**
- * Creates the specified decimal format style of the desired locale.
- * Hook for service registration, uses makeInstance directly if no services
- * registered.
- * @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* U_EXPORT2 createInstance(const Locale& desiredLocale, EStyles choice, UErrorCode& success);
-
- /**
- * 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;
- UBool fParseStrict;
-
- // 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 UBool
-NumberFormat::isParseStrict() const
-{
- return fParseStrict;
-}
-
-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
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/parseerr.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/parseerr.h b/apps/couch_collate/platform/osx/icu/unicode/parseerr.h
deleted file mode 100644
index 44ff008..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/parseerr.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-**********************************************************************
-* Copyright (C) 1999-2005, International Business Machines
-* Corporation and others. All Rights Reserved.
-**********************************************************************
-* Date Name Description
-* 03/14/00 aliu Creation.
-* 06/27/00 aliu Change from C++ class to C struct
-**********************************************************************
-*/
-#ifndef PARSEERR_H
-#define PARSEERR_H
-
-#include "unicode/utypes.h"
-
-
-/**
- * \file
- * \brief C API: Parse Error Information
- */
-/**
- * The capacity of the context strings in UParseError.
- * @stable ICU 2.0
- */
-enum { U_PARSE_CONTEXT_LEN = 16 };
-
-/**
- * A UParseError struct is used to returned detailed information about
- * parsing errors. It is used by ICU parsing engines that parse long
- * rules, patterns, or programs, where the text being parsed is long
- * enough that more information than a UErrorCode is needed to
- * localize the error.
- *
- * <p>The line, offset, and context fields are optional; parsing
- * engines may choose not to use to use them.
- *
- * <p>The preContext and postContext strings include some part of the
- * context surrounding the error. If the source text is "let for=7"
- * and "for" is the error (e.g., because it is a reserved word), then
- * some examples of what a parser might produce are the following:
- *
- * <pre>
- * preContext postContext
- * "" "" The parser does not support context
- * "let " "=7" Pre- and post-context only
- * "let " "for=7" Pre- and post-context and error text
- * "" "for" Error text only
- * </pre>
- *
- * <p>Examples of engines which use UParseError (or may use it in the
- * future) are Transliterator, RuleBasedBreakIterator, and
- * RegexPattern.
- *
- * @stable ICU 2.0
- */
-typedef struct UParseError {
-
- /**
- * The line on which the error occured. If the parser uses this
- * field, it sets it to the line number of the source text line on
- * which the error appears, which will be be a value >= 1. If the
- * parse does not support line numbers, the value will be <= 0.
- * @stable ICU 2.0
- */
- int32_t line;
-
- /**
- * The character offset to the error. If the line field is >= 1,
- * then this is the offset from the start of the line. Otherwise,
- * this is the offset from the start of the text. If the parser
- * does not support this field, it will have a value < 0.
- * @stable ICU 2.0
- */
- int32_t offset;
-
- /**
- * Textual context before the error. Null-terminated. The empty
- * string if not supported by parser.
- * @stable ICU 2.0
- */
- UChar preContext[U_PARSE_CONTEXT_LEN];
-
- /**
- * The error itself and/or textual context after the error.
- * Null-terminated. The empty string if not supported by parser.
- * @stable ICU 2.0
- */
- UChar postContext[U_PARSE_CONTEXT_LEN];
-
-} UParseError;
-
-#endif
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/parsepos.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/parsepos.h b/apps/couch_collate/platform/osx/icu/unicode/parsepos.h
deleted file mode 100644
index cdf49e0..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/parsepos.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
-* Copyright (C) 1997-2005, International Business Machines Corporation and others. All Rights Reserved.
-*******************************************************************************
-*
-* File PARSEPOS.H
-*
-* Modification History:
-*
-* Date Name Description
-* 07/09/97 helena Converted from java.
-* 07/17/98 stephen Added errorIndex support.
-* 05/11/99 stephen Cleaned up.
-*******************************************************************************
-*/
-
-#ifndef PARSEPOS_H
-#define PARSEPOS_H
-
-#include "unicode/utypes.h"
-#include "unicode/uobject.h"
-
-
-U_NAMESPACE_BEGIN
-
-/**
- * \file
- * \brief C++ API: Canonical Iterator
- */
-/**
- * <code>ParsePosition</code> is a simple class used by <code>Format</code>
- * and its subclasses to keep track of the current position during parsing.
- * The <code>parseObject</code> method in the various <code>Format</code>
- * classes requires a <code>ParsePosition</code> object as an argument.
- *
- * <p>
- * By design, as you parse through a string with different formats,
- * you can use the same <code>ParsePosition</code>, since the index parameter
- * records the current position.
- *
- * The ParsePosition class is not suitable for subclassing.
- *
- * @version 1.3 10/30/97
- * @author Mark Davis, Helena Shih
- * @see java.text.Format
- */
-
-class U_COMMON_API ParsePosition : public UObject {
-public:
- /**
- * Default constructor, the index starts with 0 as default.
- * @stable ICU 2.0
- */
- ParsePosition()
- : UObject(),
- index(0),
- errorIndex(-1)
- {}
-
- /**
- * Create a new ParsePosition with the given initial index.
- * @param newIndex the new text offset.
- * @stable ICU 2.0
- */
- ParsePosition(int32_t newIndex)
- : UObject(),
- index(newIndex),
- errorIndex(-1)
- {}
-
- /**
- * Copy constructor
- * @param copy the object to be copied from.
- * @stable ICU 2.0
- */
- ParsePosition(const ParsePosition& copy)
- : UObject(copy),
- index(copy.index),
- errorIndex(copy.errorIndex)
- {}
-
- /**
- * Destructor
- * @stable ICU 2.0
- */
- virtual ~ParsePosition();
-
- /**
- * Assignment operator
- * @stable ICU 2.0
- */
- ParsePosition& operator=(const ParsePosition& copy);
-
- /**
- * Equality operator.
- * @return TRUE if the two parse positions are equal, FALSE otherwise.
- * @stable ICU 2.0
- */
- UBool operator==(const ParsePosition& that) const;
-
- /**
- * Equality operator.
- * @return TRUE if the two parse positions are not equal, FALSE otherwise.
- * @stable ICU 2.0
- */
- UBool operator!=(const ParsePosition& that) const;
-
- /**
- * Clone this object.
- * Clones can be used concurrently in multiple threads.
- * If an error occurs, then NULL is returned.
- * The caller must delete the clone.
- *
- * @return a clone of this object
- *
- * @see getDynamicClassID
- * @stable ICU 2.8
- */
- ParsePosition *clone() const;
-
- /**
- * Retrieve the current parse position. On input to a parse method, this
- * is the index of the character at which parsing will begin; on output, it
- * is the index of the character following the last character parsed.
- * @return the current index.
- * @stable ICU 2.0
- */
- int32_t getIndex(void) const;
-
- /**
- * Set the current parse position.
- * @param index the new index.
- * @stable ICU 2.0
- */
- void setIndex(int32_t index);
-
- /**
- * Set the index at which a parse error occurred. Formatters
- * should set this before returning an error code from their
- * parseObject method. The default value is -1 if this is not
- * set.
- * @stable ICU 2.0
- */
- void setErrorIndex(int32_t ei);
-
- /**
- * Retrieve the index at which an error occurred, or -1 if the
- * error index has not been set.
- * @stable ICU 2.0
- */
- int32_t getErrorIndex(void) const;
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for this class.
- *
- * @stable ICU 2.2
- */
- static UClassID U_EXPORT2 getStaticClassID();
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
- *
- * @stable ICU 2.2
- */
- virtual UClassID getDynamicClassID() const;
-
-private:
- /**
- * Input: the place you start parsing.
- * <br>Output: position where the parse stopped.
- * This is designed to be used serially,
- * with each call setting index up for the next one.
- */
- int32_t index;
-
- /**
- * The index at which a parse error occurred.
- */
- int32_t errorIndex;
-
-};
-
-inline ParsePosition&
-ParsePosition::operator=(const ParsePosition& copy)
-{
- index = copy.index;
- errorIndex = copy.errorIndex;
- return *this;
-}
-
-inline UBool
-ParsePosition::operator==(const ParsePosition& copy) const
-{
- if(index != copy.index || errorIndex != copy.errorIndex)
- return FALSE;
- else
- return TRUE;
-}
-
-inline UBool
-ParsePosition::operator!=(const ParsePosition& copy) const
-{
- return !operator==(copy);
-}
-
-inline int32_t
-ParsePosition::getIndex() const
-{
- return index;
-}
-
-inline void
-ParsePosition::setIndex(int32_t offset)
-{
- this->index = offset;
-}
-
-inline int32_t
-ParsePosition::getErrorIndex() const
-{
- return errorIndex;
-}
-
-inline void
-ParsePosition::setErrorIndex(int32_t ei)
-{
- this->errorIndex = ei;
-}
-U_NAMESPACE_END
-
-#endif
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/platform.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/platform.h b/apps/couch_collate/platform/osx/icu/unicode/platform.h
deleted file mode 100644
index 15ccbf5..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/platform.h
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-******************************************************************************
-*
-* Copyright (C) 1997-2007, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-******************************************************************************
-*
-* FILE NAME : platform.h
-*
-* Date Name Description
-* 05/13/98 nos Creation (content moved here from ptypes.h).
-* 03/02/99 stephen Added AS400 support.
-* 03/30/99 stephen Added Linux support.
-* 04/13/99 stephen Reworked for autoconf.
-******************************************************************************
-*/
-
-/**
- * \file
- * \brief Basic types for the platform
- */
-
-/* Define the platform we're on. */
-#ifndef U_DARWIN
-#define U_DARWIN
-#endif
-
-/* Define whether inttypes.h is available */
-#ifndef U_HAVE_INTTYPES_H
-#define U_HAVE_INTTYPES_H 1
-#endif
-
-/*
- * Define what support for C++ streams is available.
- * If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available
- * (1997711 is the date the ISO/IEC C++ FDIS was published), and then
- * one should qualify streams using the std namespace in ICU header
- * files.
- * If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is
- * available instead (198506 is the date when Stroustrup published
- * "An Extensible I/O Facility for C++" at the summer USENIX conference).
- * If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and
- * support for them will be silently suppressed in ICU.
- *
- */
-
-#ifndef U_IOSTREAM_SOURCE
-#define U_IOSTREAM_SOURCE 199711
-#endif
-
-/* Determines whether specific types are available */
-#ifndef U_HAVE_INT8_T
-#define U_HAVE_INT8_T 1
-#endif
-
-#ifndef U_HAVE_UINT8_T
-#define U_HAVE_UINT8_T 1
-#endif
-
-#ifndef U_HAVE_INT16_T
-#define U_HAVE_INT16_T 1
-#endif
-
-#ifndef U_HAVE_UINT16_T
-#define U_HAVE_UINT16_T 1
-#endif
-
-#ifndef U_HAVE_INT32_T
-#define U_HAVE_INT32_T 1
-#endif
-
-#ifndef U_HAVE_UINT32_T
-#define U_HAVE_UINT32_T 1
-#endif
-
-#ifndef U_HAVE_INT64_T
-#define U_HAVE_INT64_T 1
-#endif
-
-#ifndef U_HAVE_UINT64_T
-#define U_HAVE_UINT64_T 1
-#endif
-
-/*===========================================================================*/
-/* Generic data types */
-/*===========================================================================*/
-
-#include <sys/types.h>
-
-/* If your platform does not have the <inttypes.h> header, you may
- need to edit the typedefs below. */
-#if U_HAVE_INTTYPES_H
-
-/* autoconf 2.13 sometimes can't properly find the data types in <inttypes.h> */
-/* os/390 needs <inttypes.h>, but it doesn't have int8_t, and it sometimes */
-/* doesn't have uint8_t depending on the OS version. */
-/* So we have this work around. */
-#ifdef OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* OS390 */
-
-#include <inttypes.h>
-
-#else /* U_HAVE_INTTYPES_H */
-
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
-#endif
-
-#if ! U_HAVE_INT64_T
- typedef signed long long int64_t;
-/* else we may not have a 64-bit type */
-#endif
-
-#if ! U_HAVE_UINT64_T
- typedef unsigned long long uint64_t;
-/* else we may not have a 64-bit type */
-#endif
-
-#endif
-
-/*===========================================================================*/
-/* Compiler and environment features */
-/*===========================================================================*/
-
-/* Define whether namespace is supported */
-#ifndef U_HAVE_NAMESPACE
-#define U_HAVE_NAMESPACE 1
-#endif
-
-/* Determines the endianness of the platform
- It's done this way in case multiple architectures are being built at once.
- For example, Darwin supports fat binaries, which can be both PPC and x86 based. */
-#if defined(BYTE_ORDER) && defined(BIG_ENDIAN)
-#define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
-#else
-#define U_IS_BIG_ENDIAN 0
-#endif
-
-/* 1 or 0 to enable or disable threads. If undefined, default is: enable threads. */
-#define ICU_USE_THREADS 1
-
-/* On strong memory model CPUs (e.g. x86 CPUs), we use a safe & quick double check lock. */
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-#define UMTX_STRONG_MEMORY_MODEL 1
-#endif
-
-#ifndef U_DEBUG
-#define U_DEBUG 0
-#endif
-
-#ifndef U_RELEASE
-#define U_RELEASE 1
-#endif
-
-/* Determine whether to disable renaming or not. This overrides the
- setting in umachine.h which is for all platforms. */
-#ifndef U_DISABLE_RENAMING
-#define U_DISABLE_RENAMING 1
-#endif
-
-/* Determine whether to override new and delete. */
-#ifndef U_OVERRIDE_CXX_ALLOCATION
-#define U_OVERRIDE_CXX_ALLOCATION 1
-#endif
-/* Determine whether to override placement new and delete for STL. */
-#ifndef U_HAVE_PLACEMENT_NEW
-#define U_HAVE_PLACEMENT_NEW 1
-#endif
-
-/* Determine whether to enable tracing. */
-#ifndef U_ENABLE_TRACING
-#define U_ENABLE_TRACING 0
-#endif
-
-/* Do we allow ICU users to use the draft APIs by default? */
-#ifndef U_DEFAULT_SHOW_DRAFT
-#define U_DEFAULT_SHOW_DRAFT 1
-#endif
-
-/* Define the library suffix in a C syntax. */
-#define U_HAVE_LIB_SUFFIX 0
-#define U_LIB_SUFFIX_C_NAME
-#define U_LIB_SUFFIX_C_NAME_STRING ""
-
-/*===========================================================================*/
-/* Character data types */
-/*===========================================================================*/
-
-#if ((defined(OS390) && (!defined(__CHARSET_LIB) || !__CHARSET_LIB))) || defined(OS400)
-# define U_CHARSET_FAMILY 1
-#endif
-
-/*===========================================================================*/
-/* Information about wchar support */
-/*===========================================================================*/
-
-#define U_HAVE_WCHAR_H 1
-#define U_SIZEOF_WCHAR_T 4
-
-#define U_HAVE_WCSCPY 1
-
-/**
- * \def U_DECLARE_UTF16
- * Do not use this macro. Use the UNICODE_STRING or U_STRING_DECL macros
- * instead.
- * @internal
- */
-#if 1 || defined(U_CHECK_UTF16_STRING)
-#if (defined(__xlC__) && defined(__IBM_UTF_LITERAL) && U_SIZEOF_WCHAR_T != 2) \
- || (defined(__HP_aCC) && __HP_aCC >= 035000) \
- || (defined(__HP_cc) && __HP_cc >= 111106)
-#define U_DECLARE_UTF16(string) u ## string
-#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550)
-/* || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x580) */
-/* Sun's C compiler has issues with this notation, and it's unreliable. */
-#define U_DECLARE_UTF16(string) U ## string
-#elif U_SIZEOF_WCHAR_T == 2 \
- && (U_CHARSET_FAMILY == 0 || ((defined(OS390) || defined(OS400)) && defined(__UCS2__)))
-#define U_DECLARE_UTF16(string) L ## string
-#endif
-#endif
-
-/*===========================================================================*/
-/* Information about POSIX support */
-/*===========================================================================*/
-
-#define U_HAVE_NL_LANGINFO_CODESET 1
-#define U_NL_LANGINFO_CODESET CODESET
-
-#if 1
-#define U_TZSET tzset
-#endif
-#if 1
-#define U_TIMEZONE timezone
-#endif
-#if 1
-#define U_TZNAME tzname
-#endif
-
-#define U_HAVE_MMAP 1
-#define U_HAVE_POPEN 1
-
-/*===========================================================================*/
-/* Symbol import-export control */
-/*===========================================================================*/
-
-#if 1
-#define U_EXPORT __attribute__((visibility("default")))
-#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
- || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550)
-#define U_EXPORT __global
-/*#elif defined(__HP_aCC) || defined(__HP_cc)
-#define U_EXPORT __declspec(dllexport)*/
-#else
-#define U_EXPORT
-#endif
-
-/* U_CALLCONV is releated to U_EXPORT2 */
-#define U_EXPORT2
-
-/* cygwin needs to export/import data */
-#ifdef U_CYGWIN
-#define U_IMPORT __declspec(dllimport)
-#else
-#define U_IMPORT
-#endif
-
-/*===========================================================================*/
-/* Code alignment and C function inlining */
-/*===========================================================================*/
-
-#ifndef U_INLINE
-# ifdef __cplusplus
-# define U_INLINE inline
-# else
-# define U_INLINE inline
-# endif
-#endif
-
-#define U_ALIGN_CODE(n)
-
-/*===========================================================================*/
-/* Programs used by ICU code */
-/*===========================================================================*/
-
-#define U_MAKE "/usr/bin/gnumake"
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/plurfmt.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/plurfmt.h b/apps/couch_collate/platform/osx/icu/unicode/plurfmt.h
deleted file mode 100644
index 445db39..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/plurfmt.h
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
-*******************************************************************************
-* Copyright (C) 2007-2008, International Business Machines Corporation and
-* others. All Rights Reserved.
-*******************************************************************************
-*
-
-* File PLURFMT.H
-*
-* Modification History:*
-* Date Name Description
-*
-********************************************************************************
-*/
-
-#ifndef PLURFMT
-#define PLURFMT
-
-#include "unicode/utypes.h"
-
-/**
- * \file
- * \brief C++ API: PluralFormat object
- */
-
-#if !UCONFIG_NO_FORMATTING
-
-#include "unicode/numfmt.h"
-#include "unicode/plurrule.h"
-
-U_NAMESPACE_BEGIN
-
-class Hashtable;
-
-/**
- * <p>
- * <code>PluralFormat</code> supports the creation of internationalized
- * messages with plural inflection. It is based on <i>plural
- * selection</i>, i.e. the caller specifies messages for each
- * plural case that can appear in the users language and the
- * <code>PluralFormat</code> selects the appropriate message based on
- * the number.
- * </p>
- * <h4>The Problem of Plural Forms in Internationalized Messages</h4>
- * <p>
- * Different languages have different ways to inflect
- * plurals. Creating internationalized messages that include plural
- * forms is only feasible when the framework is able to handle plural
- * forms of <i>all</i> languages correctly. <code>ChoiceFormat</code>
- * doesn't handle this well, because it attaches a number interval to
- * each message and selects the message whose interval contains a
- * given number. This can only handle a finite number of
- * intervals. But in some languages, like Polish, one plural case
- * applies to infinitely many intervals (e.g., paucal applies to
- * numbers ending with 2, 3, or 4 except those ending with 12, 13, or
- * 14). Thus <code>ChoiceFormat</code> is not adequate.
- * </p><p>
- * <code>PluralFormat</code> deals with this by breaking the problem
- * into two parts:
- * <ul>
- * <li>It uses <code>PluralRules</code> that can define more complex
- * conditions for a plural case than just a single interval. These plural
- * rules define both what plural cases exist in a language, and to
- * which numbers these cases apply.
- * <li>It provides predefined plural rules for many locales. Thus, the programmer
- * need not worry about the plural cases of a language. On the flip side,
- * the localizer does not have to specify the plural cases; he can simply
- * use the predefined keywords. The whole plural formatting of messages can
- * be done using localized patterns from resource bundles.
- * </ul>
- * </p>
- * <h4>Usage of <code>PluralFormat</code></h4>
- * <p>
- * This discussion assumes that you use <code>PluralFormat</code> with
- * a predefined set of plural rules. You can create one using one of
- * the constructors that takes a <code>locale</code> object. To
- * specify the message pattern, you can either pass it to the
- * constructor or set it explicitly using the
- * <code>applyPattern()</code> method. The <code>format()</code>
- * method takes a number object and selects the message of the
- * matching plural case. This message will be returned.
- * </p>
- * <h5>Patterns and Their Interpretation</h5>
- * <p>
- * The pattern text defines the message output for each plural case of the
- * used locale. The pattern is a sequence of
- * <code><i>caseKeyword</i>{<i>message</i>}</code> clauses, separated by white
- * space characters. Each clause assigns the message <code><i>message</i></code>
- * to the plural case identified by <code><i>caseKeyword</i></code>.
- * </p><p>
- * You always have to define a message text for the default plural case
- * "<code>other</code>" which is contained in every rule set. If the plural
- * rules of the <code>PluralFormat</code> object do not contain a plural case
- * identified by <code><i>caseKeyword</i></code>, U_DEFAULT_KEYWORD_MISSING
- * will be set to status.
- * If you do not specify a message text for a particular plural case, the
- * message text of the plural case "<code>other</code>" gets assigned to this
- * plural case. If you specify more than one message for the same plural case,
- * U_DUPLICATE_KEYWORD will be set to status.
- * <br/>
- * Spaces between <code><i>caseKeyword</i></code> and
- * <code><i>message</i></code> will be ignored; spaces within
- * <code><i>message</i></code> will be preserved.
- * </p><p>
- * The message text for a particular plural case may contain other message
- * format patterns. <code>PluralFormat</code> preserves these so that you
- * can use the strings produced by <code>PluralFormat</code> with other
- * formatters. If you are using <code>PluralFormat</code> inside a
- * <code>MessageFormat</code> pattern, <code>MessageFormat</code> will
- * automatically evaluate the resulting format pattern.<br/>
- * Thus, curly braces (<code>{</code>, <code>}</code>) are <i>only</i> allowed
- * in message texts to define a nested format pattern.<br/>
- * The pound sign (<code>#</code>) will be interpreted as the number placeholder
- * in the message text, if it is not contained in curly braces (to preserve
- * <code>NumberFormat</code> patterns). <code>PluralFormat</code> will
- * replace each of those pound signs by the number passed to the
- * <code>format()</code> method. It will be formatted using a
- * <code>NumberFormat</code> for the <code>PluralFormat</code>'s locale. If you
- * need special number formatting, you have to explicitly specify a
- * <code>NumberFormat</code> for the <code>PluralFormat</code> to use.
- * </p>
- * Example
- * <pre>
- * UErrorCode status = U_ZERO_ERROR;
- * MessageFormat* msgFmt = new MessageFormat(UnicodeString("{0, plural,
- * one{{0, number, C''est #,##0.0# fichier}} other {Ce sont # fichiers}} dans la liste."),
- * Locale("fr"), status);
- * if (U_FAILURE(status)) {
- * return;
- * }
- * Formattable args1[] = {(int32_t)0};
- * Formattable args2[] = {(int32_t)3};
- * FieldPosition ignore(FieldPosition::DONT_CARE);
- * UnicodeString result;
- * msgFmt->format(args1, 1, result, ignore, status);
- * cout << result << endl;
- * result.remove();
- * msgFmt->format(args2, 1, result, ignore, status);
- * cout << result << endl;
- * </pre>
- * Produces the output:<br/>
- * <code>C'est 0,0 fichier dans la liste.</code><br/>
- * <code>Ce sont 3 fichiers dans la liste."</code>
- * <p>
- * <strong>Note:</strong><br/>
- * Currently <code>PluralFormat</code>
- * does not make use of quotes like <code>MessageFormat</code>.
- * If you use plural format strings with <code>MessageFormat</code> and want
- * to use a quote sign "<code>'</code>", you have to write "<code>''</code>".
- * <code>MessageFormat</code> unquotes this pattern and passes the unquoted
- * pattern to <code>PluralFormat</code>. It's a bit trickier if you use
- * nested formats that do quoting. In the example above, we wanted to insert
- * "<code>'</code>" in the number format pattern. Since
- * <code>NumberFormat</code> supports quotes, we had to insert
- * "<code>''</code>". But since <code>MessageFormat</code> unquotes the
- * pattern before it gets passed to <code>PluralFormat</code>, we have to
- * double these quotes, i.e. write "<code>''''</code>".
- * </p>
- * <h4>Defining Custom Plural Rules</h4>
- * <p>If you need to use <code>PluralFormat</code> with custom rules, you can
- * create a <code>PluralRules</code> object and pass it to
- * <code>PluralFormat</code>'s constructor. If you also specify a locale in this
- * constructor, this locale will be used to format the number in the message
- * texts.
- * </p><p>
- * For more information about <code>PluralRules</code>, see
- * {@link PluralRules}.
- * </p>
- *
- * ported from Java
- * @draft ICU 4.0
- */
-
-class U_I18N_API PluralFormat : public Format {
-public:
-
- /**
- * Creates a new <code>PluralFormat</code> for the default locale.
- * This locale will be used to get the set of plural rules and for standard
- * number formatting.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given locale.
- * @param locale the <code>PluralFormat</code> will be configured with
- * rules for this locale. This locale will also be used for
- * standard number formatting.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const Locale& locale, UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given set of rules.
- * The standard number formatting will be done using the default locale.
- * @param rules defines the behavior of the <code>PluralFormat</code>
- * object.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const PluralRules& rules, UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given set of rules.
- * The standard number formatting will be done using the given locale.
- * @param locale the default number formatting will be done using this
- * locale.
- * @param rules defines the behavior of the <code>PluralFormat</code>
- * object.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given pattern string.
- * The default locale will be used to get the set of plural rules and for
- * standard number formatting.
- * @param pattern the pattern for this <code>PluralFormat</code>.
- * errors are returned to status if the pattern is invalid.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const UnicodeString& pattern, UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given pattern string and
- * locale.
- * The locale will be used to get the set of plural rules and for
- * standard number formatting.
- * @param locale the <code>PluralFormat</code> will be configured with
- * rules for this locale. This locale will also be used for
- * standard number formatting.
- * @param pattern the pattern for this <code>PluralFormat</code>.
- * errors are returned to status if the pattern is invalid.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const Locale& locale, const UnicodeString& pattern, UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given set of rules, a
- * pattern and a locale.
- * @param rules defines the behavior of the <code>PluralFormat</code>
- * object.
- * @param pattern the pattern for this <code>PluralFormat</code>.
- * errors are returned to status if the pattern is invalid.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const PluralRules& rules,
- const UnicodeString& pattern,
- UErrorCode& status);
-
- /**
- * Creates a new <code>PluralFormat</code> for a given set of rules, a
- * pattern and a locale.
- * @param locale the <code>PluralFormat</code> will be configured with
- * rules for this locale. This locale will also be used for
- * standard number formatting.
- * @param rules defines the behavior of the <code>PluralFormat</code>
- * object.
- * @param pattern the pattern for this <code>PluralFormat</code>.
- * errors are returned to status if the pattern is invalid.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- PluralFormat(const Locale& locale,
- const PluralRules& rules,
- const UnicodeString& pattern,
- UErrorCode& status);
-
- /**
- * copy constructor.
- * @draft ICU 4.0
- */
- PluralFormat(const PluralFormat& other);
-
- /**
- * Destructor.
- * @draft ICU 4.0
- */
- virtual ~PluralFormat();
-
- /**
- * Sets the pattern used by this plural format.
- * The method parses the pattern and creates a map of format strings
- * for the plural rules.
- * Patterns and their interpretation are specified in the class description.
- *
- * @param pattern the pattern for this plural format
- * errors are returned to status if the pattern is invalid.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- void applyPattern(const UnicodeString& pattern, UErrorCode& status);
-
- /**
- * Formats a plural message for a given number.
- *
- * @param number a number for which the plural message should be formatted
- * for. If no pattern has been applied to this
- * <code>PluralFormat</code> object yet, the formatted number
- * will be returned.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return the string containing the formatted plural message.
- * @draft ICU 4.0
- */
- UnicodeString format(int32_t number, UErrorCode& status) const;
-
- /**
- * Formats a plural message for a given number.
- *
- * @param number a number for which the plural message should be formatted
- * for. If no pattern has been applied to this
- * <code>PluralFormat</code> object yet, the formatted number
- * will be returned.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return the string containing the formatted plural message.
- * @draft ICU 4.0
- */
- UnicodeString format(double number, UErrorCode& status) const;
-
- /**
- * Formats a plural message for a given number.
- *
- * @param number a number for which the plural message should be formatted
- * for. If no pattern has been applied to this
- * <code>PluralFormat</code> object yet, the formatted number
- * will be returned.
- * @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 set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return the string containing the formatted plural message.
- * @draft ICU 4.0
- */
- UnicodeString& format(int32_t number,
- UnicodeString& appendTo,
- FieldPosition& pos,
- UErrorCode& status) const;
-
- /**
- * Formats a plural message for a given number.
- *
- * @param number a number for which the plural message should be formatted
- * for. If no pattern has been applied to this
- * <code>PluralFormat</code> object yet, the formatted number
- * will be returned.
- * @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 set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return the string containing the formatted plural message.
- * @draft ICU 4.0
- */
- UnicodeString& format(double number,
- UnicodeString& appendTo,
- FieldPosition& pos,
- UErrorCode& status) const;
-
- /**
- * Sets the locale used by this <code>PluraFormat</code> object.
- * Note: Calling this method resets this <code>PluraFormat</code> object,
- * i.e., a pattern that was applied previously will be removed,
- * and the NumberFormat is set to the default number format for
- * the locale. The resulting format behaves the same as one
- * constructed from {@link #PluralFormat(locale)}.
- * @param locale the <code>locale</code> to use to configure the formatter.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- void setLocale(const Locale& locale, UErrorCode& status);
-
- /**
- * Sets the number format used by this formatter. You only need to
- * call this if you want a different number format than the default
- * formatter for the locale.
- * @param format the number format to use.
- * @param status output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @draft ICU 4.0
- */
- void setNumberFormat(const NumberFormat* format, UErrorCode& status);
-
- /**
- * Assignment operator
- *
- * @param other the PluralFormat object to copy from.
- * @draft ICU 4.0
- */
- PluralFormat& operator=(const PluralFormat& other);
-
- /**
- * Return true if another object is semantically equal to this one.
- *
- * @param other the PluralFormat object to be compared with.
- * @return true if other is semantically equal to this.
- * @draft ICU 4.0
- */
- virtual UBool operator==(const Format& other) const;
-
- /**
- * Return true if another object is semantically unequal to this one.
- *
- * @param other the PluralFormat object to be compared with.
- * @return true if other is semantically unequal to this.
- * @draft ICU 4.0
- */
- virtual UBool operator!=(const Format& other) const;
-
- /**
- * Clones this Format object polymorphically. The caller owns the
- * result and should delete it when done.
- * @draft ICU 4.0
- */
- virtual Format* clone(void) const;
-
- /**
- * Redeclared Format method.
- *
- * @param obj The object to be formatted into a string.
- * @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.
- * @draft ICU 4.0
- */
- UnicodeString& format(const Formattable& obj,
- UnicodeString& appendTo,
- FieldPosition& pos,
- UErrorCode& status) const;
-
- /**
- * Returns the pattern from applyPattern() or constructor().
- *
- * @param appendTo output parameter to receive result.
- * Result is appended to existing contents.
- * @return the UnicodeString with inserted pattern.
- * @draft ICU 4.0
- */
- UnicodeString& toPattern(UnicodeString& appendTo);
-
- /**
- * This method is not yet supported by <code>PluralFormat</code>.
- * <P>
- * Before calling, set parse_pos.index to the offset you want to start
- * parsing at in the source. After calling, parse_pos.index is the end of
- * the text you parsed. If error occurs, index is unchanged.
- * <P>
- * When parsing, leading whitespace is discarded (with a 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.
- * @draft ICU 4.0
- */
- virtual void parseObject(const UnicodeString& source,
- Formattable& result,
- ParsePosition& parse_pos) const;
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for this class.
- *
- * @draft ICU 4.0
- *
- */
- static UClassID U_EXPORT2 getStaticClassID(void);
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
- *
- * @draft ICU 4.0
- */
- virtual UClassID getDynamicClassID() const;
-
-private:
- typedef enum fmtToken {
- none,
- tLetter,
- tNumber,
- tSpace,
- tNumberSign,
- tLeftBrace,
- tRightBrace
- }fmtToken;
-
- Locale locale;
- PluralRules* pluralRules;
- UnicodeString pattern;
- Hashtable *fParsedValuesHash;
- NumberFormat* numberFormat;
- NumberFormat* replacedNumberFormat;
-
- PluralFormat(); // default constructor not implemented
- void init(const PluralRules* rules, const Locale& curlocale, UErrorCode& status);
- UBool inRange(UChar ch, fmtToken& type);
- UBool checkSufficientDefinition();
- void parsingFailure();
- UnicodeString insertFormattedNumber(double number,
- UnicodeString& message,
- UnicodeString& appendTo,
- FieldPosition& pos) const;
- void copyHashtable(Hashtable *other, UErrorCode& status);
-};
-
-U_NAMESPACE_END
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
-
-#endif // _PLURFMT
-//eof
http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/plurrule.h
----------------------------------------------------------------------
diff --git a/apps/couch_collate/platform/osx/icu/unicode/plurrule.h b/apps/couch_collate/platform/osx/icu/unicode/plurrule.h
deleted file mode 100644
index 7c3fedb..0000000
--- a/apps/couch_collate/platform/osx/icu/unicode/plurrule.h
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
-*******************************************************************************
-* Copyright (C) 2008, International Business Machines Corporation and
-* others. All Rights Reserved.
-*******************************************************************************
-*
-*
-* File PLURRULE.H
-*
-* Modification History:*
-* Date Name Description
-*
-********************************************************************************
-*/
-
-#ifndef PLURRULE
-#define PLURRULE
-
-#include "unicode/utypes.h"
-
-/**
- * \file
- * \brief C++ API: PluralRules object
- */
-
-#if !UCONFIG_NO_FORMATTING
-
-#include "unicode/format.h"
-
-U_NAMESPACE_BEGIN
-
-class Hashtable;
-class RuleChain;
-class RuleParser;
-
-/**
- * Defines rules for mapping positive long values onto a small set of
- * keywords. Rules are constructed from a text description, consisting
- * of a series of keywords and conditions. The {@link #select} method
- * examines each condition in order and returns the keyword for the
- * first condition that matches the number. If none match,
- * default rule(other) is returned.
- *
- * Examples:<pre>
- * "one: n is 1; few: n in 2..4"</pre>
- * This defines two rules, for 'one' and 'few'. The condition for
- * 'one' is "n is 1" which means that the number must be equal to
- * 1 for this condition to pass. The condition for 'few' is
- * "n in 2..4" which means that the number must be between 2 and
- * 4 inclusive for this condition to pass. All other numbers
- * are assigned the keyword "other" by the default rule.
- * </p><pre>
- * "zero: n is 0; one: n is 1; zero: n mod 100 in 1..19"</pre>
- * This illustrates that the same keyword can be defined multiple times.
- * Each rule is examined in order, and the first keyword whose condition
- * passes is the one returned. Also notes that a modulus is applied
- * to n in the last rule. Thus its condition holds for 119, 219, 319...
- * </p><pre>
- * "one: n is 1; few: n mod 10 in 2..4 and n mod 100 not in 12..14"</pre>
- * This illustrates conjunction and negation. The condition for 'few'
- * has two parts, both of which must be met: "n mod 10 in 2..4" and
- * "n mod 100 not in 12..14". The first part applies a modulus to n
- * before the test as in the previous example. The second part applies
- * a different modulus and also uses negation, thus it matches all
- * numbers _not_ in 12, 13, 14, 112, 113, 114, 212, 213, 214...
- * </p>
- * <p>
- * Syntax:<pre>
- * rules = rule (';' rule)*
- * rule = keyword ':' condition
- * keyword = <identifier>
- * condition = and_condition ('or' and_condition)*
- * and_condition = relation ('and' relation)*
- * relation = is_relation | in_relation | within_relation | 'n' <EOL>
- * is_relation = expr 'is' ('not')? value
- * in_relation = expr ('not')? 'in' range
- * within_relation = expr ('not')? 'within' range
- * expr = 'n' ('mod' value)?
- * value = digit+
- * digit = 0|1|2|3|4|5|6|7|8|9
- * range = value'..'value
- * </pre></p>
- * <p>
- * The difference between 'in' and 'within' is that 'in' only includes
- * integers in the specified range, while 'within' includes all values.</p>
- * <p>
- * Keywords
- * could be defined by users or from ICU locale data. There are 6
- * predefined values in ICU - 'zero', 'one', 'two', 'few', 'many' and
- * 'other'. Callers need to check the value of keyword returned by
- * {@link #select} method.
- * </p>
- *
- * Examples:<pre>
- * UnicodeString keyword = pl->select(number);
- * if (keyword== UnicodeString("one") {
- * ...
- * }
- * else if ( ... )
- * </pre>
- */
-class U_I18N_API PluralRules : public UObject {
-public:
-
- /**
- * Constructor.
- * @param status Output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- *
- * @draft ICU 4.0
- */
- PluralRules(UErrorCode& status);
-
- /**
- * Copy constructor.
- * @draft ICU 4.0
- */
- PluralRules(const PluralRules& other);
-
- /**
- * Destructor.
- * @draft ICU 4.0
- */
- virtual ~PluralRules();
-
- /**
- * Clone
- * @draft ICU 4.0
- */
- PluralRules* clone() const;
-
- /**
- * Assignment operator.
- * @draft ICU 4.0
- */
- PluralRules& operator=(const PluralRules&);
-
- /**
- * Creates a PluralRules from a description if it is parsable, otherwise
- * returns null.
- *
- * @param description rule description
- * @param status Output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return new PluralRules pointer. NULL if there is an error.
- * @draft ICU 4.0
- */
- static PluralRules* U_EXPORT2 createRules(const UnicodeString& description,
- UErrorCode& status);
-
- /**
- * The default rules that accept any number.
- *
- * @param status Output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return new PluralRules pointer. NULL if there is an error.
- * @draft ICU 4.0
- */
- static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status);
-
- /**
- * Provides access to the predefined <code>PluralRules</code> for a given
- * locale.
- *
- * @param locale The locale for which a <code>PluralRules</code> object is
- * returned.
- * @param status Output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return The predefined <code>PluralRules</code> object pointer for
- * this locale. If there's no predefined rules for this locale,
- * the rules for the closest parent in the locale hierarchy
- * that has one will be returned. The final fallback always
- * returns the default 'other' rules.
- * @draft ICU 4.0
- */
- static PluralRules* U_EXPORT2 forLocale(const Locale& locale, UErrorCode& status);
-
- /**
- * Given a number, returns the keyword of the first rule that applies to
- * the number. This function can be used with isKeyword* functions to
- * determine the keyword for default plural rules.
- *
- * @param number The number for which the rule has to be determined.
- * @return The keyword of the selected rule.
- * @draft ICU 4.0
- */
- UnicodeString select(int32_t number) const;
-
- /**
- * Given a number, returns the keyword of the first rule that applies to
- * the number. This function can be used with isKeyword* functions to
- * determine the keyword for default plural rules.
- *
- * @param number The number for which the rule has to be determined.
- * @return The keyword of the selected rule.
- * @draft ICU 4.0
- */
- UnicodeString select(double number) const;
-
- /**
- * Returns a list of all rule keywords used in this <code>PluralRules</code>
- * object. The rule 'other' is always present by default.
- *
- * @param status Output param set to success/failure code on exit, which
- * must not indicate a failure before the function call.
- * @return StringEnumeration with the keywords.
- * The caller must delete the object.
- * @draft ICU 4.0
- */
- StringEnumeration* getKeywords(UErrorCode& status) const;
-
- /**
- * Returns TRUE if the given keyword is defined in this
- * <code>PluralRules</code> object.
- *
- * @param keyword the input keyword.
- * @return TRUE if the input keyword is defined.
- * Otherwise, return FALSE.
- * @draft ICU 4.0
- */
- UBool isKeyword(const UnicodeString& keyword) const;
-
-
- /**
- * Returns keyword for default plural form.
- *
- * @return keyword for default plural form.
- * @internal 4.0
- * @draft ICU 4.0
- */
- UnicodeString getKeywordOther() const;
-
- /**
- * Compares the equality of two PluralRules objects.
- *
- * @param other The other PluralRules object to be compared with.
- * @return True if the given PluralRules is the same as this
- * PluralRules; false otherwise.
- * @draft ICU 4.0
- */
- virtual UBool operator==(const PluralRules& other) const;
-
- /**
- * Compares the inequality of two PluralRules objects.
- *
- * @param other The PluralRules object to be compared with.
- * @return True if the given PluralRules is not the same as this
- * PluralRules; false otherwise.
- * @draft ICU 4.0
- */
- UBool operator!=(const PluralRules& other) const {return !operator==(other);}
-
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for this class.
- *
- * @draft ICU 4.0
- *
- */
- static UClassID U_EXPORT2 getStaticClassID(void);
-
- /**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
- *
- * @draft ICU 4.0
- */
- virtual UClassID getDynamicClassID() const;
-
-
-private:
- Hashtable *fLocaleStringsHash;
- UnicodeString mLocaleName;
- RuleChain *mRules;
- RuleParser *mParser;
-
- PluralRules(); // default constructor not implemented
- int32_t getRepeatLimit() const;
- void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status);
- void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName);
- void addRules(RuleChain& rules);
- int32_t getNumberValue(const UnicodeString& token) const;
- UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status);
-
-};
-
-U_NAMESPACE_END
-
-#endif /* #if !UCONFIG_NO_FORMATTING */
-
-#endif // _PLURRULE
-//eof