Index: icu46/source/i18n/unicode/dtrule.h |
=================================================================== |
--- icu46/source/i18n/unicode/dtrule.h (revision 0) |
+++ icu46/source/i18n/unicode/dtrule.h (revision 0) |
@@ -0,0 +1,250 @@ |
+/* |
+******************************************************************************* |
+* Copyright (C) 2007-2008, International Business Machines Corporation and * |
+* others. All Rights Reserved. * |
+******************************************************************************* |
+*/ |
+#ifndef DTRULE_H |
+#define DTRULE_H |
+ |
+#include "unicode/utypes.h" |
+ |
+/** |
+ * \file |
+ * \brief C++ API: Rule for specifying date and time in an year |
+ */ |
+ |
+#if !UCONFIG_NO_FORMATTING |
+ |
+#include "unicode/uobject.h" |
+ |
+U_NAMESPACE_BEGIN |
+/** |
+ * <code>DateTimeRule</code> is a class representing a time in a year by |
+ * a rule specified by month, day of month, day of week and |
+ * time in the day. |
+ * |
+ * @stable ICU 3.8 |
+ */ |
+class U_I18N_API DateTimeRule : public UObject { |
+public: |
+ |
+ /** |
+ * Date rule type constants. |
+ * @stable ICU 3.8 |
+ */ |
+ enum DateRuleType { |
+ DOM = 0, /**< The exact day of month, |
+ for example, March 11. */ |
+ DOW, /**< The Nth occurence of the day of week, |
+ for example, 2nd Sunday in March. */ |
+ DOW_GEQ_DOM, /**< The first occurence of the day of week on or after the day of monnth, |
+ for example, first Sunday on or after March 8. */ |
+ DOW_LEQ_DOM /**< The last occurence of the day of week on or before the day of month, |
+ for example, first Sunday on or before March 14. */ |
+ }; |
+ |
+ /** |
+ * Time rule type constants. |
+ * @stable ICU 3.8 |
+ */ |
+ enum TimeRuleType { |
+ WALL_TIME = 0, /**< The local wall clock time */ |
+ STANDARD_TIME, /**< The local standard time */ |
+ UTC_TIME /**< The UTC time */ |
+ }; |
+ |
+ /** |
+ * Constructs a <code>DateTimeRule</code> by the day of month and |
+ * the time rule. The date rule type for an instance created by |
+ * this constructor is <code>DOM</code>. |
+ * |
+ * @param month The rule month, for example, <code>Calendar::JANUARY</code> |
+ * @param dayOfMonth The day of month, 1-based. |
+ * @param millisInDay The milliseconds in the rule date. |
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code> |
+ * or <code>UTC_TIME</code>. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule(int32_t month, int32_t dayOfMonth, |
+ int32_t millisInDay, TimeRuleType timeType); |
+ |
+ /** |
+ * Constructs a <code>DateTimeRule</code> by the day of week and its oridinal |
+ * number and the time rule. The date rule type for an instance created |
+ * by this constructor is <code>DOW</code>. |
+ * |
+ * @param month The rule month, for example, <code>Calendar::JANUARY</code>. |
+ * @param weekInMonth The ordinal number of the day of week. Negative number |
+ * may be used for specifying a rule date counted from the |
+ * end of the rule month. |
+ * @param dayOfWeek The day of week, for example, <code>Calendar::SUNDAY</code>. |
+ * @param millisInDay The milliseconds in the rule date. |
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code> |
+ * or <code>UTC_TIME</code>. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek, |
+ int32_t millisInDay, TimeRuleType timeType); |
+ |
+ /** |
+ * Constructs a <code>DateTimeRule</code> by the first/last day of week |
+ * on or after/before the day of month and the time rule. The date rule |
+ * type for an instance created by this constructor is either |
+ * <code>DOM_GEQ_DOM</code> or <code>DOM_LEQ_DOM</code>. |
+ * |
+ * @param month The rule month, for example, <code>Calendar::JANUARY</code> |
+ * @param dayOfMonth The day of month, 1-based. |
+ * @param dayOfWeek The day of week, for example, <code>Calendar::SUNDAY</code>. |
+ * @param after true if the rule date is on or after the day of month. |
+ * @param millisInDay The milliseconds in the rule date. |
+ * @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code> |
+ * or <code>UTC_TIME</code>. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after, |
+ int32_t millisInDay, TimeRuleType timeType); |
+ |
+ /** |
+ * Copy constructor. |
+ * @param source The DateTimeRule object to be copied. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule(const DateTimeRule& source); |
+ |
+ /** |
+ * Destructor. |
+ * @stable ICU 3.8 |
+ */ |
+ ~DateTimeRule(); |
+ |
+ /** |
+ * Clone this DateTimeRule object polymorphically. The caller owns the result and |
+ * should delete it when done. |
+ * @return A copy of the object. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule* clone(void) const; |
+ |
+ /** |
+ * Assignment operator. |
+ * @param right The object to be copied. |
+ * @stable ICU 3.8 |
+ */ |
+ DateTimeRule& operator=(const DateTimeRule& right); |
+ |
+ /** |
+ * Return true if the given DateTimeRule objects are semantically equal. Objects |
+ * of different subclasses are considered unequal. |
+ * @param that The object to be compared with. |
+ * @return true if the given DateTimeRule objects are semantically equal. |
+ * @stable ICU 3.8 |
+ */ |
+ UBool operator==(const DateTimeRule& that) const; |
+ |
+ /** |
+ * Return true if the given DateTimeRule objects are semantically unequal. Objects |
+ * of different subclasses are considered unequal. |
+ * @param that The object to be compared with. |
+ * @return true if the given DateTimeRule objects are semantically unequal. |
+ * @stable ICU 3.8 |
+ */ |
+ UBool operator!=(const DateTimeRule& that) const; |
+ |
+ /** |
+ * Gets the date rule type, such as <code>DOM</code> |
+ * @return The date rule type. |
+ * @stable ICU 3.8 |
+ */ |
+ DateRuleType getDateRuleType(void) const; |
+ |
+ /** |
+ * Gets the time rule type |
+ * @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code> |
+ * or <code>UTC_TIME</code>. |
+ * @stable ICU 3.8 |
+ */ |
+ TimeRuleType getTimeRuleType(void) const; |
+ |
+ /** |
+ * Gets the rule month. |
+ * @return The rule month. |
+ * @stable ICU 3.8 |
+ */ |
+ int32_t getRuleMonth(void) const; |
+ |
+ /** |
+ * Gets the rule day of month. When the date rule type |
+ * is <code>DOW</code>, the value is always 0. |
+ * @return The rule day of month |
+ * @stable ICU 3.8 |
+ */ |
+ int32_t getRuleDayOfMonth(void) const; |
+ |
+ /** |
+ * Gets the rule day of week. When the date rule type |
+ * is <code>DOM</code>, the value is always 0. |
+ * @return The rule day of week. |
+ * @stable ICU 3.8 |
+ */ |
+ int32_t getRuleDayOfWeek(void) const; |
+ |
+ /** |
+ * Gets the ordinal number of the occurence of the day of week |
+ * in the month. When the date rule type is not <code>DOW</code>, |
+ * the value is always 0. |
+ * @return The rule day of week ordinal number in the month. |
+ * @stable ICU 3.8 |
+ */ |
+ int32_t getRuleWeekInMonth(void) const; |
+ |
+ /** |
+ * Gets the rule time in the rule day. |
+ * @return The time in the rule day in milliseconds. |
+ * @stable ICU 3.8 |
+ */ |
+ int32_t getRuleMillisInDay(void) const; |
+ |
+private: |
+ int32_t fMonth; |
+ int32_t fDayOfMonth; |
+ int32_t fDayOfWeek; |
+ int32_t fWeekInMonth; |
+ int32_t fMillisInDay; |
+ DateRuleType fDateRuleType; |
+ TimeRuleType fTimeRuleType; |
+ |
+public: |
+ /** |
+ * Return the class ID for this class. This is useful only for comparing to |
+ * a return value from getDynamicClassID(). For example: |
+ * <pre> |
+ * . Base* polymorphic_pointer = createPolymorphicObject(); |
+ * . if (polymorphic_pointer->getDynamicClassID() == |
+ * . erived::getStaticClassID()) ... |
+ * </pre> |
+ * @return The class ID for all objects of this class. |
+ * @stable ICU 3.8 |
+ */ |
+ static UClassID U_EXPORT2 getStaticClassID(void); |
+ |
+ /** |
+ * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This |
+ * method is to implement a simple version of RTTI, since not all C++ |
+ * compilers support genuine RTTI. Polymorphic operator==() and clone() |
+ * methods call this method. |
+ * |
+ * @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. |
+ * @stable ICU 3.8 |
+ */ |
+ virtual UClassID getDynamicClassID(void) const; |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif /* #if !UCONFIG_NO_FORMATTING */ |
+ |
+#endif // DTRULE_H |
+//eof |
Property changes on: icu46/source/i18n/unicode/dtrule.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |