ICU 49.1.1  49.1.1
plurrule.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2008-2012, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 *******************************************************************************
6 *
7 *
8 * File PLURRULE.H
9 *
10 * Modification History:*
11 * Date Name Description
12 *
13 ********************************************************************************
14 */
15 
16 #ifndef PLURRULE
17 #define PLURRULE
18 
19 #include "unicode/utypes.h"
20 
26 #if !UCONFIG_NO_FORMATTING
27 
28 #include "unicode/format.h"
29 
35 #define UPLRULES_NO_UNIQUE_VALUE ((double)-0.00123456777)
36 
38 
39 class Hashtable;
40 class RuleChain;
41 class RuleParser;
42 class PluralKeywordEnumeration;
43 
127 public:
128 
136  PluralRules(UErrorCode& status);
137 
142  PluralRules(const PluralRules& other);
143 
148  virtual ~PluralRules();
149 
154  PluralRules* clone() const;
155 
160  PluralRules& operator=(const PluralRules&);
161 
172  static PluralRules* U_EXPORT2 createRules(const UnicodeString& description,
173  UErrorCode& status);
174 
183  static PluralRules* U_EXPORT2 createDefaultRules(UErrorCode& status);
184 
200  static PluralRules* U_EXPORT2 forLocale(const Locale& locale, UErrorCode& status);
201 
211  UnicodeString select(int32_t number) const;
212 
222  UnicodeString select(double number) const;
223 
234  StringEnumeration* getKeywords(UErrorCode& status) const;
235 
246  double getUniqueKeywordValue(const UnicodeString& keyword);
247 
266  int32_t getAllKeywordValues(const UnicodeString &keyword,
267  double *dest, int32_t destCapacity,
268  UErrorCode& status);
269 
288  int32_t getSamples(const UnicodeString &keyword,
289  double *dest, int32_t destCapacity,
290  UErrorCode& status);
291 
301  UBool isKeyword(const UnicodeString& keyword) const;
302 
303 
310  UnicodeString getKeywordOther() const;
311 
320  virtual UBool operator==(const PluralRules& other) const;
321 
330  UBool operator!=(const PluralRules& other) const {return !operator==(other);}
331 
332 
339  static UClassID U_EXPORT2 getStaticClassID(void);
340 
346  virtual UClassID getDynamicClassID() const;
347 
348 
349 private:
350  RuleChain *mRules;
351  RuleParser *mParser;
352  double *mSamples;
353  int32_t *mSampleInfo;
354  int32_t mSampleInfoCount;
355 
356  PluralRules(); // default constructor not implemented
357  int32_t getRepeatLimit() const;
358  void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status);
359  void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName);
360  void addRules(RuleChain& rules);
361  int32_t getNumberValue(const UnicodeString& token) const;
362  UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status);
363 
364  static const int32_t MAX_SAMPLES = 3;
365 
366  int32_t getSamplesInternal(const UnicodeString &keyword, double *dest,
367  int32_t destCapacity, UBool includeUnlimited,
368  UErrorCode& status);
369  int32_t getKeywordIndex(const UnicodeString& keyword,
370  UErrorCode& status) const;
371  void initSamples(UErrorCode& status);
372 
373 };
374 
376 
377 #endif /* #if !UCONFIG_NO_FORMATTING */
378 
379 #endif // _PLURRULE
380 //eof