2 *******************************************************************************
3 * Copyright (C) 2009-2010, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
10 * \brief C API: Time zone rule classes
13 #include "unicode/utypes.h"
15 #if !UCONFIG_NO_FORMATTING
17 #include "unicode/uobject.h"
19 #include "unicode/tzrule.h"
21 #include "unicode/ustring.h"
22 #include "unicode/parsepos.h"
26 /*********************************************************************
28 *********************************************************************/
31 zrule_close(ZRule
* rule
) {
32 delete (TimeZoneRule
*)rule
;
35 U_CAPI UBool U_EXPORT2
36 zrule_equals(const ZRule
* rule1
, const ZRule
* rule2
) {
37 return *(const TimeZoneRule
*)rule1
== *(const TimeZoneRule
*)rule2
;
41 zrule_getName(ZRule
* rule
, UChar
* name
, int32_t nameLength
) {
42 UnicodeString
s(nameLength
==-1, name
, nameLength
);
43 s
= ((TimeZoneRule
*)rule
)->TimeZoneRule::getName(s
);
44 nameLength
= s
.length();
45 memcpy(name
, s
.getBuffer(), nameLength
);
49 U_CAPI
int32_t U_EXPORT2
50 zrule_getRawOffset(ZRule
* rule
) {
51 return ((TimeZoneRule
*)rule
)->TimeZoneRule::getRawOffset();
54 U_CAPI
int32_t U_EXPORT2
55 zrule_getDSTSavings(ZRule
* rule
) {
56 return ((TimeZoneRule
*)rule
)->TimeZoneRule::getDSTSavings();
59 U_CAPI UBool U_EXPORT2
60 zrule_isEquivalentTo(ZRule
* rule1
, ZRule
* rule2
) {
61 return ((TimeZoneRule
*)rule1
)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule
*)rule2
);
64 /*********************************************************************
66 *********************************************************************/
68 U_CAPI IZRule
* U_EXPORT2
69 izrule_open(const UChar
* name
, int32_t nameLength
, int32_t rawOffset
, int32_t dstSavings
) {
70 UnicodeString
s(nameLength
==-1, name
, nameLength
);
71 return (IZRule
*) new InitialTimeZoneRule(name
, rawOffset
, dstSavings
);
75 izrule_close(IZRule
* rule
) {
76 delete (InitialTimeZoneRule
*)rule
;
79 U_CAPI IZRule
* U_EXPORT2
80 izrule_clone(IZRule
*rule
) {
81 return (IZRule
*) (((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::clone());
84 U_CAPI UBool U_EXPORT2
85 izrule_equals(const IZRule
* rule1
, const IZRule
* rule2
) {
86 return *(const InitialTimeZoneRule
*)rule1
== *(const InitialTimeZoneRule
*)rule2
;
90 izrule_getName(IZRule
* rule
, UChar
* & name
, int32_t & nameLength
) {
91 // UnicodeString s(nameLength==-1, name, nameLength);
93 ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getName(s
);
94 nameLength
= s
.length();
95 name
= (UChar
*)uprv_malloc(nameLength
);
96 memcpy(name
, s
.getBuffer(), nameLength
);
100 U_CAPI
int32_t U_EXPORT2
101 izrule_getRawOffset(IZRule
* rule
) {
102 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getRawOffset();
105 U_CAPI
int32_t U_EXPORT2
106 izrule_getDSTSavings(IZRule
* rule
) {
107 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getDSTSavings();
110 U_CAPI UBool U_EXPORT2
111 izrule_isEquivalentTo(IZRule
* rule1
, IZRule
* rule2
) {
112 return ((InitialTimeZoneRule
*)rule1
)->InitialTimeZoneRule::isEquivalentTo(*(InitialTimeZoneRule
*)rule2
);
115 U_CAPI UBool U_EXPORT2
116 izrule_getFirstStart(IZRule
* rule
, int32_t prevRawOffset
, int32_t prevDSTSavings
,
118 return ((const InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getFirstStart(prevRawOffset
, prevDSTSavings
, result
);
121 U_CAPI UBool U_EXPORT2
122 izrule_getFinalStart(IZRule
* rule
, int32_t prevRawOffset
, int32_t prevDSTSavings
,
124 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getFinalStart(prevRawOffset
, prevDSTSavings
, result
);
127 U_CAPI UBool U_EXPORT2
128 izrule_getNextStart(IZRule
* rule
, UDate base
, int32_t prevRawOffset
,
129 int32_t prevDSTSavings
, UBool inclusive
, UDate
& result
) {
130 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getNextStart(base
, prevRawOffset
, prevDSTSavings
, inclusive
, result
);
133 U_CAPI UBool U_EXPORT2
134 izrule_getPreviousStart(IZRule
* rule
, UDate base
, int32_t prevRawOffset
,
135 int32_t prevDSTSavings
, UBool inclusive
, UDate
& result
) {
136 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getPreviousStart(base
, prevRawOffset
, prevDSTSavings
, inclusive
, result
);
139 U_CAPI UClassID U_EXPORT2
140 izrule_getStaticClassID(IZRule
* rule
) {
141 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getStaticClassID();
144 U_CAPI UClassID U_EXPORT2
145 izrule_getDynamicClassID(IZRule
* rule
) {
146 return ((InitialTimeZoneRule
*)rule
)->InitialTimeZoneRule::getDynamicClassID();