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