Movatterモバイル変換


[0]ホーム

URL:


ICU 78.1  78.1
Namespaces |Typedefs |Enumerations |Functions
unumberrangeformatter.h File Reference

C API: Localized number range formatting.More...

#include "unicode/utypes.h"
#include "unicode/parseerr.h"
#include "unicode/ufieldpositer.h"
#include "unicode/umisc.h"
#include "unicode/uformattedvalue.h"
#include "unicode/uformattable.h"

Go to the source code of this file.

Namespaces

 icu
 Filecoll.h.
 

Typedefs

typedef enumUNumberRangeCollapse UNumberRangeCollapse
 Defines how to merge fields that are identical across the range sign.More...
 
typedef enumUNumberRangeIdentityFallback UNumberRangeIdentityFallback
 Defines the behavior when the two numbers in the range are identical after rounding.More...
 
typedef enumUNumberRangeIdentityResult UNumberRangeIdentityResult
 Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range were equal or not, and whether or not the identity fallback was applied.More...
 
typedef structUNumberRangeFormatter UNumberRangeFormatter
 C-compatible version oficu::number::LocalizedNumberRangeFormatter.More...
 
typedef structUFormattedNumberRange UFormattedNumberRange
 C-compatible version oficu::number::FormattedNumberRange.More...
 

Enumerations

enum  UNumberRangeCollapse {UNUM_RANGE_COLLAPSE_AUTO,UNUM_RANGE_COLLAPSE_NONE,UNUM_RANGE_COLLAPSE_UNIT,UNUM_RANGE_COLLAPSE_ALL }
 Defines how to merge fields that are identical across the range sign.More...
 
enum  UNumberRangeIdentityFallback {UNUM_IDENTITY_FALLBACK_SINGLE_VALUE,UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE,UNUM_IDENTITY_FALLBACK_APPROXIMATELY,UNUM_IDENTITY_FALLBACK_RANGE }
 Defines the behavior when the two numbers in the range are identical after rounding.More...
 
enum  UNumberRangeIdentityResult {UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING,UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING,UNUM_IDENTITY_RESULT_NOT_EQUAL,UNUM_IDENTITY_RESULT_COUNT }
 Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range were equal or not, and whether or not the identity fallback was applied.More...
 

Functions

U_CAPIUNumberRangeFormatterunumrf_openForSkeletonWithCollapseAndIdentityFallback (constUChar *skeleton, int32_t skeletonLen,UNumberRangeCollapse collapse,UNumberRangeIdentityFallback identityFallback, const char *locale,UParseError *perror,UErrorCode *ec)
 Creates a new UNumberFormatter for the given skeleton string, collapse option, identity fallback option, and locale.More...
 
U_CAPIUFormattedNumberRangeunumrf_openResult (UErrorCode *ec)
 Creates an object to hold the result of a UNumberRangeFormatter operation.More...
 
U_CAPI void unumrf_formatDoubleRange (constUNumberRangeFormatter *uformatter, double first, double second,UFormattedNumberRange *uresult,UErrorCode *ec)
 Uses a UNumberRangeFormatter to format a range of doubles.More...
 
U_CAPI void unumrf_formatDecimalRange (constUNumberRangeFormatter *uformatter, const char *first, int32_t firstLen, const char *second, int32_t secondLen,UFormattedNumberRange *uresult,UErrorCode *ec)
 Uses a UNumberRangeFormatter to format a range of decimal numbers.More...
 
U_CAPI constUFormattedValueunumrf_resultAsValue (constUFormattedNumberRange *uresult,UErrorCode *ec)
 Returns a representation of a UFormattedNumberRange as a UFormattedValue, which can be subsequently passed to any API requiring that type.More...
 
U_CAPIUNumberRangeIdentityResult unumrf_resultGetIdentityResult (constUFormattedNumberRange *uresult,UErrorCode *ec)
 Extracts the identity result from a UFormattedNumberRange.More...
 
U_CAPI int32_t unumrf_resultGetFirstDecimalNumber (constUFormattedNumberRange *uresult, char *dest, int32_t destCapacity,UErrorCode *ec)
 Extracts the first formatted number as a decimal number.More...
 
U_CAPI int32_t unumrf_resultGetSecondDecimalNumber (constUFormattedNumberRange *uresult, char *dest, int32_t destCapacity,UErrorCode *ec)
 Extracts the second formatted number as a decimal number.More...
 
U_CAPI void unumrf_close (UNumberRangeFormatter *uformatter)
 Releases the UNumberFormatter created byunumf_openForSkeletonAndLocale().More...
 
U_CAPI void unumrf_closeResult (UFormattedNumberRange *uresult)
 Releases the UFormattedNumber created byunumf_openResult().More...
 

Detailed Description

C API: Localized number range formatting.

