ICU 4.6 4.6
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 2007-2010, International Business Machines Corporation and 00004 * others. All Rights Reserved. 00005 ******************************************************************************* 00006 * 00007 00008 * File PLURFMT.H 00009 * 00010 * Modification History:* 00011 * Date Name Description 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(); // default constructor not implemented 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 /* #if !UCONFIG_NO_FORMATTING */ 00547 00548 #endif // _PLURFMT 00549 //eof