diff --git a/icu4c/source/i18n/unicode/unum.h b/icu4c/source/i18n/unicode/unum.h index 734b11223aa..240578bb1be 100644 --- a/icu4c/source/i18n/unicode/unum.h +++ b/icu4c/source/i18n/unicode/unum.h @@ -493,7 +493,9 @@ enum UNumberFormatTextAttribute{ /** Negative suffix */ UNUM_NEGATIVE_SUFFIX, /** The character used to pad to the format width. */ - UNUM_PADDING_CHARACTER + UNUM_PADDING_CHARACTER, + /** The ISO currency code */ + UNUM_CURRENCY_CODE }; typedef enum UNumberFormatTextAttribute UNumberFormatTextAttribute; diff --git a/icu4c/source/i18n/unum.cpp b/icu4c/source/i18n/unum.cpp index cd25f48bdbc..04e29dad57a 100644 --- a/icu4c/source/i18n/unum.cpp +++ b/icu4c/source/i18n/unum.cpp @@ -540,6 +540,10 @@ unum_getTextAttribute(const UNumberFormat* fmt, *result = ((DecimalFormat*)fmt)->getPadCharacter(); return 1; + case UNUM_CURRENCY_CODE: + res = UnicodeString(((DecimalFormat*)fmt)->getCurrency(), ""); + break; + default: *status = U_UNSUPPORTED_ERROR; return -1; @@ -582,6 +586,13 @@ unum_setTextAttribute( UNumberFormat* fmt, ((DecimalFormat*)fmt)->setPadCharacter(*newValue); break; + case UNUM_CURRENCY_CODE: { + char currency[4]; + val.extract(0, 3, currency, ""); + currency[3] = 0; + ((DecimalFormat*)fmt)->setCurrency(currency); } + break; + default: *status = U_UNSUPPORTED_ERROR; break;