This is the C-compatible version of the NumberRangeFormatter API. C++ users should includeunicode/numberrangeformatter.h and use the proper C++ APIs.

First create a UNumberRangeFormatter, which is immutable, and then format to a UFormattedNumberRange.

Example code:

// Setup:UErrorCode ec = U_ZERO_ERROR;UNumberRangeFormatter* uformatter = unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(    u"currency/USD precision-integer",    -1,    UNUM_RANGE_COLLAPSE_AUTO,    UNUM_IDENTITY_FALLBACK_APPROXIMATELY,    "en-US",    NULL,    &ec);UFormattedNumberRange* uresult = unumrf_openResult(&ec);if (U_FAILURE(ec)) { return; }// Format a double range:unumrf_formatDoubleRange(uformatter, 3.0, 5.0, uresult, &ec);if (U_FAILURE(ec)) { return; }// Get the result string:int32_t len;const UChar* str = ufmtval_getString(unumrf_resultAsValue(uresult, &ec), &len, &ec);if (U_FAILURE(ec)) { return; }// str should equal "$3 – $5"// Cleanup:unumf_close(uformatter);unumf_closeResult(uresult);

If you are a C++ user linking against the C libraries, you can use the LocalPointer versions of these APIs. The following example uses LocalPointer with the decimal number and field position APIs:

// Setup:LocalUNumberRangeFormatterPointer uformatter(    unumrf_openForSkeletonCollapseIdentityFallbackAndLocaleWithError(...));LocalUFormattedNumberRangePointer uresult(unumrf_openResult(&ec));if (U_FAILURE(ec)) { return; }// Format a double number range:unumrf_formatDoubleRange(uformatter.getAlias(), 3.0, 5.0, uresult.getAlias(), &ec);if (U_FAILURE(ec)) { return; }// No need to do any cleanup since we are using LocalPointer.

You can also get field positions. For more information, seeuformattedvalue.h.

Definition in fileunumberrangeformatter.h.

Typedef Documentation

◆ UFormattedNumberRange

typedef structUFormattedNumberRangeUFormattedNumberRange

C-compatible version oficu::number::FormattedNumberRange.

NOTE: This is a C-compatible API; C++ users should build againstnumberrangeformatter.h instead.

Stable:
ICU 68

Definition at line1 of fileunumberrangeformatter.h.

◆ UNumberRangeCollapse

typedef enumUNumberRangeCollapseUNumberRangeCollapse

Defines how to merge fields that are identical across the range sign.

Stable:
ICU 63

◆ UNumberRangeFormatter

typedef structUNumberRangeFormatterUNumberRangeFormatter

C-compatible version oficu::number::LocalizedNumberRangeFormatter.

NOTE: This is a C-compatible API; C++ users should build againstnumberrangeformatter.h instead.

Stable:
ICU 68

Definition at line1 of fileunumberrangeformatter.h.

◆ UNumberRangeIdentityFallback

typedef enumUNumberRangeIdentityFallbackUNumberRangeIdentityFallback

Defines the behavior when the two numbers in the range are identical after rounding.

To programmatically detect when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.

Stable:
ICU 63
See also
NumberRangeFormatter

◆ UNumberRangeIdentityResult

typedef enumUNumberRangeIdentityResultUNumberRangeIdentityResult

Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range were equal or not, and whether or not the identity fallback was applied.

Stable:
ICU 63
See also
NumberRangeFormatter

Enumeration Type Documentation

◆ UNumberRangeCollapse

enumUNumberRangeCollapse

Defines how to merge fields that are identical across the range sign.

Stable:
ICU 63
Enumerator
UNUM_RANGE_COLLAPSE_AUTO 

Use locale data and heuristics to determine how much of the string to collapse.

Could end up collapsing none, some, or all repeated pieces in a locale-sensitive way.

The heuristics used for this option are subject to change over time.

Stable:
ICU 63
UNUM_RANGE_COLLAPSE_NONE 

Do not collapse any part of the number.

Example: "3.2 thousand kilograms – 5.3 thousand kilograms"

Stable:
ICU 63
UNUM_RANGE_COLLAPSE_UNIT 

Collapse the unit part of the number, but not the notation, if present.

Example: "3.2 thousand – 5.3 thousandkilograms"

Stable:
ICU 63
UNUM_RANGE_COLLAPSE_ALL 

Collapse any field that is equal across the range sign.

May introduce ambiguity on the magnitude of the number. Example: "3.2 – 5.3 thousand kilograms"

Stable:
ICU 63

Definition at line83 of fileunumberrangeformatter.h.

◆ UNumberRangeIdentityFallback

enumUNumberRangeIdentityFallback

Defines the behavior when the two numbers in the range are identical after rounding.

To programmatically detect when the identity fallback is used, compare the lower and upper BigDecimals via FormattedNumber.

