plurrule.h

Go to the documentation of this file.
00001 /*
00002 *******************************************************************************
00003 * Copyright (C) 2008, International Business Machines Corporation and
00004 * others. All Rights Reserved.
00005 *******************************************************************************
00006 *
00007 *
00008 * File PLURRULE.H
00009 *
00010 * Modification History:*
00011 *   Date        Name        Description
00012 *
00013 ********************************************************************************
00014 */
00015 
00016 #ifndef PLURRULE
00017 #define PLURRULE
00018 
00019 #include "unicode/utypes.h"
00020 
00026 #if !UCONFIG_NO_FORMATTING
00027 
00028 #include "unicode/format.h"
00029 
00030 U_NAMESPACE_BEGIN
00031 
00032 class Hashtable;
00033 class RuleChain;
00034 class RuleParser;
00035 
00102 class U_I18N_API PluralRules : public UObject {
00103 public:
00104 
00112     PluralRules(UErrorCode& status);
00113 
00118     PluralRules(const PluralRules& other);
00119 
00124     virtual ~PluralRules();
00125 
00130     PluralRules* clone() const;
00131 
00136     PluralRules& operator=(const PluralRules&);
00137 
00148     static PluralRules* U_EXPORT2 createRules(const UnicodeString& description,
00149                                               UErrorCode& status);
00150 
00159     static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status);
00160 
00176     static PluralRules* U_EXPORT2 forLocale(const Locale& locale, UErrorCode& status);
00177     
00187     UnicodeString select(int32_t number) const;
00188     
00198     UnicodeString select(double number) const;
00199 
00210     StringEnumeration* getKeywords(UErrorCode& status) const;
00211 
00221     UBool isKeyword(const UnicodeString& keyword) const;
00222 
00223 
00231     UnicodeString getKeywordOther() const;
00232 
00241     virtual UBool operator==(const PluralRules& other) const;
00242 
00251     UBool operator!=(const PluralRules& other) const  {return !operator==(other);}
00252 
00253 
00260     static UClassID U_EXPORT2 getStaticClassID(void);
00261 
00267     virtual UClassID getDynamicClassID() const;
00268 
00269 
00270 private:
00271     Hashtable       *fLocaleStringsHash;
00272     UnicodeString   mLocaleName;
00273     RuleChain       *mRules;
00274     RuleParser      *mParser;
00275 
00276     PluralRules();   // default constructor not implemented
00277     int32_t getRepeatLimit() const;
00278     void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status);
00279     void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName);
00280     void addRules(RuleChain& rules);
00281     int32_t getNumberValue(const UnicodeString& token) const;
00282     UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status);
00283 
00284 };
00285 
00286 U_NAMESPACE_END
00287 
00288 #endif /* #if !UCONFIG_NO_FORMATTING */
00289 
00290 #endif // _PLURRULE
00291 //eof

Generated on Sun Aug 22 15:43:58 2010 for ICU 4.0.1 by  doxygen 1.3.9.1