CompactDecimalFormat* U_EXPORT2 CompactDecimalFormat::createInstance( const Locale& inLocale, UNumberCompactStyle style, UErrorCode& status) { LocalPointer<DecimalFormat> decfmt((DecimalFormat*) NumberFormat::makeInstance(inLocale, UNUM_DECIMAL, TRUE, status)); if (U_FAILURE(status)) { return NULL; } LocalPointer<PluralRules> pluralRules(PluralRules::forLocale(inLocale, status)); if (U_FAILURE(status)) { return NULL; } const CDFLocaleStyleData* data = getCDFLocaleStyleData(inLocale, style, status); if (U_FAILURE(status)) { return NULL; } CompactDecimalFormat* result = new CompactDecimalFormat(*decfmt, data->unitsByVariant, data->divisors, pluralRules.getAlias()); if (result == NULL) { status = U_MEMORY_ALLOCATION_ERROR; return NULL; } pluralRules.orphan(); result->setMaximumSignificantDigits(3); result->setSignificantDigitsUsed(TRUE); result->setGroupingUsed(FALSE); return result; }
CompactDecimalFormat* CompactDecimalFormatTest::createCDFInstance(const Locale& locale, UNumberCompactStyle style, UErrorCode& status) { CompactDecimalFormat* result = CompactDecimalFormat::createInstance(locale, style, status); if (U_FAILURE(status)) { return NULL; } // All tests are written for two significant digits, so we explicitly set here // in case default significant digits change. result->setMaximumSignificantDigits(2); return result; }