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