• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/tzrule.h"
15 #include "unicode/tztrans.h"
16 
17 U_NAMESPACE_BEGIN
18 
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneTransition)19 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneTransition)
20 
21 TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to)
22 : UObject(), fTime(time), fFrom(from.clone()), fTo(to.clone()) {
23 }
24 
TimeZoneTransition()25 TimeZoneTransition::TimeZoneTransition()
26 : UObject(), fTime(0), fFrom(NULL), fTo(NULL) {
27 }
28 
TimeZoneTransition(const TimeZoneTransition & source)29 TimeZoneTransition::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 
~TimeZoneTransition()40 TimeZoneTransition::~TimeZoneTransition() {
41     if (fFrom != NULL) {
42         delete fFrom;
43     }
44     if (fTo != NULL) {
45         delete fTo;
46     }
47 }
48 
49 TimeZoneTransition*
clone(void) const50 TimeZoneTransition::clone(void) const {
51     return new TimeZoneTransition(*this);
52 }
53 
54 TimeZoneTransition&
operator =(const TimeZoneTransition & right)55 TimeZoneTransition::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 
64 UBool
operator ==(const TimeZoneTransition & that) const65 TimeZoneTransition::operator==(const TimeZoneTransition& that) const {
66     if (this == &that) {
67         return TRUE;
68     }
69     if (typeid(*this) != typeid(that)) {
70         return FALSE;
71     }
72     if (fTime != that.fTime) {
73         return FALSE;
74     }
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))) {
79             return TRUE;
80         }
81     }
82     return FALSE;
83 }
84 
85 UBool
operator !=(const TimeZoneTransition & that) const86 TimeZoneTransition::operator!=(const TimeZoneTransition& that) const {
87     return !operator==(that);
88 }
89 
90 void
setTime(UDate time)91 TimeZoneTransition::setTime(UDate time) {
92     fTime = time;
93 }
94 
95 void
setFrom(const TimeZoneRule & from)96 TimeZoneTransition::setFrom(const TimeZoneRule& from) {
97     if (fFrom != NULL) {
98         delete fFrom;
99     }
100     fFrom = from.clone();
101 }
102 
103 void
adoptFrom(TimeZoneRule * from)104 TimeZoneTransition::adoptFrom(TimeZoneRule* from) {
105     if (fFrom != NULL) {
106         delete fFrom;
107     }
108     fFrom = from;
109 }
110 
111 void
setTo(const TimeZoneRule & to)112 TimeZoneTransition::setTo(const TimeZoneRule& to) {
113     if (fTo != NULL) {
114         delete fTo;
115     }
116     fTo = to.clone();
117 }
118 
119 void
adoptTo(TimeZoneRule * to)120 TimeZoneTransition::adoptTo(TimeZoneRule* to) {
121     if (fTo != NULL) {
122         delete fTo;
123     }
124     fTo = to;
125 }
126 
127 UDate
getTime(void) const128 TimeZoneTransition::getTime(void) const {
129     return fTime;
130 }
131 
132 const TimeZoneRule*
getTo(void) const133 TimeZoneTransition::getTo(void) const {
134     return fTo;
135 }
136 
137 const TimeZoneRule*
getFrom(void) const138 TimeZoneTransition::getFrom(void) const {
139     return fFrom;
140 }
141 
142 U_NAMESPACE_END
143 
144 #endif
145 
146 //eof
147