tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

pluralmap.cpp (1209B)


      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