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