ICU 4.8.1.1  4.8.1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
plurrule.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2008-2011, 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 
311  UnicodeString getKeywordOther() const;
312 
321  virtual UBool operator==(const PluralRules& other) const;
322 
331  UBool operator!=(const PluralRules& other) const {return !operator==(other);}
332 
333 
340  static UClassID U_EXPORT2 getStaticClassID(void);
341 
347  virtual UClassID getDynamicClassID() const;
348 
349 
350 private:
351  RuleChain *mRules;
352  RuleParser *mParser;
353  double *mSamples;
354  int32_t *mSampleInfo;
355  int32_t mSampleInfoCount;
356 
357  PluralRules(); // default constructor not implemented
358  int32_t getRepeatLimit() const;
359  void parseDescription(UnicodeString& ruleData, RuleChain& rules, UErrorCode &status);
360  void getNextLocale(const UnicodeString& localeData, int32_t* curIndex, UnicodeString& localeName);
361  void addRules(RuleChain& rules);
362  int32_t getNumberValue(const UnicodeString& token) const;
363  UnicodeString getRuleFromResource(const Locale& locale, UErrorCode& status);
364 
365  static const int32_t MAX_SAMPLES = 3;
366 
367  int32_t getSamplesInternal(const UnicodeString &keyword, double *dest,
368  int32_t destCapacity, UBool includeUnlimited,
369  UErrorCode& status);
370  int32_t getKeywordIndex(const UnicodeString& keyword,
371  UErrorCode& status) const;
372  void initSamples(UErrorCode& status);
373 
374 };
375 
377 
378 #endif /* #if !UCONFIG_NO_FORMATTING */
379 
380 #endif // _PLURRULE
381 //eof
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
C++ API: Base class for all formats.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:521
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:131
UBool operator!=(const PluralRules &other) const
Compares the inequality of two PluralRules objects.
Definition: plurrule.h:331
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:188
#define U_EXPORT2
Definition: platform.h:314
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:132
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:215
void * UClassID
UClassID is used to identify classes without using RTTI, since RTTI is not yet supported by all C++ c...
Definition: utypes.h:385
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:639
Base class for 'pure' C++ implementations of uenum api.
Definition: strenum.h:55
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Definition: plurrule.h:126
Basic definitions for ICU, for both C and C++ APIs.
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:181
virtual UClassID getDynamicClassID() const =0
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
int8_t UBool
The ICU boolean type.
Definition: umachine.h:228