zrule.cpp revision 27f654740f2a26ad62a5c155af9199af9e69b889
150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/* 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho******************************************************************************* 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Copyright (C) 2009-2010, International Business Machines Corporation and * 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* others. All Rights Reserved. * 550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho******************************************************************************* 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho*/ 750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \file 1050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \brief C API: Time zone rule classes 1150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 1250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/utypes.h" 1427f654740f2a26ad62a5c155af9199af9e69b889claireho 1527f654740f2a26ad62a5c155af9199af9e69b889claireho#if !UCONFIG_NO_FORMATTING 1627f654740f2a26ad62a5c155af9199af9e69b889claireho 1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/uobject.h" 1850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "zrule.h" 1950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/tzrule.h" 2050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "cmemory.h" 2150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/ustring.h" 2250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/parsepos.h" 2350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_USE 2550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/********************************************************************* 2750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * ZRule API 2850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho *********************************************************************/ 2950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 3150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_close(ZRule* rule) { 3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete (TimeZoneRule*)rule; 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 3650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_equals(const ZRule* rule1, const ZRule* rule2) { 3750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return *(const TimeZoneRule*)rule1 == *(const TimeZoneRule*)rule2; 3850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 4150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_getName(ZRule* rule, UChar* name, int32_t nameLength) { 4250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s(nameLength==-1, name, nameLength); 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho s = ((TimeZoneRule*)rule)->TimeZoneRule::getName(s); 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho nameLength = s.length(); 4550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(name, s.getBuffer(), nameLength); 4650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 4750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 4850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 4950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 5050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_getRawOffset(ZRule* rule) { 5150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((TimeZoneRule*)rule)->TimeZoneRule::getRawOffset(); 5250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 5350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 5550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_getDSTSavings(ZRule* rule) { 5650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((TimeZoneRule*)rule)->TimeZoneRule::getDSTSavings(); 5750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 5850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 5950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 6050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehozrule_isEquivalentTo(ZRule* rule1, ZRule* rule2) { 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((TimeZoneRule*)rule1)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule*)rule2); 6250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/********************************************************************* 6550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * IZRule API 6650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho *********************************************************************/ 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI IZRule* U_EXPORT2 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_open(const UChar* name, int32_t nameLength, int32_t rawOffset, int32_t dstSavings) { 7050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s(nameLength==-1, name, nameLength); 7150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return (IZRule*) new InitialTimeZoneRule(name, rawOffset, dstSavings); 7250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 7350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 7550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_close(IZRule* rule) { 7650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete (InitialTimeZoneRule*)rule; 7750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 7850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI IZRule* U_EXPORT2 8050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_clone(IZRule *rule) { 8150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return (IZRule*) (((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::clone()); 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 8550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_equals(const IZRule* rule1, const IZRule* rule2) { 8650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return *(const InitialTimeZoneRule*)rule1 == *(const InitialTimeZoneRule*)rule2; 8750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 8850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 8950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI void U_EXPORT2 9050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getName(IZRule* rule, UChar* & name, int32_t & nameLength) { 9150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // UnicodeString s(nameLength==-1, name, nameLength); 9250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString s; 9350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getName(s); 9450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho nameLength = s.length(); 9550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho name = (UChar*)uprv_malloc(nameLength); 9650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho memcpy(name, s.getBuffer(), nameLength); 9750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 9850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 9950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 10150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getRawOffset(IZRule* rule) { 10250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getRawOffset(); 10350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 10450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 10550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI int32_t U_EXPORT2 10650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getDSTSavings(IZRule* rule) { 10750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDSTSavings(); 10850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 10950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 11150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_isEquivalentTo(IZRule* rule1, IZRule* rule2) { 11250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule1)->InitialTimeZoneRule::isEquivalentTo(*(InitialTimeZoneRule*)rule2); 11350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 11450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 11550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 11650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, 11750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDate& result) { 11850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((const InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFirstStart(prevRawOffset, prevDSTSavings, result); 11950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 12050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 12150294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 12250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, 12350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDate& result) { 12450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFinalStart(prevRawOffset, prevDSTSavings, result); 12550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 12650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 12750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 12850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getNextStart(IZRule* rule, UDate base, int32_t prevRawOffset, 12950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t prevDSTSavings, UBool inclusive, UDate& result) { 13050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getNextStart(base, prevRawOffset, prevDSTSavings, inclusive, result); 13150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 13250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 13350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UBool U_EXPORT2 13450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getPreviousStart(IZRule* rule, UDate base, int32_t prevRawOffset, 13550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t prevDSTSavings, UBool inclusive, UDate& result) { 13650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getPreviousStart(base, prevRawOffset, prevDSTSavings, inclusive, result); 13750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 13850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 13950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UClassID U_EXPORT2 14050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getStaticClassID(IZRule* rule) { 14150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getStaticClassID(); 14250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 14350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_CAPI UClassID U_EXPORT2 14550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoizrule_getDynamicClassID(IZRule* rule) { 14650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDynamicClassID(); 14750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 14850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 14927f654740f2a26ad62a5c155af9199af9e69b889claireho#endif 150