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
00050 enum UPluralType {
00055 UPLURAL_TYPE_CARDINAL,
00060 UPLURAL_TYPE_ORDINAL,
00061 #ifndef U_HIDE_DEPRECATED_API
00062
00066 UPLURAL_TYPE_COUNT
00067 #endif
00068 };
00072 typedef enum UPluralType UPluralType;
00073
00078 struct UPluralRules;
00079 typedef struct UPluralRules UPluralRules;
00090 U_CAPI UPluralRules* U_EXPORT2
00091 uplrules_open(const char *locale, UErrorCode *status);
00092
00102 U_CAPI UPluralRules* U_EXPORT2
00103 uplrules_openForType(const char *locale, UPluralType type, UErrorCode *status);
00104
00110 U_CAPI void U_EXPORT2
00111 uplrules_close(UPluralRules *uplrules);
00112
00113
00114 #if U_SHOW_CPLUSPLUS_API
00115
00116 U_NAMESPACE_BEGIN
00117
00127 U_DEFINE_LOCAL_OPEN_POINTER(LocalUPluralRulesPointer, UPluralRules, uplrules_close);
00128
00129 U_NAMESPACE_END
00130
00131 #endif
00132
00133
00145 U_CAPI int32_t U_EXPORT2
00146 uplrules_select(const UPluralRules *uplrules,
00147 double number,
00148 UChar *keyword, int32_t capacity,
00149 UErrorCode *status);
00150
00151 #ifndef U_HIDE_INTERNAL_API
00152
00169 U_INTERNAL int32_t U_EXPORT2
00170 uplrules_selectWithFormat(const UPluralRules *uplrules,
00171 double number,
00172 const UNumberFormat *fmt,
00173 UChar *keyword, int32_t capacity,
00174 UErrorCode *status);
00175
00176 #endif
00177
00178 #ifndef U_HIDE_DRAFT_API
00179
00189 U_DRAFT UEnumeration* U_EXPORT2
00190 uplrules_getKeywords(const UPluralRules *uplrules,
00191 UErrorCode *status);
00192 #endif
00193
00194 #endif
00195
00196 #endif