|
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 |
|
16 U_NAMESPACE_BEGIN |
|
17 |
|
18 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateTimeRule) |
|
19 |
|
20 DateTimeRule::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 |
|
28 DateTimeRule::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 |
|
37 DateTimeRule::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 |
|
53 DateTimeRule::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 |
|
60 DateTimeRule::~DateTimeRule() { |
|
61 } |
|
62 |
|
63 DateTimeRule* |
|
64 DateTimeRule::clone() const { |
|
65 return new DateTimeRule(*this); |
|
66 } |
|
67 |
|
68 DateTimeRule& |
|
69 DateTimeRule::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 |
|
82 UBool |
|
83 DateTimeRule::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 |
|
95 UBool |
|
96 DateTimeRule::operator!=(const DateTimeRule& that) const { |
|
97 return !operator==(that); |
|
98 } |
|
99 |
|
100 DateTimeRule::DateRuleType |
|
101 DateTimeRule::getDateRuleType(void) const { |
|
102 return fDateRuleType; |
|
103 } |
|
104 |
|
105 DateTimeRule::TimeRuleType |
|
106 DateTimeRule::getTimeRuleType(void) const { |
|
107 return fTimeRuleType; |
|
108 } |
|
109 |
|
110 int32_t |
|
111 DateTimeRule::getRuleMonth(void) const { |
|
112 return fMonth; |
|
113 } |
|
114 |
|
115 int32_t |
|
116 DateTimeRule::getRuleDayOfMonth(void) const { |
|
117 return fDayOfMonth; |
|
118 } |
|
119 |
|
120 int32_t |
|
121 DateTimeRule::getRuleDayOfWeek(void) const { |
|
122 return fDayOfWeek; |
|
123 } |
|
124 |
|
125 int32_t |
|
126 DateTimeRule::getRuleWeekInMonth(void) const { |
|
127 return fWeekInMonth; |
|
128 } |
|
129 |
|
130 int32_t |
|
131 DateTimeRule::getRuleMillisInDay(void) const { |
|
132 return fMillisInDay; |
|
133 } |
|
134 |
|
135 U_NAMESPACE_END |
|
136 |
|
137 #endif /* #if !UCONFIG_NO_FORMATTING */ |
|
138 |
|
139 //eof |