16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org***************************************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2010-2012, International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org***************************************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/upluralrules.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/plurrule.h" 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/locid.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_USE 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI UPluralRules* U_EXPORT2 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguplrules_open(const char *locale, UErrorCode *status) 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return uplrules_openForType(locale, UPLURAL_TYPE_CARDINAL, status); 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI UPluralRules* U_EXPORT2 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguplrules_openForType(const char *locale, UPluralType type, UErrorCode *status) 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (UPluralRules*)PluralRules::forLocale(Locale(locale), type, *status); 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI void U_EXPORT2 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguplrules_close(UPluralRules *uplrules) 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete (PluralRules*)uplrules; 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_CAPI int32_t U_EXPORT2 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orguplrules_select(const UPluralRules *uplrules, 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org double number, 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar *keyword, int32_t capacity, 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode *status) 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_FAILURE(*status)) { 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (keyword == NULL ? capacity != 0 : capacity < 0) { 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org *status = U_ILLEGAL_ARGUMENT_ERROR; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString result = ((PluralRules*)uplrules)->select(number); 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return result.extract(keyword, capacity, *status); 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 57