164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others.
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html
3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/*
4b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*****************************************************************************************
554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius* Copyright (C) 2010-2012, International Business Machines
6b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Corporation and others. All Rights Reserved.
7b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*****************************************************************************************
8b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*/
9b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
10b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/utypes.h"
11b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
12b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#if !UCONFIG_NO_FORMATTING
13b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
14b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/upluralrules.h"
15b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/plurrule.h"
16b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/locid.h"
17b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/unistr.h"
18b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
19b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_NAMESPACE_USE
20b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
21b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
22b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_CAPI UPluralRules* U_EXPORT2
2354dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusuplrules_open(const char *locale, UErrorCode *status)
24b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{
2554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    return uplrules_openForType(locale, UPLURAL_TYPE_CARDINAL, status);
2654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius}
2754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
2854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UPluralRules* U_EXPORT2
2954dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusuplrules_openForType(const char *locale, UPluralType type, UErrorCode *status)
3054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius{
3154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    return (UPluralRules*)PluralRules::forLocale(Locale(locale), type, *status);
32b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}
33b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
34b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_CAPI void U_EXPORT2
35b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehouplrules_close(UPluralRules *uplrules)
36b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{
37b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    delete (PluralRules*)uplrules;
38b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}
39b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
40b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_CAPI int32_t U_EXPORT2
41b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehouplrules_select(const UPluralRules *uplrules,
42b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho                double number,
43b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho                UChar *keyword, int32_t capacity,
44b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho                UErrorCode *status)
45b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{
46b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    if (U_FAILURE(*status)) {
47b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        return 0;
48b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    }
49b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    if (keyword == NULL ? capacity != 0 : capacity < 0) {
50b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        *status = U_ILLEGAL_ARGUMENT_ERROR;
51b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho        return 0;
52b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    }
53b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    UnicodeString result = ((PluralRules*)uplrules)->select(number);
54b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho    return result.extract(keyword, capacity, *status);
55b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}
56b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
57b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho
58b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#endif /* #if !UCONFIG_NO_FORMATTING */
59