Stable:
ICU 63
See also
NumberRangeFormatter
Enumerator
UNUM_IDENTITY_FALLBACK_SINGLE_VALUE 

Show the number as a single value rather than a range.

Example: "$5"

Stable:
ICU 63
UNUM_IDENTITY_FALLBACK_APPROXIMATELY_OR_SINGLE_VALUE 

Show the number using a locale-sensitive approximation pattern.

If the numbers were the same before rounding, show the single value. Example: "~$5" or "$5"

Stable:
ICU 63
UNUM_IDENTITY_FALLBACK_APPROXIMATELY 

Show the number using a locale-sensitive approximation pattern.

Use the range pattern always, even if the inputs are the same. Example: "~$5"

Stable:
ICU 63
UNUM_IDENTITY_FALLBACK_RANGE 

Show the number as the range of two equal values.

Use the range pattern always, even if the inputs are the same. Example (with RangeCollapse.NONE): "$5 – $5"

Stable:
ICU 63

Definition at line125 of fileunumberrangeformatter.h.

◆ UNumberRangeIdentityResult

enumUNumberRangeIdentityResult

Used in the result class FormattedNumberRange to indicate to the user whether the numbers formatted in the range were equal or not, and whether or not the identity fallback was applied.

Stable:
ICU 63
See also
NumberRangeFormatter
Enumerator
UNUM_IDENTITY_RESULT_EQUAL_BEFORE_ROUNDING 

Used to indicate that the two numbers in the range were equal, even before any rounding rules were applied.

Stable:
ICU 63
See also
NumberRangeFormatter
UNUM_IDENTITY_RESULT_EQUAL_AFTER_ROUNDING 

Used to indicate that the two numbers in the range were equal, but only after rounding rules were applied.

Stable:
ICU 63
See also
NumberRangeFormatter
UNUM_IDENTITY_RESULT_NOT_EQUAL 

Used to indicate that the two numbers in the range were not equal, even after rounding rules were applied.

Stable:
ICU 63
See also
NumberRangeFormatter
UNUM_IDENTITY_RESULT_COUNT 

The number of entries in this enum.

Internal:
Do not use. This API is for internal use only.

Definition at line165 of fileunumberrangeformatter.h.

Function Documentation

◆ unumrf_close()

U_CAPI void unumrf_close(UNumberRangeFormatteruformatter)

Releases the UNumberFormatter created byunumf_openForSkeletonAndLocale().

Parameters
uformatterAn object created byunumf_openForSkeletonAndLocale().
Stable:
ICU 68

◆ unumrf_closeResult()

U_CAPI void unumrf_closeResult(UFormattedNumberRangeuresult)

Releases the UFormattedNumber created byunumf_openResult().

Parameters
uresultAn object created byunumf_openResult().
Stable:
ICU 68

◆ unumrf_formatDecimalRange()

U_CAPI void unumrf_formatDecimalRange(constUNumberRangeFormatteruformatter,
const char * first,
int32_t firstLen,
const char * second,
int32_t secondLen,
UFormattedNumberRangeuresult,
UErrorCodeec 
)

Uses a UNumberRangeFormatter to format a range of decimal numbers.

With a decimal number string, you can specify an input with arbitrary precision.

The UNumberRangeFormatter can be shared between threads. Each thread should have its own local UFormattedNumberRange, however, for storing the result of the formatting operation.

NOTE: This is a C-compatible API; C++ users should build againstnumberrangeformatter.h instead.

Parameters
uformatterA formatter object; seeunumberrangeformatter.h.
firstThe first (usually smaller) number in the range.
firstLenThe length of the first decimal number string.
secondThe second (usually larger) number in the range.
secondLenThe length of the second decimal number string.
uresultThe object that will be mutated to store the result; see unumrf_openResult.
ecSet if an error occurs.
Stable:
ICU 68

◆ unumrf_formatDoubleRange()

U_CAPI void unumrf_formatDoubleRange(constUNumberRangeFormatteruformatter,
double first,
double second,
UFormattedNumberRangeuresult,
UErrorCodeec 
)

Uses a UNumberRangeFormatter to format a range of doubles.

The UNumberRangeFormatter can be shared between threads. Each thread should have its own local UFormattedNumberRange, however, for storing the result of the formatting operation.

NOTE: This is a C-compatible API; C++ users should build againstnumberrangeformatter.h instead.

Parameters
uformatterA formatter object; seeunumberrangeformatter.h.
firstThe first (usually smaller) number in the range.
secondThe second (usually larger) number in the range.
uresultThe object that will be mutated to store the result; see unumrf_openResult.
ecSet if an error occurs.
Stable:
ICU 68

◆ unumrf_openForSkeletonWithCollapseAndIdentityFallback()

