]>
Commit | Line | Data |
---|---|---|
729e4ab9 A |
1 | /* |
2 | ******************************************************************************* | |
4388f060 A |
3 | * Copyright (C) 2009-2011, International Business Machines Corporation and |
4 | * others. All Rights Reserved. | |
729e4ab9 A |
5 | ******************************************************************************* |
6 | */ | |
7 | ||
8 | /** | |
9 | * \file | |
10 | * \brief C API: Time zone rule classes | |
11 | */ | |
12 | ||
13 | #include "unicode/utypes.h" | |
14 | ||
15 | #if !UCONFIG_NO_FORMATTING | |
16 | ||
17 | #include "unicode/uobject.h" | |
18 | #include "zrule.h" | |
19 | #include "unicode/tzrule.h" | |
20 | #include "cmemory.h" | |
21 | #include "unicode/ustring.h" | |
22 | #include "unicode/parsepos.h" | |
23 | ||
24 | U_NAMESPACE_USE | |
25 | ||
26 | /********************************************************************* | |
27 | * ZRule API | |
28 | *********************************************************************/ | |
29 | ||
30 | U_CAPI void U_EXPORT2 | |
31 | zrule_close(ZRule* rule) { | |
32 | delete (TimeZoneRule*)rule; | |
33 | } | |
34 | ||
35 | U_CAPI UBool U_EXPORT2 | |
36 | zrule_equals(const ZRule* rule1, const ZRule* rule2) { | |
37 | return *(const TimeZoneRule*)rule1 == *(const TimeZoneRule*)rule2; | |
38 | } | |
39 | ||
40 | U_CAPI void U_EXPORT2 | |
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); | |
46 | return; | |
47 | } | |
48 | ||
49 | U_CAPI int32_t U_EXPORT2 | |
50 | zrule_getRawOffset(ZRule* rule) { | |
51 | return ((TimeZoneRule*)rule)->TimeZoneRule::getRawOffset(); | |
52 | } | |
53 | ||
54 | U_CAPI int32_t U_EXPORT2 | |
55 | zrule_getDSTSavings(ZRule* rule) { | |
56 | return ((TimeZoneRule*)rule)->TimeZoneRule::getDSTSavings(); | |
57 | } | |
58 | ||
59 | U_CAPI UBool U_EXPORT2 | |
60 | zrule_isEquivalentTo(ZRule* rule1, ZRule* rule2) { | |
61 | return ((TimeZoneRule*)rule1)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule*)rule2); | |
62 | } | |
63 | ||
64 | /********************************************************************* | |
65 | * IZRule API | |
66 | *********************************************************************/ | |
67 | ||
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); | |
4388f060 | 71 | return (IZRule*) new InitialTimeZoneRule(s, rawOffset, dstSavings); |
729e4ab9 A |
72 | } |
73 | ||
74 | U_CAPI void U_EXPORT2 | |
75 | izrule_close(IZRule* rule) { | |
76 | delete (InitialTimeZoneRule*)rule; | |
77 | } | |
78 | ||
79 | U_CAPI IZRule* U_EXPORT2 | |
80 | izrule_clone(IZRule *rule) { | |
81 | return (IZRule*) (((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::clone()); | |
82 | } | |
83 | ||
84 | U_CAPI UBool U_EXPORT2 | |
85 | izrule_equals(const IZRule* rule1, const IZRule* rule2) { | |
86 | return *(const InitialTimeZoneRule*)rule1 == *(const InitialTimeZoneRule*)rule2; | |
87 | } | |
88 | ||
89 | U_CAPI void U_EXPORT2 | |
90 | izrule_getName(IZRule* rule, UChar* & name, int32_t & nameLength) { | |
91 | // UnicodeString s(nameLength==-1, name, nameLength); | |
92 | UnicodeString s; | |
93 | ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getName(s); | |
94 | nameLength = s.length(); | |
95 | name = (UChar*)uprv_malloc(nameLength); | |
96 | memcpy(name, s.getBuffer(), nameLength); | |
97 | return; | |
98 | } | |
99 | ||
100 | U_CAPI int32_t U_EXPORT2 | |
101 | izrule_getRawOffset(IZRule* rule) { | |
102 | return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getRawOffset(); | |
103 | } | |
104 | ||
105 | U_CAPI int32_t U_EXPORT2 | |
106 | izrule_getDSTSavings(IZRule* rule) { | |
107 | return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDSTSavings(); | |
108 | } | |
109 | ||
110 | U_CAPI UBool U_EXPORT2 | |
111 | izrule_isEquivalentTo(IZRule* rule1, IZRule* rule2) { | |
112 | return ((InitialTimeZoneRule*)rule1)->InitialTimeZoneRule::isEquivalentTo(*(InitialTimeZoneRule*)rule2); | |
113 | } | |
114 | ||
115 | U_CAPI UBool U_EXPORT2 | |
116 | izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, | |
117 | UDate& result) { | |
118 | return ((const InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFirstStart(prevRawOffset, prevDSTSavings, result); | |
119 | } | |
120 | ||
121 | U_CAPI UBool U_EXPORT2 | |
122 | izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings, | |
123 | UDate& result) { | |
124 | return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFinalStart(prevRawOffset, prevDSTSavings, result); | |
125 | } | |
126 | ||
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); | |
131 | } | |
132 | ||
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); | |
137 | } | |
138 | ||
139 | U_CAPI UClassID U_EXPORT2 | |
140 | izrule_getStaticClassID(IZRule* rule) { | |
141 | return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getStaticClassID(); | |
142 | } | |
143 | ||
144 | U_CAPI UClassID U_EXPORT2 | |
145 | izrule_getDynamicClassID(IZRule* rule) { | |
146 | return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDynamicClassID(); | |
147 | } | |
148 | ||
149 | #endif |