ICU 49.1.1  49.1.1
dtfmtsym.h
Go to the documentation of this file.
1 /*
2 ********************************************************************************
3 * Copyright (C) 1997-2012, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 ********************************************************************************
6 *
7 * File DTFMTSYM.H
8 *
9 * Modification History:
10 *
11 * Date Name Description
12 * 02/19/97 aliu Converted from java.
13 * 07/21/98 stephen Added getZoneIndex()
14 * Changed to match C++ conventions
15 ********************************************************************************
16 */
17 
18 #ifndef DTFMTSYM_H
19 #define DTFMTSYM_H
20 
21 #include "unicode/utypes.h"
22 
23 #if !UCONFIG_NO_FORMATTING
24 
25 #include "unicode/calendar.h"
26 #include "unicode/uobject.h"
27 #include "unicode/locid.h"
28 #include "unicode/ures.h"
29 
36 
37 /* forward declaration */
38 class SimpleDateFormat;
39 class Hashtable;
40 
79 public:
94 
105  DateFormatSymbols(const Locale& locale,
106  UErrorCode& status);
107 
108 #ifndef U_HIDE_INTERNAL_API
109 
125  DateFormatSymbols(const char *type, UErrorCode& status);
126 
140  DateFormatSymbols(const Locale& locale,
141  const char *type,
142  UErrorCode& status);
143 #endif /* U_HIDE_INTERNAL_API */
144 
150 
155  DateFormatSymbols& operator=(const DateFormatSymbols&);
156 
162  virtual ~DateFormatSymbols();
163 
171  UBool operator==(const DateFormatSymbols& other) const;
172 
180  UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); }
181 
189  const UnicodeString* getEras(int32_t& count) const;
190 
197  void setEras(const UnicodeString* eras, int32_t count);
198 
206  const UnicodeString* getEraNames(int32_t& count) const;
207 
214  void setEraNames(const UnicodeString* eraNames, int32_t count);
215 
223  const UnicodeString* getNarrowEras(int32_t& count) const;
224 
231  void setNarrowEras(const UnicodeString* narrowEras, int32_t count);
232 
239  const UnicodeString* getMonths(int32_t& count) const;
240 
248  void setMonths(const UnicodeString* months, int32_t count);
249 
257  const UnicodeString* getShortMonths(int32_t& count) const;
258 
265  void setShortMonths(const UnicodeString* shortMonths, int32_t count);
266 
272  FORMAT,
273  STANDALONE,
274  DT_CONTEXT_COUNT
275  };
276 
281  enum DtWidthType {
282  ABBREVIATED,
283  WIDE,
284  NARROW,
285  DT_WIDTH_COUNT
286  };
287 
296  const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const;
297 
307  void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width);
308 
315  const UnicodeString* getWeekdays(int32_t& count) const;
316 
317 
324  void setWeekdays(const UnicodeString* weekdays, int32_t count);
325 
332  const UnicodeString* getShortWeekdays(int32_t& count) const;
333 
340  void setShortWeekdays(const UnicodeString* shortWeekdays, int32_t count);
341 
350  const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const;
351 
360  void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width);
361 
371  const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const;
372 
383  void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width);
384 
391  const UnicodeString* getAmPmStrings(int32_t& count) const;
392 
399  void setAmPmStrings(const UnicodeString* ampms, int32_t count);
400 
401 #ifndef U_HIDE_INTERNAL_API
402 
411  {
412  kLeapMonthPatternFormatWide,
413  kLeapMonthPatternFormatAbbrev,
414  kLeapMonthPatternFormatNarrow,
415  kLeapMonthPatternStandaloneWide,
416  kLeapMonthPatternStandaloneAbbrev,
417  kLeapMonthPatternStandaloneNarrow,
418  kLeapMonthPatternNumeric,
419  kMonthPatternsCount
420  };
421 
434  const UnicodeString* getLeapMonthPatterns(int32_t& count) const;
435 
436 #endif /* U_HIDE_INTERNAL_API */
437 
438 #ifndef U_HIDE_DEPRECATED_API
439 
446  const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
447 #endif /* U_HIDE_DEPRECATED_API */
448 
460  void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
461 
467  static const UChar * U_EXPORT2 getPatternUChars(void);
468 
479  UnicodeString& getLocalPatternChars(UnicodeString& result) const;
480 
487  void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
488 
494  Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
495 
496 #ifndef U_HIDE_INTERNAL_API
497 
502  {
503  kCapContextUsageOther,
504  kCapContextUsageMonthFormat, /* except narrow */
505  kCapContextUsageMonthStandalone, /* except narrow */
506  kCapContextUsageMonthNarrow,
507  kCapContextUsageDayFormat, /* except narrow */
508  kCapContextUsageDayStandalone, /* except narrow */
509  kCapContextUsageDayNarrow,
510  kCapContextUsageEraWide,
511  kCapContextUsageEraAbbrev,
512  kCapContextUsageEraNarrow,
513  kCapContextUsageZoneLong,
514  kCapContextUsageZoneShort,
515  kCapContextUsageMetazoneLong,
516  kCapContextUsageMetazoneShort,
517  kCapContextUsageTypeCount
518  };
519 #endif /* U_HIDE_INTERNAL_API */
520 
526  virtual UClassID getDynamicClassID() const;
527 
533  static UClassID U_EXPORT2 getStaticClassID();
534 
535 private:
536 
537  friend class SimpleDateFormat;
538  friend class DateFormatSymbolsSingleSetter; // see udat.cpp
539 
543  UnicodeString* fEras;
544  int32_t fErasCount;
545 
549  UnicodeString* fEraNames;
550  int32_t fEraNamesCount;
551 
555  UnicodeString* fNarrowEras;
556  int32_t fNarrowErasCount;
557 
561  UnicodeString* fMonths;
562  int32_t fMonthsCount;
563 
567  UnicodeString* fShortMonths;
568  int32_t fShortMonthsCount;
569 
573  UnicodeString* fNarrowMonths;
574  int32_t fNarrowMonthsCount;
575 
579  UnicodeString* fStandaloneMonths;
580  int32_t fStandaloneMonthsCount;
581 
585  UnicodeString* fStandaloneShortMonths;
586  int32_t fStandaloneShortMonthsCount;
587 
591  UnicodeString* fStandaloneNarrowMonths;
592  int32_t fStandaloneNarrowMonthsCount;
593 
597  UnicodeString* fWeekdays;
598  int32_t fWeekdaysCount;
599 
603  UnicodeString* fShortWeekdays;
604  int32_t fShortWeekdaysCount;
605 
609  UnicodeString* fNarrowWeekdays;
610  int32_t fNarrowWeekdaysCount;
611 
615  UnicodeString* fStandaloneWeekdays;
616  int32_t fStandaloneWeekdaysCount;
617 
621  UnicodeString* fStandaloneShortWeekdays;
622  int32_t fStandaloneShortWeekdaysCount;
623 
627  UnicodeString* fStandaloneNarrowWeekdays;
628  int32_t fStandaloneNarrowWeekdaysCount;
629 
633  UnicodeString* fAmPms;
634  int32_t fAmPmsCount;
635 
639  UnicodeString *fQuarters;
640  int32_t fQuartersCount;
641 
645  UnicodeString *fShortQuarters;
646  int32_t fShortQuartersCount;
647 
651  UnicodeString *fStandaloneQuarters;
652  int32_t fStandaloneQuartersCount;
653 
657  UnicodeString *fStandaloneShortQuarters;
658  int32_t fStandaloneShortQuartersCount;
659 
663  UnicodeString *fLeapMonthPatterns;
664  int32_t fLeapMonthPatternsCount;
665 
669  UnicodeString* fShortYearNames;
670  int32_t fShortYearNamesCount;
671 
709  UnicodeString **fZoneStrings; // Zone string array set by setZoneStrings
710  UnicodeString **fLocaleZoneStrings; // Zone string array created by the locale
711  int32_t fZoneStringsRowCount;
712  int32_t fZoneStringsColCount;
713 
714  Locale fZSFLocale; // Locale used for getting ZoneStringFormat
715 
719  UnicodeString fLocalPatternChars;
720 
721 #ifndef U_HIDE_INTERNAL_API
722 
727  UBool fCapitalization[kCapContextUsageTypeCount][2];
728 #endif
729 
730 
731 private:
735  char validLocale[ULOC_FULLNAME_CAPACITY];
736  char actualLocale[ULOC_FULLNAME_CAPACITY];
737 
738  DateFormatSymbols(); // default constructor not implemented
739 
749  void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
750 
759  static void assignArray(UnicodeString*& dstArray,
760  int32_t& dstCount,
761  const UnicodeString* srcArray,
762  int32_t srcCount);
763 
774  static UBool arrayCompare(const UnicodeString* array1,
775  const UnicodeString* array2,
776  int32_t count);
777 
783  void createZoneStrings(const UnicodeString *const * otherStrings);
784 
788  void dispose(void);
789 
794  void copyData(const DateFormatSymbols& other);
795 
799  void initZoneStringsArray(void);
800 
804  void disposeZoneStrings(void);
805 };
806 
808 
809 #endif /* #if !UCONFIG_NO_FORMATTING */
810 
811 #endif // _DTFMTSYM
812 //eof