ICU 49.1.1
49.1.1
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 2008-2012, 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 00035 #define UPLRULES_NO_UNIQUE_VALUE ((double)-0.00123456777) 00036 00037 U_NAMESPACE_BEGIN 00038 00039 class Hashtable; 00040 class RuleChain; 00041 class RuleParser; 00042 class PluralKeywordEnumeration; 00043 00126 class U_I18N_API PluralRules : public UObject { 00127 public: 00128 00136 PluralRules(UErrorCode& status); 00137 00142 PluralRules(const PluralRules& other); 00143 00148 virtual ~PluralRules(); 00149 00154 PluralRules* clone() const; 00155 00160 PluralRules& operator=(const PluralRules&); 00161 00172 static PluralRules* U_EXPORT2 createRules(const UnicodeString& description, 00173 UErrorCode& status); 00174 00183 static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status); 00184 00200 static PluralRules* U_EXPORT2 forLocale(const Locale& locale, UErrorCode& status); 00201 00211 UnicodeString select(int32_t number) const; 00212 00222 UnicodeString select(double number) const; 00223 00234 StringEnumeration* getKeywords(UErrorCode& status) const; 00235 00246 double getUniqueKeywordValue(const UnicodeString& keyword); 00247 00266 int32_t getAllKeywordValues(const UnicodeString &keyword, 00267 double *dest, int32_t destCapacity, 00268 UErrorCode& status); 00269 00288 int32_t getSamples(const UnicodeString &keyword, 00289 double *dest, int32_t destCapacity, 00290 UErrorCode& status); 00291 00301 UBool isKeyword(const UnicodeString& keyword) const; 00302 00303 00310 UnicodeString getKeywordOther() const; 00311 00320 virtual UBool operator==(const PluralRules& other) const; 00321 00330 UBool operator!=(const PluralRules& other) const {return !operator==(other);} 00331 00332 00339 static UClassID U_EXPORT2 getStaticClassID(void); 00340 00346 virtual UClassID getDynamicClassID() const; 00347 00348 00349 private: 00350 RuleChain *mRules; 00351 RuleParser *mParser; 00352 double *mSamples; 00353 int32_t *mSampleInfo; 00354 int32_t mSampleInfoCount; 00355 00356 PluralRules(); // default constructor not implemented 00357 int32_t getRepeatLimit() const; 00358 void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status); 00359 void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName); 00360 void addRules(RuleChain& rules); 00361 int32_t getNumberValue(const UnicodeString& token) const; 00362 UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status); 00363 00364 static const int32_t MAX_SAMPLES = 3; 00365 00366 int32_t getSamplesInternal(const UnicodeString &keyword, double *dest, 00367 int32_t destCapacity, UBool includeUnlimited, 00368 UErrorCode& status); 00369 int32_t getKeywordIndex(const UnicodeString& keyword, 00370 UErrorCode& status) const; 00371 void initSamples(UErrorCode& status); 00372 00373 }; 00374 00375 U_NAMESPACE_END 00376 00377 #endif /* #if !UCONFIG_NO_FORMATTING */ 00378 00379 #endif // _PLURRULE 00380 //eof