U_CAPIUNumberRangeFormatter* unumrf_openForSkeletonWithCollapseAndIdentityFallback(constUCharskeleton,
int32_t skeletonLen,
UNumberRangeCollapse collapse,
UNumberRangeIdentityFallback identityFallback,
const char * locale,
UParseErrorperror,
UErrorCodeec 
)

Creates a new UNumberFormatter for the given skeleton string, collapse option, identity fallback option, and locale.

This is currently the only method for creating a new UNumberRangeFormatter.

Objects of type UNumberRangeFormatter returned by this method are threadsafe.

For more details on skeleton strings, see the documentation innumberrangeformatter.h. For more details on the usage of this API, see the documentation at the top ofunumberrangeformatter.h.

NOTE: This is a C-compatible API; C++ users should build againstnumberrangeformatter.h instead.

Parameters
skeletonThe skeleton string, like u"percent precision-integer"
skeletonLenThe number of UChars in the skeleton string, or -1 if it is NUL-terminated.
collapseOption for how to merge affixes (if unsure, use UNUM_RANGE_COLLAPSE_AUTO)
identityFallbackOption for resolving when both sides of the range are equal.
localeThe NUL-terminated locale ID.
perrorA parse error struct populated if an error occurs when parsing. Can be NULL. If no error occurs, perror->offset will be set to -1.
ecSet if an error occurs.
Stable:
ICU 68

◆ unumrf_openResult()

U_CAPIUFormattedNumberRange* unumrf_openResult(UErrorCodeec)

Creates an object to hold the result of a UNumberRangeFormatter operation.

The object can be used repeatedly; it is cleared whenever passed to a format function.

Parameters
ecSet if an error occurs.
Stable:
ICU 68

◆ unumrf_resultAsValue()

U_CAPI constUFormattedValue* unumrf_resultAsValue(constUFormattedNumberRangeuresult,
UErrorCodeec 
)

Returns a representation of a UFormattedNumberRange as a UFormattedValue, which can be subsequently passed to any API requiring that type.

The returned object is owned by the UFormattedNumberRange and is valid only as long as the UFormattedNumber is present and unchanged in memory.

You can think of this method as a cast between types.

Parameters
uresultThe object containing the formatted number range.
ecSet if an error occurs.
Returns
A UFormattedValue owned by the input object.
Stable:
ICU 68

◆ unumrf_resultGetFirstDecimalNumber()

U_CAPI int32_t unumrf_resultGetFirstDecimalNumber(constUFormattedNumberRangeuresult,
char * dest,
int32_t destCapacity,
UErrorCodeec 
)

Extracts the first formatted number as a decimal number.

This endpoint is useful for obtaining the exact number being printed after scaling and rounding have been applied by the number range formatting pipeline.

The syntax of the unformatted number is a "numeric string" as defined in the Decimal Arithmetic Specification, available athttp://speleotrove.com/decimal

Parameters
uresultThe input object containing the formatted number range.
destthe 8-bit char buffer into which the decimal number is placed
destCapacityThe size, in chars, of the destination buffer. May be zero for precomputing the required size.
ecreceives any error status. If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for preflighting.
Returns
Number of chars in the data. Does not include a trailing NUL.
Stable:
ICU 68

◆ unumrf_resultGetIdentityResult()

U_CAPIUNumberRangeIdentityResult unumrf_resultGetIdentityResult(constUFormattedNumberRangeuresult,
UErrorCodeec 
)

Extracts the identity result from a UFormattedNumberRange.

NOTE: This is a C-compatible API; C++ users should build againstnumberformatter.h instead.

Parameters
uresultThe object containing the formatted number range.
ecSet if an error occurs.
Returns
The identity result; see UNumberRangeIdentityResult.
Stable:
ICU 68

◆ unumrf_resultGetSecondDecimalNumber()

U_CAPI int32_t unumrf_resultGetSecondDecimalNumber(constUFormattedNumberRangeuresult,
char * dest,
int32_t destCapacity,
UErrorCodeec 
)

Extracts the second formatted number as a decimal number.

This endpoint is useful for obtaining the exact number being printed after scaling and rounding have been applied by the number range formatting pipeline.

The syntax of the unformatted number is a "numeric string" as defined in the Decimal Arithmetic Specification, available athttp://speleotrove.com/decimal

Parameters
uresultThe input object containing the formatted number range.
destthe 8-bit char buffer into which the decimal number is placed
destCapacityThe size, in chars, of the destination buffer. May be zero for precomputing the required size.
ecreceives any error status. If U_BUFFER_OVERFLOW_ERROR: Returns number of chars for preflighting.
Returns
Number of chars in the data. Does not include a trailing NUL.
Stable:
ICU 68

Generated by doxygen 1.9.1
[8]ページ先頭

©2009-2025 Movatter.jp