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