16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2007-2012, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "utypeinfo.h" // for 'typeid' to work 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/tzrule.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/tztrans.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUOBJECT_DEFINE_RTTI_IMPLEMENTATION(TimeZoneTransition) 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to) 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org: UObject(), fTime(time), fFrom(from.clone()), fTo(to.clone()) { 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::TimeZoneTransition() 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org: UObject(), fTime(0), fFrom(NULL), fTo(NULL) { 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::TimeZoneTransition(const TimeZoneTransition& source) 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org: UObject(), fTime(source.fTime), fFrom(NULL), fTo(NULL) { 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (source.fFrom != NULL) { 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fFrom = source.fFrom->clone(); 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (source.fTo != NULL) { 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fTo = source.fTo->clone(); 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::~TimeZoneTransition() { 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fFrom != NULL) { 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fFrom; 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fTo != NULL) { 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fTo; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition* 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::clone(void) const { 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return new TimeZoneTransition(*this); 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition& 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::operator=(const TimeZoneTransition& right) { 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (this != &right) { 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fTime = right.fTime; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org setFrom(*right.fFrom); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org setTo(*right.fTo); 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return *this; 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::operator==(const TimeZoneTransition& that) const { 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (this == &that) { 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return TRUE; 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (typeid(*this) != typeid(that)) { 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fTime != that.fTime) { 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if ((fFrom == NULL && that.fFrom == NULL) 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org || (fFrom != NULL && that.fFrom != NULL && *fFrom == *(that.fFrom))) { 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if ((fTo == NULL && that.fTo == NULL) 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org || (fTo != NULL && that.fTo != NULL && *fTo == *(that.fTo))) { 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return TRUE; 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::operator!=(const TimeZoneTransition& that) const { 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return !operator==(that); 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::setTime(UDate time) { 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fTime = time; 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::setFrom(const TimeZoneRule& from) { 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fFrom != NULL) { 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fFrom; 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fFrom = from.clone(); 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::adoptFrom(TimeZoneRule* from) { 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fFrom != NULL) { 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fFrom; 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fFrom = from; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::setTo(const TimeZoneRule& to) { 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fTo != NULL) { 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fTo; 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fTo = to.clone(); 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::adoptTo(TimeZoneRule* to) { 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (fTo != NULL) { 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org delete fTo; 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org fTo = to; 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUDate 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::getTime(void) const { 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fTime; 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst TimeZoneRule* 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::getTo(void) const { 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fTo; 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst TimeZoneRule* 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgTimeZoneTransition::getFrom(void) const { 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return fFrom; 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//eof 147