]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/reldtfmt.h
ICU-64243.0.1.tar.gz
[apple/icu.git] / icuSources / i18n / reldtfmt.h
index 975732414ba54c3563b3b1bb6abbe94e470aac21..efb6a110cc3794977a42c1cee21d6ef8fcaf6e61 100644 (file)
@@ -1,6 +1,8 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
-* Copyright (C) 2007-2009, International Business Machines Corporation and    *
+* Copyright (C) 2007-2016, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
 #include "unicode/utypes.h"
 
 /**
- * \file 
+ * \file
  * \brief C++ API: Format and parse relative dates and times.
  */
+
 #if !UCONFIG_NO_FORMATTING
 
 #include "unicode/datefmt.h"
+#include "unicode/smpdtfmt.h"
+#include "unicode/brkiter.h"
 
 U_NAMESPACE_BEGIN
 
 // forward declarations
-class MessageFormat;
+class DateFormatSymbols;
+class SimpleFormatter;
 
 // internal structure used for caching strings
 struct URelativeString;
 
 /**
- * This class is normally accessed using the kRelative or k...Relative values of EStyle as parameters to DateFormat::createDateInstance.
- * 
- * Example: 
+ * This class is normally accessed using the kRelative or k...Relative values of EStyle as
+ * parameters to DateFormat::createDateInstance.
+ *
+ * Example:
  *     DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc);
- * 
- * @draft ICU 3.8
+ *
+ * @internal ICU 3.8
  */
 
 class RelativeDateFormat : public DateFormat {
@@ -43,19 +49,19 @@ public:
     // overrides
     /**
      * Copy constructor.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     RelativeDateFormat(const RelativeDateFormat&);
 
     /**
      * Assignment operator.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     RelativeDateFormat& operator=(const RelativeDateFormat&);
 
     /**
      * Destructor.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual ~RelativeDateFormat();
 
@@ -63,7 +69,7 @@ public:
      * Clone this Format object polymorphically. The caller owns the result and
      * should delete it when done.
      * @return    A copy of the object.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual Format* clone(void) const;
 
@@ -72,10 +78,13 @@ public:
      * of different subclasses are considered unequal.
      * @param other    the object to be compared with.
      * @return         true if the given Format objects are semantically equal.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual UBool operator==(const Format& other) const;
 
+
+    using DateFormat::format;
+
     /**
      * Format a date or time, which is the standard millis since 24:00 GMT, Jan
      * 1, 1970. Overrides DateFormat pure virtual method.
@@ -90,7 +99,7 @@ public:
      * @param pos       The formatting position. On input: an alignment field,
      *                  if desired. On output: the offsets of the alignment field.
      * @return          Reference to 'appendTo' parameter.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual UnicodeString& format(  Calendar& cal,
                                     UnicodeString& appendTo,
@@ -108,7 +117,7 @@ public:
      *                  On output: the offsets of the alignment field.
      * @param status    Output param filled with success/failure status.
      * @return          Reference to 'appendTo' parameter.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual UnicodeString& format(const Formattable& obj,
                                   UnicodeString& appendTo,
@@ -133,11 +142,11 @@ public:
      *              output, the position at which parsing terminated, or the
      *              start position if the parse failed.
      * @return      A valid UDate if the input could be parsed.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual void parse( const UnicodeString& text,
                         Calendar& cal,
-                        ParsePosition& pos) const;    
+                        ParsePosition& pos) const;
 
     /**
      * Parse a date/time string starting at the given parse position. For
@@ -156,7 +165,7 @@ public:
      *              output, the position at which parsing terminated, or the
      *              start position if the parse failed.
      * @return      A valid UDate if the input could be parsed.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     UDate parse( const UnicodeString& text,
                  ParsePosition& pos) const;
@@ -175,7 +184,7 @@ public:
      * @param status Filled in with U_ZERO_ERROR if the parse was successful, and with
      *              an error value if there was a parse error.
      * @return      A valid UDate if the input could be parsed.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual UDate parse( const UnicodeString& text,
                         UErrorCode& status) const;
@@ -216,50 +225,83 @@ public:
      */
     virtual void applyPatterns(const UnicodeString& datePattern, const UnicodeString& timePattern, UErrorCode &status);
 
+    /**
+     * Gets the date/time formatting symbols (this is an object carrying
+     * the various strings and other symbols used in formatting: e.g., month
+     * names and abbreviations, time zone names, AM/PM strings, etc.)
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     * @internal ICU 4.8
+     */
+    virtual const DateFormatSymbols* getDateFormatSymbols(void) const;
+
+    /**
+     * Set a particular UDisplayContext value in the formatter, such as
+     * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. Note: For getContext, see
+     * DateFormat.
+     * @param value The UDisplayContext value to set.
+     * @param status Input/output status. If at entry this indicates a failure
+     *               status, the function will do nothing; otherwise this will be
+     *               updated with any new status from the function. 
+     * @internal ICU 53
+     */
+    virtual void setContext(UDisplayContext value, UErrorCode& status);
 
 private:
-    DateFormat *fDateFormat; // the held date format 
-    DateFormat *fTimeFormat; // the held time format
-    MessageFormat *fCombinedFormat; //  the {0} {1} format. 
-    
+    SimpleDateFormat *fDateTimeFormatter;
+    UnicodeString fDatePattern;
+    UnicodeString fTimePattern;
+    SimpleFormatter *fCombinedFormat;  // the {0} {1} format.
+
     UDateFormatStyle fDateStyle;
-    UDateFormatStyle fTimeStyle;
     Locale  fLocale;
-    
-    int32_t fDayMin;    // day id of lowest #
-    int32_t fDayMax;    // day id of highest #
+
     int32_t fDatesLen;    // Length of array
     URelativeString *fDates; // array of strings
-    
-    
+
+    UBool fCombinedHasDateAtStart;
+    UBool fCapitalizationInfoSet;
+    UBool fCapitalizationOfRelativeUnitsForUIListMenu;
+    UBool fCapitalizationOfRelativeUnitsForStandAlone;
+#if !UCONFIG_NO_BREAK_ITERATION
+    BreakIterator* fCapitalizationBrkIter;
+#else
+    UObject* fCapitalizationBrkIter;
+#endif
+
     /**
      * Get the string at a specific offset.
      * @param day day offset ( -1, 0, 1, etc.. )
-     * @param len on output, length of string. 
+     * @param len on output, length of string.
      * @return the string, or NULL if none at that location.
      */
     const UChar *getStringForDay(int32_t day, int32_t &len, UErrorCode &status) const;
-    
-    /** 
+
+    /**
      * Load the Date string array
      */
     void loadDates(UErrorCode &status);
-    
+
+    /**
+     * Set fCapitalizationOfRelativeUnitsForUIListMenu, fCapitalizationOfRelativeUnitsForStandAlone
+     */
+    void initCapitalizationContextInfo(const Locale& thelocale);
+
     /**
      * @return the number of days in "until-now"
      */
     static int32_t dayDifference(Calendar &until, UErrorCode &status);
-    
+
     /**
      * initializes fCalendar from parameters.  Returns fCalendar as a convenience.
      * @param adoptZone  Zone to be adopted, or NULL for TimeZone::createDefault().
      * @param locale Locale of the calendar
      * @param status Error code
      * @return the newly constructed fCalendar
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     Calendar* initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErrorCode& status);
-    
+
 public:
     /**
      * Return the class ID for this class. This is useful only for comparing to
@@ -270,7 +312,7 @@ public:
      * .       erived::getStaticClassID()) ...
      * </pre>
      * @return          The class ID for all objects of this class.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
 
@@ -283,15 +325,31 @@ public:
      * @return          The class ID for this object. All objects of a
      *                  given class have the same class ID.  Objects of
      *                  other classes have different class IDs.
-     * @draft ICU 3.8
+     * @internal ICU 3.8
      */
     virtual UClassID getDynamicClassID(void) const;
+
+    /**
+     * Apple addition
+     * This is for ICU internal use only. Please do not use.
+     * Get the capitalization break iterator of this relative date formatter.
+     * Should be cloned before using it.
+     * It is used in udat.
+     *
+     * @return   capitalization break iterator
+     * @internal
+     */
+    BreakIterator* getCapitalizationBrkIter(void) const;
 };
 
+inline BreakIterator*
+RelativeDateFormat::getCapitalizationBrkIter() const
+{
+    return fCapitalizationBrkIter;
+}
 
 U_NAMESPACE_END
 
 #endif /* #if !UCONFIG_NO_FORMATTING */
 
 #endif // RELDTFMT_H
-//eof