150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho******************************************************************************* 383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius* Copyright (C) 2009-2011, International Business Machines Corporation and 483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius* others. All Rights Reserved. 550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho******************************************************************************* 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \file 1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \brief C API: VTimeZone classes 1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 1250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utypes.h" 1427f654740f2a26ad62a5c155af9199af9e69b889claireho 1527f654740f2a26ad62a5c155af9199af9e69b889claireho#if !UCONFIG_NO_FORMATTING 1627f654740f2a26ad62a5c155af9199af9e69b889claireho 1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uobject.h" 1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "vzone.h" 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/vtzone.h" 2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "cmemory.h" 2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/ustring.h" 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/parsepos.h" 2350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_USE 2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI VZone* U_EXPORT2 2750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_openID(const UChar* ID, int32_t idLength){ 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s(idLength==-1, ID, idLength); 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return (VZone*) (VTimeZone::createVTimeZoneByID(s)); 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI VZone* U_EXPORT2 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_openData(const UChar* vtzdata, int32_t vtzdataLength, UErrorCode& status) { 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s(vtzdataLength==-1, vtzdata, vtzdataLength); 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return (VZone*) (VTimeZone::createVTimeZone(s,status)); 3650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_close(VZone* zone) { 4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete (VTimeZone*)zone; 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI VZone* U_EXPORT2 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_clone(const VZone *zone) { 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return (VZone*) (((VTimeZone*)zone)->VTimeZone::clone()); 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 4750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 4950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_equals(const VZone* zone1, const VZone* zone2) { 5050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return *(const VTimeZone*)zone1 == *(const VTimeZone*)zone2; 5150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 5250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getTZURL(VZone* zone, UChar* & url, int32_t & urlLength) { 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s; 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UBool b = ((VTimeZone*)zone)->VTimeZone::getTZURL(s); 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho urlLength = s.length(); 5950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(url,s.getBuffer(),urlLength); 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return b; 6250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 6550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_setTZURL(VZone* zone, UChar* url, int32_t urlLength) { 6650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s(urlLength==-1, url, urlLength); 6783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius ((VTimeZone*)zone)->VTimeZone::setTZURL(s); 6850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 7150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getLastModified(VZone* zone, UDate& lastModified) { 7250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getLastModified(lastModified); 7350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 7450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 7650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_setLastModified(VZone* zone, UDate lastModified) { 7750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::setLastModified(lastModified); 7850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 7950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 8150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_write(VZone* zone, UChar* & result, int32_t & resultLength, UErrorCode& status) { 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s; 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ((VTimeZone*)zone)->VTimeZone::write(s, status); 8450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho resultLength = s.length(); 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = (UChar*)uprv_malloc(resultLength); 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(result,s.getBuffer(),resultLength); 8850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 9050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 9150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 9250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_writeFromStart(VZone* zone, UDate start, UChar* & result, int32_t & resultLength, UErrorCode& status) { 9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s; 9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ((VTimeZone*)zone)->VTimeZone::write(start, s, status); 9650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho resultLength = s.length(); 9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = (UChar*)uprv_malloc(resultLength); 9950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(result,s.getBuffer(),resultLength); 10050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_writeSimple(VZone* zone, UDate time, UChar* & result, int32_t & resultLength, UErrorCode& status) { 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s; 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ((VTimeZone*)zone)->VTimeZone::writeSimple(time, s, status); 10850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho resultLength = s.length(); 11050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = (UChar*)uprv_malloc(resultLength); 11150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(result,s.getBuffer(),resultLength); 11250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 11550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 11750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getOffset(VZone* zone, uint8_t era, int32_t year, int32_t month, int32_t day, 11850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uint8_t dayOfWeek, int32_t millis, UErrorCode& status) { 11950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getOffset(era, year, month, day, dayOfWeek, millis, status); 12050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 12150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 12250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 12350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getOffset2(VZone* zone, uint8_t era, int32_t year, int32_t month, int32_t day, 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho uint8_t dayOfWeek, int32_t millis, 12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t monthLength, UErrorCode& status) { 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getOffset(era, year, month, day, dayOfWeek, millis, monthLength, status); 12750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 12950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 13050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getOffset3(VZone* zone, UDate date, UBool local, int32_t& rawOffset, 13150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t& dstOffset, UErrorCode& ec) { 13250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getOffset(date, local, rawOffset, dstOffset, ec); 13350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 13450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 13550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 13650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_setRawOffset(VZone* zone, int32_t offsetMillis) { 13750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::setRawOffset(offsetMillis); 13850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 13950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 14150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getRawOffset(VZone* zone) { 14250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getRawOffset(); 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_useDaylightTime(VZone* zone) { 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::useDaylightTime(); 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 14950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 15050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 15150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_inDaylightTime(VZone* zone, UDate date, UErrorCode& status) { 15250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::inDaylightTime(date, status); 15350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 15450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 15550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 15650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_hasSameRules(VZone* zone, const VZone* other) { 15750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::hasSameRules(*(VTimeZone*)other); 15850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 15950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 16050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 16150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getNextTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result) { 16250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getNextTransition(base, inclusive, *(TimeZoneTransition*)result); 16350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 16450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 16550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 16650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getPreviousTransition(VZone* zone, UDate base, UBool inclusive, ZTrans* result) { 16750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getPreviousTransition(base, inclusive, *(TimeZoneTransition*)result); 16850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 16950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 17050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 17150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_countTransitionRules(VZone* zone, UErrorCode& status) { 17250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::countTransitionRules(status); 17350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 17450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 17550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UClassID U_EXPORT2 17650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getStaticClassID(VZone* zone) { 17750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getStaticClassID(); 17850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 17950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 18050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UClassID U_EXPORT2 18150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovzone_getDynamicClassID(VZone* zone) { 18250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((VTimeZone*)zone)->VTimeZone::getDynamicClassID(); 18350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 18427f654740f2a26ad62a5c155af9199af9e69b889claireho 18527f654740f2a26ad62a5c155af9199af9e69b889claireho#endif 186