ICU 4.6  4.6
plurfmt.h
Go to the documentation of this file.
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
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines