| 1 | // © 2016 and later: Unicode, Inc. and others. | 
|---|---|
| 2 | // License & terms of use: http://www.unicode.org/copyright.html | 
| 3 | /* | 
| 4 | * Copyright (C) 2015, International Business Machines Corporation and | 
| 5 | * others. All Rights Reserved. | 
| 6 | */ | 
| 7 | |
| 8 | #include "unicode/unistr.h" | 
| 9 | #include "charstr.h" | 
| 10 | #include "cstring.h" | 
| 11 | #include "pluralmap.h" | 
| 12 | |
| 13 | U_NAMESPACE_BEGIN | 
| 14 | |
| 15 | static const char * const gPluralForms[] = { | 
| 16 | "other", "zero", "one", "two", "few", "many"}; | 
| 17 | |
| 18 | PluralMapBase::Category | 
| 19 | PluralMapBase::toCategory(const char *pluralForm) { | 
| 20 | for (int32_t i = 0; i < UPRV_LENGTHOF(gPluralForms); ++i) { | 
| 21 | if (uprv_strcmp(pluralForm, gPluralForms[i]) == 0) { | 
| 22 | return static_cast<Category>(i); | 
| 23 | } | 
| 24 | } | 
| 25 | return NONE; | 
| 26 | } | 
| 27 | |
| 28 | PluralMapBase::Category | 
| 29 | PluralMapBase::toCategory(const UnicodeString &pluralForm) { | 
| 30 | CharString cCategory; | 
| 31 | UErrorCode status = U_ZERO_ERROR; | 
| 32 | cCategory.appendInvariantChars(pluralForm, status); | 
| 33 | return U_FAILURE(status) ? NONE : toCategory(cCategory.data()); | 
| 34 | } | 
| 35 | |
| 36 | const char *PluralMapBase::getCategoryName(Category c) { | 
| 37 | int32_t index = c; | 
| 38 | return (index < 0 || index >= UPRV_LENGTHOF(gPluralForms)) ? | 
| 39 | nullptr : gPluralForms[index]; | 
| 40 | } | 
| 41 | |
| 42 | |
| 43 | U_NAMESPACE_END | 
| 44 | |
| 45 | 
