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