"Fossies" - the Fresh Open Source Software Archive

Member "plurfmt_8h_source.html" (3 Oct 2019, 43516 Bytes) of package /linux/misc/icu4c-65_1-docs.zip:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. You can here alternatively try to browse the pure source code or just view or download the uninterpreted raw source code. If the rendering is insufficient you may try to find and view the page on the project site itself.

ICU 65.1  65.1
plurfmt.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 2007-2014, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 *******************************************************************************
8 *
9 
10 * File PLURFMT.H
11 ********************************************************************************
12 */
13 
14 #ifndef PLURFMT
15 #define PLURFMT
16 
17 #include "unicode/utypes.h"
18 
19 #if U_SHOW_CPLUSPLUS_API
20 
26 #if !UCONFIG_NO_FORMATTING
27 
28 #include "unicode/messagepattern.h"
29 #include "unicode/numfmt.h"
30 #include "unicode/plurrule.h"
31 
32 U_NAMESPACE_BEGIN
33 
34 class Hashtable;
35 class NFRule;
36 
149 public:
150 
159  PluralFormat(UErrorCode& status);
160 
170  PluralFormat(const Locale& locale, UErrorCode& status);
171 
181  PluralFormat(const PluralRules& rules, UErrorCode& status);
182 
199  PluralFormat(const Locale& locale, const PluralRules& rules, UErrorCode& status);
200 
211  PluralFormat(const Locale& locale, UPluralType type, UErrorCode& status);
212 
223  PluralFormat(const UnicodeString& pattern, UErrorCode& status);
224 
239  PluralFormat(const Locale& locale, const UnicodeString& pattern, UErrorCode& status);
240 
252  PluralFormat(const PluralRules& rules,
253  const UnicodeString& pattern,
254  UErrorCode& status);
255 
270  PluralFormat(const Locale& locale,
271  const PluralRules& rules,
272  const UnicodeString& pattern,
273  UErrorCode& status);
274 
288  PluralFormat(const Locale& locale,
289  UPluralType type,
290  const UnicodeString& pattern,
291  UErrorCode& status);
292 
297  PluralFormat(const PluralFormat& other);
298 
303  virtual ~PluralFormat();
304 
317  void applyPattern(const UnicodeString& pattern, UErrorCode& status);
318 
319 
320  using Format::format;
321 
334  UnicodeString format(int32_t number, UErrorCode& status) const;
335 
348  UnicodeString format(double number, UErrorCode& status) const;
349 
366  UnicodeString& format(int32_t number,
367  UnicodeString& appendTo,
368  FieldPosition& pos,
369  UErrorCode& status) const;
370 
387  UnicodeString& format(double number,
388  UnicodeString& appendTo,
389  FieldPosition& pos,
390  UErrorCode& status) const;
391 
392 #ifndef U_HIDE_DEPRECATED_API
393 
408  void setLocale(const Locale& locale, UErrorCode& status);
409 #endif /* U_HIDE_DEPRECATED_API */
410 
420  void setNumberFormat(const NumberFormat* format, UErrorCode& status);
421 
428  PluralFormat& operator=(const PluralFormat& other);
429 
437  virtual UBool operator==(const Format& other) const;
438 
446  virtual UBool operator!=(const Format& other) const;
447 
453  virtual PluralFormat* clone() const;
454 
469  UnicodeString& format(const Formattable& obj,
470  UnicodeString& appendTo,
471  FieldPosition& pos,
472  UErrorCode& status) const;
473 
482  UnicodeString& toPattern(UnicodeString& appendTo);
483 
506  virtual void parseObject(const UnicodeString& source,
507  Formattable& result,
508  ParsePosition& parse_pos) const;
509 
516  static UClassID U_EXPORT2 getStaticClassID(void);
517 
523  virtual UClassID getDynamicClassID() const;
524 
525 private:
529  class U_I18N_API PluralSelector : public UMemory {
530  public:
531  virtual ~PluralSelector();
541  virtual UnicodeString select(void *context, double number, UErrorCode& ec) const = 0;
542  };
543 
544  class U_I18N_API PluralSelectorAdapter : public PluralSelector {
545  public:
546  PluralSelectorAdapter() : pluralRules(NULL) {
547  }
548 
549  virtual ~PluralSelectorAdapter();
550 
551  virtual UnicodeString select(void *context, double number, UErrorCode& /*ec*/) const;
552 
553  void reset();
554 
555  PluralRules* pluralRules;
556  };
557 
558  Locale locale;
559  MessagePattern msgPattern;
560  NumberFormat* numberFormat;
561  double offset;
562  PluralSelectorAdapter pluralRulesWrapper;
563 
564  PluralFormat(); // default constructor not implemented
565  void init(const PluralRules* rules, UPluralType type, UErrorCode& status);
570  void copyObjects(const PluralFormat& other);
571 
572  UnicodeString& format(const Formattable& numberObject, double number,
573  UnicodeString& appendTo,
574  FieldPosition& pos,
575  UErrorCode& status) const;
576 
588  static int32_t findSubMessage(
589  const MessagePattern& pattern, int32_t partIndex,
590  const PluralSelector& selector, void *context, double number, UErrorCode& ec);
592  void parseType(const UnicodeString& source, const NFRule *rbnfLenientScanner,
593  Formattable& result, FieldPosition& pos) const;
594 
595  friend class MessageFormat;
596  friend class NFRule;
597 };
598 
599 U_NAMESPACE_END
600 
601 #endif /* #if !UCONFIG_NO_FORMATTING */
602 
603 #endif /* U_SHOW_CPLUSPLUS_API */
604 
605 #endif // _PLURFMT
606 //eof
Base class for all formats.
Definition: format.h:98
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: format.h:123
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
virtual Format * clone() const =0
Clone this object polymorphically.
C++ API: PluralRules object.
Defines rules for mapping non-negative numeric values onto a small set of keywords.
Definition: plurrule.h:200
Parses and represents ICU MessageFormat patterns.
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:301
#define NULL
Define NULL if necessary, to nullptr for C++ and to ((void *)0) for C.
Definition: utypes.h:188
virtual UClassID getDynamicClassID() const
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition: fieldpos.h:110
UPluralType
Type of plurals and PluralRules.
Definition: upluralrules.h:53
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition: parsepos.h:52
virtual UBool operator==(const Format &other) const =0
Return true if the given Format objects are semantically equal.
virtual void parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const =0
Parse a string to produce an object.
Basic definitions for ICU, for both C and C++ APIs.
Format & operator=(const Format &)
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:64
C++ API: MessagePattern class: Parses and represents ICU MessageFormat patterns.
C++ API: Compatibility APIs for number formatting.
UMemory is the common ICU base class.
Definition: uobject.h:115
int8_t UBool
The ICU boolean type.
Definition: umachine.h:261
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:195