1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*******************************************************************************
354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius* Copyright (C) 2007-2012, International Business Machines Corporation and
427f654740f2a26ad62a5c155af9199af9e69b889claireho* others. All Rights Reserved.
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*******************************************************************************
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "utypeinfo.h"  // 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