]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/tztrans.cpp
ICU-511.25.tar.gz
[apple/icu.git] / icuSources / i18n / tztrans.cpp
CommitLineData
46f4442e
A
1/*
2*******************************************************************************
51004dcb 3* Copyright (C) 2007-2012, International Business Machines Corporation and
729e4ab9 4* others. All Rights Reserved.
46f4442e
A
5*******************************************************************************
6*/
7
51004dcb 8#include "utypeinfo.h" // for 'typeid' to work
729e4ab9 9
46f4442e
A
10#include "unicode/utypes.h"
11
12#if !UCONFIG_NO_FORMATTING
13
14#include "unicode/tzrule.h"
15#include "unicode/tztrans.h"
16
17U_NAMESPACE_BEGIN
18
19UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneTransition)
20
21TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to)
22: UObject(), fTime(time), fFrom(from.clone()), fTo(to.clone()) {
23}
24
25TimeZoneTransition::TimeZoneTransition()
26: UObject(), fTime(0), fFrom(NULL), fTo(NULL) {
27}
28
29TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition& source)
30: UObject(), fTime(source.fTime), fFrom(NULL), fTo(NULL) {
31 if (source.fFrom != NULL) {
32 fFrom = source.fFrom->clone();
33 }
34
35 if (source.fTo != NULL) {
36 fTo = source.fTo->clone();
37 }
38}
39
40TimeZoneTransition::~TimeZoneTransition() {
41 if (fFrom != NULL) {
42 delete fFrom;
43 }
44 if (fTo != NULL) {
45 delete fTo;
46 }
47}
48
49TimeZoneTransition*
50TimeZoneTransition::clone(void) const {
51 return new TimeZoneTransition(*this);
52}
53
54TimeZoneTransition&
55TimeZoneTransition::operator=(const TimeZoneTransition& right) {
56 if (this != &right) {
57 fTime = right.fTime;
58 setFrom(*right.fFrom);
59 setTo(*right.fTo);
60 }
61 return *this;
62}
63
64UBool
65TimeZoneTransition::operator==(const TimeZoneTransition& that) const {
66 if (this == &that) {
67 return TRUE;
68 }
729e4ab9 69 if (typeid(*this) != typeid(that)) {
46f4442e
A
70 return FALSE;
71 }
72 if (fTime != that.fTime) {
73 return FALSE;
74 }
729e4ab9
A
75 if ((fFrom == NULL && that.fFrom == NULL)
76 || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) {
77 if ((fTo == NULL && that.fTo == NULL)
78 || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) {
46f4442e
A
79 return TRUE;
80 }
81 }
82 return FALSE;
83}
84
85UBool
86TimeZoneTransition::operator!=(const TimeZoneTransition& that) const {
87 return !operator==(that);
88}
89
90void
91TimeZoneTransition::setTime(UDate time) {
92 fTime = time;
93}
94
95void
96TimeZoneTransition::setFrom(const TimeZoneRule& from) {
97 if (fFrom != NULL) {
98 delete fFrom;
99 }
100 fFrom = from.clone();
101}
102
103void
104TimeZoneTransition::adoptFrom(TimeZoneRule* from) {
105 if (fFrom != NULL) {
106 delete fFrom;
107 }
108 fFrom = from;
109}
110
111void
112TimeZoneTransition::setTo(const TimeZoneRule& to) {
113 if (fTo != NULL) {
114 delete fTo;
115 }
116 fTo = to.clone();
117}
118
119void
120TimeZoneTransition::adoptTo(TimeZoneRule* to) {
121 if (fTo != NULL) {
122 delete fTo;
123 }
124 fTo = to;
125}
126
127UDate
128TimeZoneTransition::getTime(void) const {
129 return fTime;
130}
131
132const TimeZoneRule*
133TimeZoneTransition::getTo(void) const {
134 return fTo;
135}
136
137const TimeZoneRule*
138TimeZoneTransition::getFrom(void) const {
139 return fFrom;
140}
141
142U_NAMESPACE_END
143
144#endif
145
146//eof