Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef PLURFMT
00017 #define PLURFMT
00018
00019 #include "unicode/utypes.h"
00020
00026 #if !UCONFIG_NO_FORMATTING
00027
00028 #include "unicode/numfmt.h"
00029 #include "unicode/plurrule.h"
00030
00031 U_NAMESPACE_BEGIN
00032
00033 class Hashtable;
00034
00179 class U_I18N_API PluralFormat : public Format {
00180 public:
00181
00190 PluralFormat(UErrorCode& status);
00191
00201 PluralFormat(const Locale& locale, UErrorCode& status);
00202
00212 PluralFormat(const PluralRules& rules, UErrorCode& status);
00213
00225 PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
00226
00237 PluralFormat(const UnicodeString& pattern, UErrorCode& status);
00238
00253 PluralFormat(const Locale& locale, const UnicodeString& pattern, UErrorCode& status);
00254
00266 PluralFormat(const PluralRules& rules,
00267 const UnicodeString& pattern,
00268 UErrorCode& status);
00269
00284 PluralFormat(const Locale& locale,
00285 const PluralRules& rules,
00286 const UnicodeString& pattern,
00287 UErrorCode& status);
00288
00293 PluralFormat(const PluralFormat& other);
00294
00299 virtual ~PluralFormat();
00300
00313 void applyPattern(const UnicodeString& pattern, UErrorCode& status);
00314
00315
00316 using Format::format;
00317
00330 UnicodeString format(int32_t number, UErrorCode& status) const;
00331
00344 UnicodeString format(double number, UErrorCode& status) const;
00345
00362 UnicodeString& format(int32_t number,
00363 UnicodeString& appendTo,
00364 FieldPosition& pos,
00365 UErrorCode& status) const;
00366
00383 UnicodeString& format(double number,
00384 UnicodeString& appendTo,
00385 FieldPosition& pos,
00386 UErrorCode& status) const;
00387
00400 void setLocale(const Locale& locale, UErrorCode& status);
00401
00411 void setNumberFormat(const NumberFormat* format, UErrorCode& status);
00412
00419 PluralFormat& operator=(const PluralFormat& other);
00420
00428 virtual UBool operator==(const Format& other) const;
00429
00437 virtual UBool operator!=(const Format& other) const;
00438
00444 virtual Format* clone(void) const;
00445
00458 UnicodeString& format(const Formattable& obj,
00459 UnicodeString& appendTo,
00460 FieldPosition& pos,
00461 UErrorCode& status) const;
00462
00471 UnicodeString& toPattern(UnicodeString& appendTo);
00472
00495 virtual void parseObject(const UnicodeString& source,
00496 Formattable& result,
00497 ParsePosition& parse_pos) const;
00498
00505 static UClassID U_EXPORT2 getStaticClassID(void);
00506
00512 virtual UClassID getDynamicClassID() const;
00513
00514 private:
00515 typedef enum fmtToken {
00516 none,
00517 tLetter,
00518 tNumber,
00519 tSpace,
00520 tNumberSign,
00521 tLeftBrace,
00522 tRightBrace
00523 }fmtToken;
00524
00525 Locale locale;
00526 PluralRules* pluralRules;
00527 UnicodeString pattern;
00528 Hashtable *fParsedValuesHash;
00529 NumberFormat* numberFormat;
00530 NumberFormat* replacedNumberFormat;
00531
00532 PluralFormat();
00533 void init(const PluralRules* rules, const Locale& curlocale, UErrorCode& status);
00534 UBool inRange(UChar ch, fmtToken& type);
00535 UBool checkSufficientDefinition();
00536 void parsingFailure();
00537 UnicodeString insertFormattedNumber(double number,
00538 UnicodeString& message,
00539 UnicodeString& appendTo,
00540 FieldPosition& pos) const;
00541 void copyHashtable(Hashtable *other, UErrorCode& status);
00542 };
00543
00544 U_NAMESPACE_END
00545
00546 #endif
00547
00548 #endif // _PLURFMT
00549