tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

unumberoptions.h (5360B)


      1 // © 2017 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 
      4 #ifndef __UNUMBEROPTIONS_H__
      5 #define __UNUMBEROPTIONS_H__
      6 
      7 #include "unicode/utypes.h"
      8 
      9 #if !UCONFIG_NO_FORMATTING
     10 
     11 /**
     12 * \file
     13 * \brief C API: Header-only input options for various number formatting APIs.
     14 *
     15 * You do not normally need to include this header file directly, because it is included in all
     16 * files that use these enums.
     17 */
     18 
     19 
     20 /** The possible number format rounding modes.
     21 *
     22 * <p>
     23 * For more detail on rounding modes, see:
     24 * https://unicode-org.github.io/icu/userguide/format_parse/numbers/rounding-modes
     25 *
     26 * @stable ICU 2.0
     27 */
     28 typedef enum UNumberFormatRoundingMode {
     29    UNUM_ROUND_CEILING,
     30    UNUM_ROUND_FLOOR,
     31    UNUM_ROUND_DOWN,
     32    UNUM_ROUND_UP,
     33    /**
     34     * Half-even rounding
     35     * @stable, ICU 3.8
     36     */
     37    UNUM_ROUND_HALFEVEN,
     38 #ifndef U_HIDE_DEPRECATED_API
     39    /**
     40     * Half-even rounding, misspelled name
     41     * @deprecated, ICU 3.8
     42     */
     43    UNUM_FOUND_HALFEVEN = UNUM_ROUND_HALFEVEN,
     44 #endif  /* U_HIDE_DEPRECATED_API */
     45    UNUM_ROUND_HALFDOWN = UNUM_ROUND_HALFEVEN + 1,
     46    UNUM_ROUND_HALFUP,
     47    /** 
     48      * ROUND_UNNECESSARY reports an error if formatted result is not exact.
     49      * @stable ICU 4.8
     50      */
     51    UNUM_ROUND_UNNECESSARY,
     52    /**
     53     * Rounds ties toward the odd number.
     54     * @stable ICU 69
     55     */
     56    UNUM_ROUND_HALF_ODD,
     57    /**
     58     * Rounds ties toward +∞.
     59     * @stable ICU 69
     60     */
     61    UNUM_ROUND_HALF_CEILING,
     62    /**
     63     * Rounds ties toward -∞.
     64     * @stable ICU 69
     65     */
     66    UNUM_ROUND_HALF_FLOOR,
     67 } UNumberFormatRoundingMode;
     68 
     69 
     70 /**
     71 * An enum declaring the strategy for when and how to display grouping separators (i.e., the
     72 * separator, often a comma or period, after every 2-3 powers of ten). The choices are several
     73 * pre-built strategies for different use cases that employ locale data whenever possible. Example
     74 * outputs for 1234 and 1234567 in <em>en-IN</em>:
     75 *
     76 * <ul>
     77 * <li>OFF: 1234 and 12345
     78 * <li>MIN2: 1234 and 12,34,567
     79 * <li>AUTO: 1,234 and 12,34,567
     80 * <li>ON_ALIGNED: 1,234 and 12,34,567
     81 * <li>THOUSANDS: 1,234 and 1,234,567
     82 * </ul>
     83 *
     84 * <p>
     85 * The default is AUTO, which displays grouping separators unless the locale data says that grouping
     86 * is not customary. To force grouping for all numbers greater than 1000 consistently across locales,
     87 * use ON_ALIGNED. On the other hand, to display grouping less frequently than the default, use MIN2
     88 * or OFF. See the docs of each option for details.
     89 *
     90 * <p>
     91 * Note: This enum specifies the strategy for grouping sizes. To set which character to use as the
     92 * grouping separator, use the "symbols" setter.
     93 *
     94 * @stable ICU 63
     95 */
     96 typedef enum UNumberGroupingStrategy {
     97    /**
     98     * Do not display grouping separators in any locale.
     99     *
    100     * @stable ICU 61
    101     */
    102            UNUM_GROUPING_OFF,
    103 
    104    /**
    105     * Display grouping using locale defaults, except do not show grouping on values smaller than
    106     * 10000 (such that there is a <em>minimum of two digits</em> before the first separator).
    107     *
    108     * <p>
    109     * Note that locales may restrict grouping separators to be displayed only on 1 million or
    110     * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
    111     *
    112     * <p>
    113     * Locale data is used to determine whether to separate larger numbers into groups of 2
    114     * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
    115     *
    116     * @stable ICU 61
    117     */
    118            UNUM_GROUPING_MIN2,
    119 
    120    /**
    121     * Display grouping using the default strategy for all locales. This is the default behavior.
    122     *
    123     * <p>
    124     * Note that locales may restrict grouping separators to be displayed only on 1 million or
    125     * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency).
    126     *
    127     * <p>
    128     * Locale data is used to determine whether to separate larger numbers into groups of 2
    129     * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
    130     *
    131     * @stable ICU 61
    132     */
    133            UNUM_GROUPING_AUTO,
    134 
    135    /**
    136     * Always display the grouping separator on values of at least 1000.
    137     *
    138     * <p>
    139     * This option ignores the locale data that restricts or disables grouping, described in MIN2 and
    140     * AUTO. This option may be useful to normalize the alignment of numbers, such as in a
    141     * spreadsheet.
    142     *
    143     * <p>
    144     * Locale data is used to determine whether to separate larger numbers into groups of 2
    145     * (customary in South Asia) or groups of 3 (customary in Europe and the Americas).
    146     *
    147     * @stable ICU 61
    148     */
    149            UNUM_GROUPING_ON_ALIGNED,
    150 
    151    /**
    152     * Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use
    153     * locale data for determining the grouping strategy.
    154     *
    155     * @stable ICU 61
    156     */
    157            UNUM_GROUPING_THOUSANDS
    158 
    159 #ifndef U_HIDE_INTERNAL_API
    160    ,
    161    /**
    162     * One more than the highest UNumberGroupingStrategy value.
    163     *
    164     * @internal ICU 62: The numeric value may change over time; see ICU ticket #12420.
    165     */
    166            UNUM_GROUPING_COUNT
    167 #endif  /* U_HIDE_INTERNAL_API */
    168 
    169 } UNumberGroupingStrategy;
    170 
    171 
    172 #endif /* #if !UCONFIG_NO_FORMATTING */
    173 #endif //__UNUMBEROPTIONS_H__