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