Index: source/common/pluralmap.cpp |
diff --git a/source/common/pluralmap.cpp b/source/common/pluralmap.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f114b8a1f55c535561f8d3c7505b3b2e9c72cc42 |
--- /dev/null |
+++ b/source/common/pluralmap.cpp |
@@ -0,0 +1,42 @@ |
+/* |
+ * Copyright (C) 2015, International Business Machines Corporation and |
+ * others. All Rights Reserved. |
+ */ |
+ |
+#include "unicode/unistr.h" |
+#include "charstr.h" |
+#include "cstring.h" |
+#include "pluralmap.h" |
+ |
+U_NAMESPACE_BEGIN |
+ |
+static const char * const gPluralForms[] = { |
+ "other", "zero", "one", "two", "few", "many"}; |
+ |
+PluralMapBase::Category |
+PluralMapBase::toCategory(const char *pluralForm) { |
+ for (int32_t i = 0; i < UPRV_LENGTHOF(gPluralForms); ++i) { |
+ if (uprv_strcmp(pluralForm, gPluralForms[i]) == 0) { |
+ return static_cast<Category>(i); |
+ } |
+ } |
+ return NONE; |
+} |
+ |
+PluralMapBase::Category |
+PluralMapBase::toCategory(const UnicodeString &pluralForm) { |
+ CharString cCategory; |
+ UErrorCode status = U_ZERO_ERROR; |
+ cCategory.appendInvariantChars(pluralForm, status); |
+ return U_FAILURE(status) ? NONE : toCategory(cCategory.data()); |
+} |
+ |
+const char *PluralMapBase::getCategoryName(Category c) { |
+ int32_t index = c; |
+ return (index < 0 || index >= UPRV_LENGTHOF(gPluralForms)) ? |
+ NULL : gPluralForms[index]; |
+} |
+ |
+ |
+U_NAMESPACE_END |
+ |