00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef UPLURALRULES_H
00011 #define UPLURALRULES_H
00012
00013 #include "unicode/utypes.h"
00014
00015 #if !UCONFIG_NO_FORMATTING
00016
00017 #include "unicode/localpointer.h"
00018 #include "unicode/uenum.h"
00019 #ifndef U_HIDE_INTERNAL_API
00020 #include "unicode/unum.h"
00021 #endif
00022
00023
00024 struct UFormattedNumber;
00025
00053 enum UPluralType {
00058 UPLURAL_TYPE_CARDINAL,
00063 UPLURAL_TYPE_ORDINAL,
00064 #ifndef U_HIDE_DEPRECATED_API
00065
00069 UPLURAL_TYPE_COUNT
00070 #endif
00071 };
00075 typedef enum UPluralType UPluralType;
00076
00081 struct UPluralRules;
00082 typedef struct UPluralRules UPluralRules;
00093 U_CAPI UPluralRules* U_EXPORT2
00094 uplrules_open(const char *locale, UErrorCode *status);
00095
00105 U_CAPI UPluralRules* U_EXPORT2
00106 uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
00107
00113 U_CAPI void U_EXPORT2
00114 uplrules_close(UPluralRules *uplrules);
00115
00116
00117 #if U_SHOW_CPLUSPLUS_API
00118
00119 U_NAMESPACE_BEGIN
00120
00130 U_DEFINE_LOCAL_OPEN_POINTER(LocalUPluralRulesPointer, UPluralRules, uplrules_close);
00131
00132 U_NAMESPACE_END
00133
00134 #endif
00135
00136
00149 U_CAPI int32_t U_EXPORT2
00150 uplrules_select(const UPluralRules *uplrules,
00151 double number,
00152 UChar *keyword, int32_t capacity,
00153 UErrorCode *status);
00154
00172 U_CAPI int32_t U_EXPORT2
00173 uplrules_selectFormatted(const UPluralRules *uplrules,
00174 const struct UFormattedNumber* number,
00175 UChar *keyword, int32_t capacity,
00176 UErrorCode *status);
00177
00178 #ifndef U_HIDE_INTERNAL_API
00179
00197 U_INTERNAL int32_t U_EXPORT2
00198 uplrules_selectWithFormat(const UPluralRules *uplrules,
00199 double number,
00200 const UNumberFormat *fmt,
00201 UChar *keyword, int32_t capacity,
00202 UErrorCode *status);
00203
00204 #endif
00205
00216 U_STABLE UEnumeration* U_EXPORT2
00217 uplrules_getKeywords(const UPluralRules *uplrules,
00218 UErrorCode *status);
00219
00220 #endif
00221
00222 #endif