| Index: source/i18n/quantityformatter.cpp
|
| diff --git a/source/i18n/quantityformatter.cpp b/source/i18n/quantityformatter.cpp
|
| index bef509a718691f08cbd628bb98ba4fb313f8fdbf..ed80b38b500d1465db2ec2388bbba08ad9ee1fb6 100644
|
| --- a/source/i18n/quantityformatter.cpp
|
| +++ b/source/i18n/quantityformatter.cpp
|
| @@ -1,6 +1,6 @@
|
| /*
|
| ******************************************************************************
|
| -* Copyright (C) 2014, International Business Machines
|
| +* Copyright (C) 2014-2015, International Business Machines
|
| * Corporation and others. All Rights Reserved.
|
| ******************************************************************************
|
| * quantityformatter.cpp
|
| @@ -11,11 +11,11 @@
|
| #include "unicode/unistr.h"
|
| #include "unicode/decimfmt.h"
|
| #include "cstring.h"
|
| -#include "plurrule_impl.h"
|
| #include "unicode/plurrule.h"
|
| #include "charstr.h"
|
| #include "unicode/fmtable.h"
|
| #include "unicode/fieldpos.h"
|
| +#include "visibledigits.h"
|
|
|
| #if !UCONFIG_NO_FORMATTING
|
|
|
| @@ -136,13 +136,14 @@ UnicodeString &QuantityFormatter::format(
|
| return appendTo;
|
| }
|
| UnicodeString count;
|
| + VisibleDigitsWithExponent digits;
|
| const DecimalFormat *decFmt = dynamic_cast<const DecimalFormat *>(&fmt);
|
| if (decFmt != NULL) {
|
| - FixedDecimal fd = decFmt->getFixedDecimal(quantity, status);
|
| + decFmt->initVisibleDigitsWithExponent(quantity, digits, status);
|
| if (U_FAILURE(status)) {
|
| return appendTo;
|
| }
|
| - count = rules.select(fd);
|
| + count = rules.select(digits);
|
| } else {
|
| if (quantity.getType() == Formattable::kDouble) {
|
| count = rules.select(quantity.getDouble());
|
| @@ -167,10 +168,20 @@ UnicodeString &QuantityFormatter::format(
|
| }
|
| UnicodeString formattedNumber;
|
| FieldPosition fpos(pos.getField());
|
| - fmt.format(quantity, formattedNumber, fpos, status);
|
| + if (decFmt != NULL) {
|
| + decFmt->format(digits, formattedNumber, fpos, status);
|
| + } else {
|
| + fmt.format(quantity, formattedNumber, fpos, status);
|
| + }
|
| const UnicodeString *params[1] = {&formattedNumber};
|
| int32_t offsets[1];
|
| - pattern->format(params, UPRV_LENGTHOF(params), appendTo, offsets, UPRV_LENGTHOF(offsets), status);
|
| + pattern->formatAndAppend(
|
| + params,
|
| + UPRV_LENGTHOF(params),
|
| + appendTo,
|
| + offsets,
|
| + UPRV_LENGTHOF(offsets),
|
| + status);
|
| if (offsets[0] != -1) {
|
| if (fpos.getBeginIndex() != 0 || fpos.getEndIndex() != 0) {
|
| pos.setBeginIndex(fpos.getBeginIndex() + offsets[0]);
|
|
|