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
00155 #ifndef U_HIDE_DRAFT_API
00156
00173 U_CAPI int32_t U_EXPORT2
00174 uplrules_selectFormatted(const UPluralRules *uplrules,
00175 const struct UFormattedNumber* number,
00176 UChar *keyword, int32_t capacity,
00177 UErrorCode *status);
00178 #endif
00179
00180 #ifndef U_HIDE_INTERNAL_API
00181
00199 U_INTERNAL int32_t U_EXPORT2
00200 uplrules_selectWithFormat(const UPluralRules *uplrules,
00201 double number,
00202 const UNumberFormat *fmt,
00203 UChar *keyword, int32_t capacity,
00204 UErrorCode *status);
00205
00206 #endif
00207
00218 U_STABLE UEnumeration* U_EXPORT2
00219 uplrules_getKeywords(const UPluralRules *uplrules,
00220 UErrorCode *status);
00221
00222 #endif
00223
00224 #endif