mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-20 20:19:32 +00:00
Add getUnitCategory.
This commit is contained in:
parent
9bcc4b698f
commit
9b51361358
2 changed files with 26 additions and 0 deletions
|
@ -108,6 +108,30 @@ class ConversionRateDataSink : public ResourceSink {
|
|||
|
||||
} // namespace
|
||||
|
||||
// TODO/FIXME: baseUnitIdentifier seems onerous? If this function could access
|
||||
// extractCompoundBaseUnit directly, we could support any input unit identifier.
|
||||
// Shall we move extractCompoundBaseUnit to unitsdata.cpp?
|
||||
CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status) {
|
||||
CharString result;
|
||||
LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
|
||||
LocalUResourceBundlePointer unitQuantities(
|
||||
ures_getByKey(unitsBundle.getAlias(), "unitQuantities", NULL, &status));
|
||||
int32_t categoryLength;
|
||||
if (U_FAILURE(status)) { return result; }
|
||||
const UChar *uCategory =
|
||||
ures_getStringByKey(unitQuantities.getAlias(), baseUnitIdentifier, &categoryLength, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
// TODO: manually dealing with consumption-inverse
|
||||
if (uprv_strcmp(baseUnitIdentifier, "meter-per-cubic-meter") == 0) {
|
||||
status = U_ZERO_ERROR;
|
||||
uCategory = ures_getStringByKey(unitQuantities.getAlias(), "cubic-meter-per-meter",
|
||||
&categoryLength, &status);
|
||||
}
|
||||
}
|
||||
result.appendInvariantChars(uCategory, categoryLength, status);
|
||||
return result;
|
||||
}
|
||||
|
||||
void U_I18N_API getAllConversionRates(MaybeStackVector<ConversionRateInfo> &result, UErrorCode &status) {
|
||||
LocalUResourceBundlePointer unitsBundle(ures_openDirect(NULL, "units", &status));
|
||||
ConversionRateDataSink sink(&result);
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
CharString U_I18N_API getUnitCategory(const char *baseUnitIdentifier, UErrorCode &status);
|
||||
|
||||
/**
|
||||
* Encapsulates "convertUnits" information from units resources, specifying how
|
||||
* to convert from one unit to another.
|
||||
|
|
Loading…
Add table
Reference in a new issue