ICU 4.8.1.1  4.8.1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dcfmtsym.h
Go to the documentation of this file.
1 /*
2 ********************************************************************************
3 * Copyright (C) 1997-2011, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 ********************************************************************************
6 *
7 * File DCFMTSYM.H
8 *
9 * Modification History:
10 *
11 * Date Name Description
12 * 02/19/97 aliu Converted from java.
13 * 03/18/97 clhuang Updated per C++ implementation.
14 * 03/27/97 helena Updated to pass the simple test after code review.
15 * 08/26/97 aliu Added currency/intl currency symbol support.
16 * 07/22/98 stephen Changed to match C++ style
17 * currencySymbol -> fCurrencySymbol
18 * Constants changed from CAPS to kCaps
19 * 06/24/99 helena Integrated Alan's NF enhancements and Java2 bug fixes
20 * 09/22/00 grhoten Marked deprecation tags with a pointer to replacement
21 * functions.
22 ********************************************************************************
23 */
24 
25 #ifndef DCFMTSYM_H
26 #define DCFMTSYM_H
27 
28 #include "unicode/utypes.h"
29 #include "unicode/uchar.h"
30 
31 #if !UCONFIG_NO_FORMATTING
32 
33 #include "unicode/uobject.h"
34 #include "unicode/locid.h"
35 #include "unicode/unum.h"
36 
44 
85 public:
167  kFormatSymbolCount
168  };
169 
178  DecimalFormatSymbols(const Locale& locale, UErrorCode& status);
179 
191 
197 
202  DecimalFormatSymbols& operator=(const DecimalFormatSymbols&);
203 
208  virtual ~DecimalFormatSymbols();
209 
217  UBool operator==(const DecimalFormatSymbols& other) const;
218 
226  UBool operator!=(const DecimalFormatSymbols& other) const { return !operator==(other); }
227 
237  inline UnicodeString getSymbol(ENumberFormatSymbol symbol) const;
238 
251  void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits);
252 
257  inline Locale getLocale() const;
258 
264  Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
265 
282  const UnicodeString& getPatternForCurrencySpacing(UCurrencySpacing type,
283  UBool beforeCurrency,
284  UErrorCode& status) const;
295  void setPatternForCurrencySpacing(UCurrencySpacing type,
296  UBool beforeCurrency,
297  const UnicodeString& pattern);
298 
304  virtual UClassID getDynamicClassID() const;
305 
311  static UClassID U_EXPORT2 getStaticClassID();
312 
313 private:
314  DecimalFormatSymbols(); // default constructor not implemented
315 
326  void initialize(const Locale& locale, UErrorCode& success, UBool useLastResortData = FALSE);
327 
331  void initialize();
332 
333  void setCurrencyForSymbols();
334 
335 public:
347  inline const UnicodeString &getConstSymbol(ENumberFormatSymbol symbol) const;
348 
353  inline const UChar* getCurrencyPattern(void) const;
354 
355 private:
371  UnicodeString fSymbols[kFormatSymbolCount];
372 
377  UnicodeString fNoSymbol;
378 
379  Locale locale;
380 
381  char actualLocale[ULOC_FULLNAME_CAPACITY];
382  char validLocale[ULOC_FULLNAME_CAPACITY];
383  const UChar* currPattern;
384 
385  UnicodeString currencySpcBeforeSym[UNUM_CURRENCY_SPACING_COUNT];
386  UnicodeString currencySpcAfterSym[UNUM_CURRENCY_SPACING_COUNT];
387 };
388 
389 // -------------------------------------
390 
391 inline UnicodeString
393  const UnicodeString *strPtr;
394  if(symbol < kFormatSymbolCount) {
395  strPtr = &fSymbols[symbol];
396  } else {
397  strPtr = &fNoSymbol;
398  }
399  return *strPtr;
400 }
401 
402 inline const UnicodeString &
404  const UnicodeString *strPtr;
405  if(symbol < kFormatSymbolCount) {
406  strPtr = &fSymbols[symbol];
407  } else {
408  strPtr = &fNoSymbol;
409  }
410  return *strPtr;
411 }
412 
413 // -------------------------------------
414 
415 inline void
416 DecimalFormatSymbols::setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits = TRUE) {
417  if(symbol<kFormatSymbolCount) {
418  fSymbols[symbol]=value;
419  }
420 
421  // If the zero digit is being set to a known zero digit according to Unicode,
422  // then we automatically set the corresponding 1-9 digits
423  if ( propogateDigits && symbol == kZeroDigitSymbol && value.countChar32() == 1 ) {
424  UChar32 sym = value.char32At(0);
425  if ( u_charDigitValue(sym) == 0 ) {
426  for ( int8_t i = 1 ; i<= 9 ; i++ ) {
427  sym++;
428  fSymbols[(int)kOneDigitSymbol+i-1] = UnicodeString(sym);
429  }
430  }
431  }
432 }
433 
434 // -------------------------------------
435 
436 inline Locale
438  return locale;
439 }
440 
441 inline const UChar*
443  return currPattern;
444 }
446 
447 #endif /* #if !UCONFIG_NO_FORMATTING */
448 
449 #endif // _DCFMTSYM
450 //eof
void setSymbol(ENumberFormatSymbol symbol, const UnicodeString &value, const UBool propogateDigits)
Set one of the format symbols by its enum constant.
Definition: dcfmtsym.h:416
const UChar * getCurrencyPattern(void) const
Returns that pattern stored in currecy info.
Definition: dcfmtsym.h:442
int32_t countChar32(int32_t start=0, int32_t length=INT32_MAX) const
Count Unicode code points in the length UChar code units of the string.
Locale getLocale() const
Returns the locale for which this object was constructed.
Definition: dcfmtsym.h:437
UCurrencySpacing
Constants for specifying currency spacing.
Definition: unum.h:255
Character representing a digit in the pattern.
Definition: dcfmtsym.h:102
int32_t u_charDigitValue(UChar32 c)
Returns the decimal digit value of a decimal digit character.
#define ULOC_FULLNAME_CAPACITY
Useful constant for the maximum size of the whole locale ID (including the terminating NULL and all k...
Definition: uloc.h:262
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
This class represents the set of symbols needed by DecimalFormat to format numbers.
Definition: dcfmtsym.h:84
#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
Per mill symbol - replaces kPermillSymbol.
Definition: dcfmtsym.h:116
ENumberFormatSymbol
Constants for specifying a number format symbol.
Definition: dcfmtsym.h:90
UBool operator!=(const DecimalFormatSymbols &other) const
Return true if another object is semantically unequal to this one.
Definition: dcfmtsym.h:226
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:345
The international currency symbol.
Definition: dcfmtsym.h:110
#define TRUE
The TRUE value of a UBool.
Definition: umachine.h:232
const UnicodeString & getConstSymbol(ENumberFormatSymbol symbol) const
Internal function - more efficient version of getSymbol, returning a const reference to one of the sy...
Definition: dcfmtsym.h:403
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
C API: Unicode Properties.
C++ API: Common ICU base class UObject.
uint16_t UChar
Define UChar to be wchar_t if that is 16 bits wide; always assumed to be unsigned.
Definition: umachine.h:325
#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 &quot;boilerplate&quot; 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
UChar32 char32At(int32_t offset) const
Return the code point that contains the code unit at offset offset.
Definition: unistr.h:4157
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested...
Definition: uloc.h:336
C++ API: Locale ID object.
Basic definitions for ICU, for both C and C++ APIs.
#define FALSE
The FALSE value of a UBool.
Definition: umachine.h:236
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:181
UnicodeString getSymbol(ENumberFormatSymbol symbol) const
Get one of the format symbols by its enum constant.
Definition: dcfmtsym.h:392
virtual UClassID getDynamicClassID() const =0
ICU4C &quot;poor man&#39;s RTTI&quot;, returns a UClassID for the actual ICU class.
The exponential symbol.
Definition: dcfmtsym.h:114
Escape padding character.
Definition: dcfmtsym.h:118
int8_t UBool
The ICU boolean type.
Definition: umachine.h:228
C API: NumberFormat.