| // © 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| /* |
| ******************************************************************************* |
| * Copyright (C) 2007-2012, International Business Machines Corporation and |
| * others. All Rights Reserved. |
| ******************************************************************************* |
| */ |
| |
| #include "utypeinfo.h" // for 'typeid' to work |
| |
| #include "unicode/utypes.h" |
| |
| #if !UCONFIG_NO_FORMATTING |
| |
| #include "unicode/tzrule.h" |
| #include "unicode/tztrans.h" |
| |
| U_NAMESPACE_BEGIN |
| |
| UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneTransition) |
| |
| TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to) |
| : UObject(), fTime(time), fFrom(from.clone()), fTo(to.clone()) { |
| } |
| |
| TimeZoneTransition::TimeZoneTransition() |
| : UObject(), fTime(0), fFrom(NULL), fTo(NULL) { |
| } |
| |
| TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition& source) |
| : UObject(), fTime(source.fTime), fFrom(NULL), fTo(NULL) { |
| if (source.fFrom != NULL) { |
| fFrom = source.fFrom->clone(); |
| } |
| |
| if (source.fTo != NULL) { |
| fTo = source.fTo->clone(); |
| } |
| } |
| |
| TimeZoneTransition::~TimeZoneTransition() { |
| if (fFrom != NULL) { |
| delete fFrom; |
| } |
| if (fTo != NULL) { |
| delete fTo; |
| } |
| } |
| |
| TimeZoneTransition* |
| TimeZoneTransition::clone(void) const { |
| return new TimeZoneTransition(*this); |
| } |
| |
| TimeZoneTransition& |
| TimeZoneTransition::operator=(const TimeZoneTransition& right) { |
| if (this != &right) { |
| fTime = right.fTime; |
| setFrom(*right.fFrom); |
| setTo(*right.fTo); |
| } |
| return *this; |
| } |
| |
| UBool |
| TimeZoneTransition::operator==(const TimeZoneTransition& that) const { |
| if (this == &that) { |
| return TRUE; |
| } |
| if (typeid(*this) != typeid(that)) { |
| return FALSE; |
| } |
| if (fTime != that.fTime) { |
| return FALSE; |
| } |
| if ((fFrom == NULL && that.fFrom == NULL) |
| || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) { |
| if ((fTo == NULL && that.fTo == NULL) |
| || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) { |
| return TRUE; |
| } |
| } |
| return FALSE; |
| } |
| |
| UBool |
| TimeZoneTransition::operator!=(const TimeZoneTransition& that) const { |
| return !operator==(that); |
| } |
| |
| void |
| TimeZoneTransition::setTime(UDate time) { |
| fTime = time; |
| } |
| |
| void |
| TimeZoneTransition::setFrom(const TimeZoneRule& from) { |
| if (fFrom != NULL) { |
| delete fFrom; |
| } |
| fFrom = from.clone(); |
| } |
| |
| void |
| TimeZoneTransition::adoptFrom(TimeZoneRule* from) { |
| if (fFrom != NULL) { |
| delete fFrom; |
| } |
| fFrom = from; |
| } |
| |
| void |
| TimeZoneTransition::setTo(const TimeZoneRule& to) { |
| if (fTo != NULL) { |
| delete fTo; |
| } |
| fTo = to.clone(); |
| } |
| |
| void |
| TimeZoneTransition::adoptTo(TimeZoneRule* to) { |
| if (fTo != NULL) { |
| delete fTo; |
| } |
| fTo = to; |
| } |
| |
| UDate |
| TimeZoneTransition::getTime(void) const { |
| return fTime; |
| } |
| |
| const TimeZoneRule* |
| TimeZoneTransition::getTo(void) const { |
| return fTo; |
| } |
| |
| const TimeZoneRule* |
| TimeZoneTransition::getFrom(void) const { |
| return fFrom; |
| } |
| |
| U_NAMESPACE_END |
| |
| #endif |
| |
| //eof |