1 /* 2 ******************************************************************************* 3 * Copyright (C) 2007, International Business Machines Corporation and * 4 * others. All Rights Reserved. * 5 ******************************************************************************* 6 */ 7 8 #include "unicode/utypes.h" 9 10 #if !UCONFIG_NO_FORMATTING 11 12 #include "unicode/dtrule.h" 13 14 U_NAMESPACE_BEGIN 15 16 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateTimeRule) 17 18 DateTimeRule::DateTimeRule(int32_t month, 19 int32_t dayOfMonth, 20 int32_t millisInDay, 21 TimeRuleType timeType) 22 : fMonth(month), fDayOfMonth(dayOfMonth), fDayOfWeek(0), fWeekInMonth(0), fMillisInDay(millisInDay), 23 fDateRuleType(DateTimeRule::DOM), fTimeRuleType(timeType) { 24 } 25 26 DateTimeRule::DateTimeRule(int32_t month, 27 int32_t weekInMonth, 28 int32_t dayOfWeek, 29 int32_t millisInDay, 30 TimeRuleType timeType) 31 : fMonth(month), fDayOfMonth(0), fDayOfWeek(dayOfWeek), fWeekInMonth(weekInMonth), fMillisInDay(millisInDay), 32 fDateRuleType(DateTimeRule::DOW), fTimeRuleType(timeType) { 33 } 34 35 DateTimeRule::DateTimeRule(int32_t month, 36 int32_t dayOfMonth, 37 int32_t dayOfWeek, 38 UBool after, 39 int32_t millisInDay, 40 TimeRuleType timeType) 41 : UObject(), 42 fMonth(month), fDayOfMonth(dayOfMonth), fDayOfWeek(dayOfWeek), fWeekInMonth(0), fMillisInDay(millisInDay), 43 fTimeRuleType(timeType) { 44 if (after) { 45 fDateRuleType = DateTimeRule::DOW_GEQ_DOM; 46 } else { 47 fDateRuleType = DateTimeRule::DOW_LEQ_DOM; 48 } 49 } 50 51 DateTimeRule::DateTimeRule(const DateTimeRule& source) 52 : UObject(source), 53 fMonth(source.fMonth), fDayOfMonth(source.fDayOfMonth), fDayOfWeek(source.fDayOfWeek), 54 fWeekInMonth(source.fWeekInMonth), fMillisInDay(source.fMillisInDay), 55 fDateRuleType(source.fDateRuleType), fTimeRuleType(source.fTimeRuleType) { 56 } 57 58 DateTimeRule::~DateTimeRule() { 59 } 60 61 DateTimeRule* 62 DateTimeRule::clone() const { 63 return new DateTimeRule(*this); 64 } 65 66 DateTimeRule& 67 DateTimeRule::operator=(const DateTimeRule& right) { 68 if (this != &right) { 69 fMonth = right.fMonth; 70 fDayOfMonth = right.fDayOfMonth; 71 fDayOfWeek = right.fDayOfWeek; 72 fWeekInMonth = right.fWeekInMonth; 73 fMillisInDay = right.fMillisInDay; 74 fDateRuleType = right.fDateRuleType; 75 fTimeRuleType = right.fTimeRuleType; 76 } 77 return *this; 78 } 79 80 UBool 81 DateTimeRule::operator==(const DateTimeRule& that) const { 82 return ((this == &that) || 83 (getDynamicClassID() == that.getDynamicClassID() && 84 fMonth == that.fMonth && 85 fDayOfMonth == that.fDayOfMonth && 86 fDayOfWeek == that.fDayOfWeek && 87 fWeekInMonth == that.fWeekInMonth && 88 fMillisInDay == that.fMillisInDay && 89 fDateRuleType == that.fDateRuleType && 90 fTimeRuleType == that.fTimeRuleType)); 91 } 92 93 UBool 94 DateTimeRule::operator!=(const DateTimeRule& that) const { 95 return !operator==(that); 96 } 97 98 DateTimeRule::DateRuleType 99 DateTimeRule::getDateRuleType(void) const { 100 return fDateRuleType; 101 } 102 103 DateTimeRule::TimeRuleType 104 DateTimeRule::getTimeRuleType(void) const { 105 return fTimeRuleType; 106 } 107 108 int32_t 109 DateTimeRule::getRuleMonth(void) const { 110 return fMonth; 111 } 112 113 int32_t 114 DateTimeRule::getRuleDayOfMonth(void) const { 115 return fDayOfMonth; 116 } 117 118 int32_t 119 DateTimeRule::getRuleDayOfWeek(void) const { 120 return fDayOfWeek; 121 } 122 123 int32_t 124 DateTimeRule::getRuleWeekInMonth(void) const { 125 return fWeekInMonth; 126 } 127 128 int32_t 129 DateTimeRule::getRuleMillisInDay(void) const { 130 return fMillisInDay; 131 } 132 133 U_NAMESPACE_END 134 135 #endif /* #if !UCONFIG_NO_FORMATTING */ 136 137 //eof 138