ICU 4.2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dtitvfmt.h
Go to the documentation of this file.
1 /********************************************************************************
2 * Copyright (C) 2008-2009, International Business Machines Corporation and others. All Rights Reserved.
3 *******************************************************************************
4 *
5 * File DTITVFMT.H
6 *
7 *******************************************************************************
8 */
9 
10 #ifndef __DTITVFMT_H__
11 #define __DTITVFMT_H__
12 
13 
14 #include "unicode/utypes.h"
15 
21 #if !UCONFIG_NO_FORMATTING
22 
23 #include "unicode/ucal.h"
24 #include "unicode/smpdtfmt.h"
25 #include "unicode/dtintrv.h"
26 #include "unicode/dtitvinf.h"
27 #include "unicode/dtptngen.h"
28 
30 
31 
32 
219 public:
220 
234  static DateIntervalFormat* U_EXPORT2 createInstance(
235  const UnicodeString& skeleton,
236  UErrorCode& status);
237 
267  static DateIntervalFormat* U_EXPORT2 createInstance(
268  const UnicodeString& skeleton,
269  const Locale& locale,
270  UErrorCode& status);
271 
287  static DateIntervalFormat* U_EXPORT2 createInstance(
288  const UnicodeString& skeleton,
289  const DateIntervalInfo& dtitvinf,
290  UErrorCode& status);
291 
327  static DateIntervalFormat* U_EXPORT2 createInstance(
328  const UnicodeString& skeleton,
329  const Locale& locale,
330  const DateIntervalInfo& dtitvinf,
331  UErrorCode& status);
332 
337  virtual ~DateIntervalFormat();
338 
345  virtual Format* clone(void) const;
346 
354  virtual UBool operator==(const Format& other) const;
355 
363  UBool operator!=(const Format& other) const;
364 
381  virtual UnicodeString& format(const Formattable& obj,
382  UnicodeString& appendTo,
383  FieldPosition& fieldPosition,
384  UErrorCode& status) const ;
385 
386 
387 
400  UnicodeString& format(const DateInterval* dtInterval,
401  UnicodeString& appendTo,
402  FieldPosition& fieldPosition,
403  UErrorCode& status) const ;
404 
405 
426  UnicodeString& format(Calendar& fromCalendar,
427  Calendar& toCalendar,
428  UnicodeString& appendTo,
429  FieldPosition& fieldPosition,
430  UErrorCode& status) const ;
431 
458  virtual void parseObject(const UnicodeString& source,
459  Formattable& result,
460  ParsePosition& parse_pos) const;
461 
462 
469  const DateIntervalInfo* getDateIntervalInfo(void) const;
470 
471 
478  void setDateIntervalInfo(const DateIntervalInfo& newIntervalPatterns,
479  UErrorCode& status);
480 
481 
487  const DateFormat* getDateFormat(void) const;
488 
500  static UClassID U_EXPORT2 getStaticClassID(void);
501 
513  virtual UClassID getDynamicClassID(void) const;
514 
515 protected:
516 
522 
528 
529 private:
530 
531  /*
532  * This is for ICU internal use only. Please do not use.
533  * Save the interval pattern information.
534  * Interval pattern consists of 2 single date patterns and the separator.
535  * For example, interval pattern "MMM d - MMM d, yyyy" consists
536  * a single date pattern "MMM d", another single date pattern "MMM d, yyyy",
537  * and a separator "-".
538  * The pattern is divided into 2 parts. For above example,
539  * the first part is "MMM d - ", and the second part is "MMM d, yyyy".
540  * Also, the first date appears in an interval pattern could be
541  * the earlier date or the later date.
542  * And such information is saved in the interval pattern as well.
543  * @internal ICU 4.0
544  */
545  struct PatternInfo {
546  UnicodeString firstPart;
547  UnicodeString secondPart;
561  UBool laterDateFirst;
562  };
563 
564 
570 
590  DateIntervalFormat(const Locale& locale, DateIntervalInfo* dtItvInfo,
591  const UnicodeString* skeleton, UErrorCode& status);
592 
593 
607  static DateIntervalFormat* U_EXPORT2 create(const Locale& locale,
608  DateIntervalInfo* dtitvinf,
609  const UnicodeString* skeleton,
610  UErrorCode& status);
611 
625  static SimpleDateFormat* U_EXPORT2 createSDFPatternInstance(
626  const UnicodeString& skeleton,
627  const Locale& locale,
629  UErrorCode& status);
630 
631 
655  UnicodeString& fallbackFormat(Calendar& fromCalendar,
656  Calendar& toCalendar,
657  UnicodeString& appendTo,
658  FieldPosition& pos,
659  UErrorCode& status) const;
660 
661 
662 
698  void initializePattern(UErrorCode& status);
699 
700 
701 
710  void setFallbackPattern(UCalendarDateFields field,
711  const UnicodeString& skeleton,
712  UErrorCode& status);
713 
714 
715 
741  static void U_EXPORT2 getDateTimeSkeleton(const UnicodeString& skeleton,
742  UnicodeString& date,
743  UnicodeString& normalizedDate,
744  UnicodeString& time,
745  UnicodeString& normalizedTime);
746 
747 
748 
773  UBool setSeparateDateTimePtn(const UnicodeString& dateSkeleton,
774  const UnicodeString& timeSkeleton);
775 
776 
777 
778 
803  UBool setIntervalPattern(UCalendarDateFields field,
804  const UnicodeString* skeleton,
805  const UnicodeString* bestSkeleton,
806  int8_t differenceInfo,
807  UnicodeString* extendedSkeleton = NULL,
808  UnicodeString* extendedBestSkeleton = NULL);
809 
839  static void U_EXPORT2 adjustFieldWidth(
840  const UnicodeString& inputSkeleton,
841  const UnicodeString& bestMatchSkeleton,
842  const UnicodeString& bestMatchIntervalPattern,
843  int8_t differenceInfo,
844  UnicodeString& adjustedIntervalPattern);
845 
859  void concatSingleDate2TimeInterval(const UChar* format,
860  int32_t formatLen,
861  const UnicodeString& datePattern,
862  UCalendarDateFields field,
863  UErrorCode& status);
864 
872  static UBool U_EXPORT2 fieldExistsInSkeleton(UCalendarDateFields field,
873  const UnicodeString& skeleton);
874 
875 
882  static int32_t U_EXPORT2 splitPatternInto2Part(const UnicodeString& intervalPattern);
883 
884 
891  void setIntervalPattern(UCalendarDateFields field,
892  const UnicodeString& intervalPattern);
893 
894 
902  void setIntervalPattern(UCalendarDateFields field,
903  const UnicodeString& intervalPattern,
904  UBool laterDateFirst);
905 
906 
917  void setPatternInfo(UCalendarDateFields field,
918  const UnicodeString* firstPart,
919  const UnicodeString* secondpart,
920  UBool laterDateFirst);
921 
922 
923  // from calendar field to pattern letter
924  static const UChar fgCalendarFieldToPatternLetter[];
925 
926 
930  DateIntervalInfo* fInfo;
931 
935  SimpleDateFormat* fDateFormat;
936 
942  Calendar* fFromCalendar;
943  Calendar* fToCalendar;
944 
948  DateTimePatternGenerator* fDtpng;
949 
953  UnicodeString fSkeleton;
954  PatternInfo fIntervalPatterns[DateIntervalInfo::kIPI_MAX_INDEX];
955 };
956 
957 
958 
959 
960 
961 
962 inline UBool
964  return !operator==(other);
965 }
966 
968 
969 #endif /* #if !UCONFIG_NO_FORMATTING */
970 
971 #endif // _DTITVFMT_H__
972 //eof
virtual UClassID getDynamicClassID() const =0
Returns a unique class ID POLYMORPHICALLY.
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: format.h:118
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:176
Calendar is an abstract base class for converting between a UDate object and a set of integer fields ...
Definition: calendar.h:165
virtual UBool operator==(const Format &other) const
Return true if the given Format objects are semantically equal.
C API: Calendar.
C++ API: Date/Time Pattern Generator.
SimpleDateFormat is a concrete class for formatting and parsing dates in a language-independent manne...
Definition: smpdtfmt.h:213
virtual void parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const =0
Parse a string to produce an object.
UnicodeString & format(const Formattable &obj, UnicodeString &appendTo, UErrorCode &status) const
Formats an object to produce a string.
DateFormat is an abstract class for a family of classes that convert dates and times from their inter...
Definition: datefmt.h:138
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:475
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:183
DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent man...
Definition: dtitvfmt.h:218
ParsePosition is a simple class used by Format and its subclasses to keep track of the current positi...
Definition: parsepos.h:47
C++ API: Format and parse dates in a language-independent manner.
#define NULL
Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
Definition: utypes.h:266
virtual UBool operator==(const Format &other) const =0
Return true if the given Format objects are semantically equal.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:187
#define U_EXPORT2
Definition: platform.h:338
This class represents a date interval.
Definition: dtintrv.h:32
virtual Format * clone() const =0
Clone this object polymorphically.
FieldPosition is a simple class used by Format and its subclasses to identify fields in formatted out...
Definition: fieldpos.h:106
uint16_t UChar
Define UChar to be wchar_t if that is 16 bits wide; always assumed to be unsigned.
Definition: umachine.h:299
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API If the compiler doesn't support namespaces...
Definition: uversion.h:184
signed char int8_t
Define 64 bit limits.
Definition: pwin32.h:127
DateIntervalInfo is a public class for encapsulating localizable date time interval patterns...
Definition: dtitvinf.h:168
UBool operator!=(const Format &other) const
Return true if the given Format objects are not semantically equal.
Definition: dtitvfmt.h:963
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:47
C++ API: Date Interval data type.
void * UClassID
UClassID is used to identify classes without using RTTI, since RTTI is not yet supported by all C++ c...
Definition: utypes.h:339
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:593
Base class for all formats.
Definition: format.h:93
Basic definitions for ICU, for both C and C++ APIs.
C++ API: Date/Time interval patterns for formatting date/time interval.
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:181
signed int int32_t
Define 64 bit limits.
Definition: pwin32.h:143
This class provides flexible generation of date format patterns, like "yy-MM-dd". ...
Definition: dtptngen.h:49
int8_t UBool
The ICU boolean type.
Definition: umachine.h:208
Format & operator=(const Format &)