ICU 4.6 4.6
plurrule.h
Go to the documentation of this file.
00001 /*
00002 *******************************************************************************
00003 * Copyright (C) 2008-2010, 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 
00110 class U_I18N_API PluralRules : public UObject {
00111 public:
00112 
00120     PluralRules(UErrorCode& status);
00121 
00126     PluralRules(const PluralRules& other);
00127 
00132     virtual ~PluralRules();
00133 
00138     PluralRules* clone() const;
00139 
00144     PluralRules& operator=(const PluralRules&);
00145 
00156     static PluralRules* U_EXPORT2 createRules(const UnicodeString& description,
00157                                               UErrorCode& status);
00158 
00167     static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status);
00168 
00184     static PluralRules* U_EXPORT2 forLocale(const Locale& locale, UErrorCode& status);
00185     
00195     UnicodeString select(int32_t number) const;
00196     
00206     UnicodeString select(double number) const;
00207 
00218     StringEnumeration* getKeywords(UErrorCode& status) const;
00219 
00229     UBool isKeyword(const UnicodeString& keyword) const;
00230 
00231 
00239     UnicodeString getKeywordOther() const;
00240 
00249     virtual UBool operator==(const PluralRules& other) const;
00250 
00259     UBool operator!=(const PluralRules& other) const  {return !operator==(other);}
00260 
00261 
00268     static UClassID U_EXPORT2 getStaticClassID(void);
00269 
00275     virtual UClassID getDynamicClassID() const;
00276 
00277 
00278 private:
00279     Hashtable       *fLocaleStringsHash;
00280     UnicodeString   mLocaleName;
00281     RuleChain       *mRules;
00282     RuleParser      *mParser;
00283 
00284     PluralRules();   // default constructor not implemented
00285     int32_t getRepeatLimit() const;
00286     void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status);
00287     void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName);
00288     void addRules(RuleChain& rules);
00289     int32_t getNumberValue(const UnicodeString& token) const;
00290     UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status);
00291 
00292 };
00293 
00294 U_NAMESPACE_END
00295 
00296 #endif /* #if !UCONFIG_NO_FORMATTING */
00297 
00298 #endif // _PLURRULE
00299 //eof
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines