ICU 51.2  51.2
dtfmtsym.h
Go to the documentation of this file.
1 /*
2 ********************************************************************************
3 * Copyright (C) 1997-2013, 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/udat.h"
29 #include "unicode/ures.h"
30 
37 
38 /* forward declaration */
39 class SimpleDateFormat;
40 class Hashtable;
41 
80 public:
95 
106  DateFormatSymbols(const Locale& locale,
107  UErrorCode& status);
108 
109 #ifndef U_HIDE_INTERNAL_API
110 
126  DateFormatSymbols(const char *type, UErrorCode& status);
127 
141  DateFormatSymbols(const Locale& locale,
142  const char *type,
143  UErrorCode& status);
144 #endif /* U_HIDE_INTERNAL_API */
145 
151 
156  DateFormatSymbols& operator=(const DateFormatSymbols&);
157 
163  virtual ~DateFormatSymbols();
164 
172  UBool operator==(const DateFormatSymbols& other) const;
173 
181  UBool operator!=(const DateFormatSymbols& other) const { return !operator==(other); }
182 
190  const UnicodeString* getEras(int32_t& count) const;
191 
198  void setEras(const UnicodeString* eras, int32_t count);
199 
207  const UnicodeString* getEraNames(int32_t& count) const;
208 
215  void setEraNames(const UnicodeString* eraNames, int32_t count);
216 
224  const UnicodeString* getNarrowEras(int32_t& count) const;
225 
232  void setNarrowEras(const UnicodeString* narrowEras, int32_t count);
233 
240  const UnicodeString* getMonths(int32_t& count) const;
241 
249  void setMonths(const UnicodeString* months, int32_t count);
250 
258  const UnicodeString* getShortMonths(int32_t& count) const;
259 
266  void setShortMonths(const UnicodeString* shortMonths, int32_t count);
267 
273  FORMAT,
274  STANDALONE,
275  DT_CONTEXT_COUNT
276  };
277 
282  enum DtWidthType {
283  ABBREVIATED,
284  WIDE,
285  NARROW,
286 #ifndef U_HIDE_DRAFT_API
287 
292 #endif /* U_HIDE_DRAFT_API */
293 
295  DT_WIDTH_COUNT = 4
296  };
297 
306  const UnicodeString* getMonths(int32_t& count, DtContextType context, DtWidthType width) const;
307 
317  void setMonths(const UnicodeString* months, int32_t count, DtContextType context, DtWidthType width);
318 
325  const UnicodeString* getWeekdays(int32_t& count) const;
326 
327 
334  void setWeekdays(const UnicodeString* weekdays, int32_t count);
335 
343  const UnicodeString* getShortWeekdays(int32_t& count) const;
344 
352  void setShortWeekdays(const UnicodeString* abbrevWeekdays, int32_t count);
353 
362  const UnicodeString* getWeekdays(int32_t& count, DtContextType context, DtWidthType width) const;
363 
372  void setWeekdays(const UnicodeString* weekdays, int32_t count, DtContextType context, DtWidthType width);
373 
383  const UnicodeString* getQuarters(int32_t& count, DtContextType context, DtWidthType width) const;
384 
395  void setQuarters(const UnicodeString* quarters, int32_t count, DtContextType context, DtWidthType width);
396 
403  const UnicodeString* getAmPmStrings(int32_t& count) const;
404 
411  void setAmPmStrings(const UnicodeString* ampms, int32_t count);
412 
413 #ifndef U_HIDE_INTERNAL_API
414 
423  {
424  kLeapMonthPatternFormatWide,
425  kLeapMonthPatternFormatAbbrev,
426  kLeapMonthPatternFormatNarrow,
427  kLeapMonthPatternStandaloneWide,
428  kLeapMonthPatternStandaloneAbbrev,
429  kLeapMonthPatternStandaloneNarrow,
430  kLeapMonthPatternNumeric,
431  kMonthPatternsCount
432  };
433 
446  const UnicodeString* getLeapMonthPatterns(int32_t& count) const;
447 
448 #endif /* U_HIDE_INTERNAL_API */
449 
450 #ifndef U_HIDE_DEPRECATED_API
451 
458  const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount) const;
459 #endif /* U_HIDE_DEPRECATED_API */
460 
472  void setZoneStrings(const UnicodeString* const* strings, int32_t rowCount, int32_t columnCount);
473 
479  static const UChar * U_EXPORT2 getPatternUChars(void);
480 
491  UnicodeString& getLocalPatternChars(UnicodeString& result) const;
492 
499  void setLocalPatternChars(const UnicodeString& newLocalPatternChars);
500 
506  Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
507 
508 #ifndef U_HIDE_INTERNAL_API
509 
514  {
515  kCapContextUsageOther,
516  kCapContextUsageMonthFormat, /* except narrow */
517  kCapContextUsageMonthStandalone, /* except narrow */
518  kCapContextUsageMonthNarrow,
519  kCapContextUsageDayFormat, /* except narrow */
520  kCapContextUsageDayStandalone, /* except narrow */
521  kCapContextUsageDayNarrow,
522  kCapContextUsageEraWide,
523  kCapContextUsageEraAbbrev,
524  kCapContextUsageEraNarrow,
525  kCapContextUsageZoneLong,
526  kCapContextUsageZoneShort,
527  kCapContextUsageMetazoneLong,
528  kCapContextUsageMetazoneShort,
529  kCapContextUsageTypeCount
530  };
531 #endif /* U_HIDE_INTERNAL_API */
532 
538  virtual UClassID getDynamicClassID() const;
539 
545  static UClassID U_EXPORT2 getStaticClassID();
546 
547 private:
548 
549  friend class SimpleDateFormat;
550  friend class DateFormatSymbolsSingleSetter; // see udat.cpp
551 
555  UnicodeString* fEras;
556  int32_t fErasCount;
557 
561  UnicodeString* fEraNames;
562  int32_t fEraNamesCount;
563 
567  UnicodeString* fNarrowEras;
568  int32_t fNarrowErasCount;
569 
573  UnicodeString* fMonths;
574  int32_t fMonthsCount;
575 
579  UnicodeString* fShortMonths;
580  int32_t fShortMonthsCount;
581 
585  UnicodeString* fNarrowMonths;
586  int32_t fNarrowMonthsCount;
587 
591  UnicodeString* fStandaloneMonths;
592  int32_t fStandaloneMonthsCount;
593 
597  UnicodeString* fStandaloneShortMonths;
598  int32_t fStandaloneShortMonthsCount;
599 
603  UnicodeString* fStandaloneNarrowMonths;
604  int32_t fStandaloneNarrowMonthsCount;
605 
609  UnicodeString* fWeekdays;
610  int32_t fWeekdaysCount;
611 
615  UnicodeString* fShortWeekdays;
616  int32_t fShortWeekdaysCount;
617 
621  UnicodeString* fShorterWeekdays;
622  int32_t fShorterWeekdaysCount;
623 
627  UnicodeString* fNarrowWeekdays;
628  int32_t fNarrowWeekdaysCount;
629 
633  UnicodeString* fStandaloneWeekdays;
634  int32_t fStandaloneWeekdaysCount;
635 
639  UnicodeString* fStandaloneShortWeekdays;
640  int32_t fStandaloneShortWeekdaysCount;
641 
645  UnicodeString* fStandaloneShorterWeekdays;
646  int32_t fStandaloneShorterWeekdaysCount;
647 
651  UnicodeString* fStandaloneNarrowWeekdays;
652  int32_t fStandaloneNarrowWeekdaysCount;
653 
657  UnicodeString* fAmPms;
658  int32_t fAmPmsCount;
659 
663  UnicodeString *fQuarters;
664  int32_t fQuartersCount;
665 
669  UnicodeString *fShortQuarters;
670  int32_t fShortQuartersCount;
671 
675  UnicodeString *fStandaloneQuarters;
676  int32_t fStandaloneQuartersCount;
677 
681  UnicodeString *fStandaloneShortQuarters;
682  int32_t fStandaloneShortQuartersCount;
683 
687  UnicodeString *fLeapMonthPatterns;
688  int32_t fLeapMonthPatternsCount;
689 
693  UnicodeString* fShortYearNames;
694  int32_t fShortYearNamesCount;
695 
733  UnicodeString **fZoneStrings; // Zone string array set by setZoneStrings
734  UnicodeString **fLocaleZoneStrings; // Zone string array created by the locale
735  int32_t fZoneStringsRowCount;
736  int32_t fZoneStringsColCount;
737 
738  Locale fZSFLocale; // Locale used for getting ZoneStringFormat
739 
743  UnicodeString fLocalPatternChars;
744 
750  UBool fCapitalization[kCapContextUsageTypeCount][2];
751 
752 private:
756  char validLocale[ULOC_FULLNAME_CAPACITY];
757  char actualLocale[ULOC_FULLNAME_CAPACITY];
758 
759  DateFormatSymbols(); // default constructor not implemented
760 
770  void initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
771 
780  static void assignArray(UnicodeString*& dstArray,
781  int32_t& dstCount,
782  const UnicodeString* srcArray,
783  int32_t srcCount);
784 
795  static UBool arrayCompare(const UnicodeString* array1,
796  const UnicodeString* array2,
797  int32_t count);
798 
804  void createZoneStrings(const UnicodeString *const * otherStrings);
805 
809  void dispose(void);
810 
815  void copyData(const DateFormatSymbols& other);
816 
820  void initZoneStringsArray(void);
821 
825  void disposeZoneStrings(void);
826 
831  static UDateFormatField U_EXPORT2 getPatternCharIndex(UChar c);
832 
836  static UBool U_EXPORT2 isNumericField(UDateFormatField f, int32_t count);
837 
841  static UBool U_EXPORT2 isNumericPatternChar(UChar c, int32_t count);
842 };
843 
845 
846 #endif /* #if !UCONFIG_NO_FORMATTING */
847 
848 #endif // _DTFMTSYM
849 //eof