summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-src/source/i18n/number_output.cpp')
-rw-r--r--Build/source/libs/icu/icu-src/source/i18n/number_output.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp b/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp
index 2c2c25eaedb..78006da8c42 100644
--- a/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp
+++ b/Build/source/libs/icu/icu-src/source/i18n/number_output.cpp
@@ -39,6 +39,49 @@ MeasureUnit FormattedNumber::getOutputUnit(UErrorCode& status) const {
return fData->outputUnit;
}
+NounClass FormattedNumber::getNounClass(UErrorCode &status) const {
+ UPRV_FORMATTED_VALUE_METHOD_GUARD(NounClass::OTHER);
+ const char *nounClass = fData->gender;
+
+ // if it is not exist, return `OTHER`
+ if (uprv_strcmp(nounClass, "") == 0) {
+ return NounClass::OTHER;
+ }
+
+ if (uprv_strcmp(nounClass, "neuter") == 0) {
+ return NounClass::NEUTER;
+ }
+
+ if (uprv_strcmp(nounClass, "feminine") == 0) {
+ return NounClass::FEMININE;
+ }
+
+ if (uprv_strcmp(nounClass, "masculine") == 0) {
+ return NounClass::MASCULINE;
+ }
+
+ if (uprv_strcmp(nounClass, "animate") == 0) {
+ return NounClass::ANIMATE;
+ }
+
+ if (uprv_strcmp(nounClass, "inanimate") == 0) {
+ return NounClass::INANIMATE;
+ }
+
+ if (uprv_strcmp(nounClass, "personal") == 0) {
+ return NounClass::PERSONAL;
+ }
+
+ if (uprv_strcmp(nounClass, "common") == 0) {
+ return NounClass::COMMON;
+ }
+
+ // In case there is no matching, this means there are noun classes
+ // that are not supported yet.
+ status = U_INTERNAL_PROGRAM_ERROR;
+ return NounClass::OTHER;
+}
+
const char *FormattedNumber::getGender(UErrorCode &status) const {
UPRV_FORMATTED_VALUE_METHOD_GUARD("")
return fData->gender;