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 &lt;= 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 &lt;= 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