]>
Commit | Line | Data |
---|---|---|
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 |