]> git.saurik.com Git - apple/icu.git/blame - icuSources/i18n/zrule.cpp
ICU-511.32.tar.gz
[apple/icu.git] / icuSources / i18n / zrule.cpp
CommitLineData
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
24U_NAMESPACE_USE
25
26/*********************************************************************
27 * ZRule API
28 *********************************************************************/
29
30U_CAPI void U_EXPORT2
31zrule_close(ZRule* rule) {
32 delete (TimeZoneRule*)rule;
33}
34
35U_CAPI UBool U_EXPORT2
36zrule_equals(const ZRule* rule1, const ZRule* rule2) {
37 return *(const TimeZoneRule*)rule1 == *(const TimeZoneRule*)rule2;
38}
39
40U_CAPI void U_EXPORT2
41zrule_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
49U_CAPI int32_t U_EXPORT2
50zrule_getRawOffset(ZRule* rule) {
51 return ((TimeZoneRule*)rule)->TimeZoneRule::getRawOffset();
52}
53
54U_CAPI int32_t U_EXPORT2
55zrule_getDSTSavings(ZRule* rule) {
56 return ((TimeZoneRule*)rule)->TimeZoneRule::getDSTSavings();
57}
58
59U_CAPI UBool U_EXPORT2
60zrule_isEquivalentTo(ZRule* rule1, ZRule* rule2) {
61 return ((TimeZoneRule*)rule1)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule*)rule2);
62}
63
64/*********************************************************************
65 * IZRule API
66 *********************************************************************/
67
68U_CAPI IZRule* U_EXPORT2
69izrule_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
74U_CAPI void U_EXPORT2
75izrule_close(IZRule* rule) {
76 delete (InitialTimeZoneRule*)rule;
77}
78
79U_CAPI IZRule* U_EXPORT2
80izrule_clone(IZRule *rule) {
81 return (IZRule*) (((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::clone());
82}
83
84U_CAPI UBool U_EXPORT2
85izrule_equals(const IZRule* rule1, const IZRule* rule2) {
86 return *(const InitialTimeZoneRule*)rule1 == *(const InitialTimeZoneRule*)rule2;
87}
88
89U_CAPI void U_EXPORT2
90izrule_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
100U_CAPI int32_t U_EXPORT2
101izrule_getRawOffset(IZRule* rule) {
102 return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getRawOffset();
103}
104
105U_CAPI int32_t U_EXPORT2
106izrule_getDSTSavings(IZRule* rule) {
107 return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDSTSavings();
108}
109
110U_CAPI UBool U_EXPORT2
111izrule_isEquivalentTo(IZRule* rule1, IZRule* rule2) {
112 return ((InitialTimeZoneRule*)rule1)->InitialTimeZoneRule::isEquivalentTo(*(InitialTimeZoneRule*)rule2);
113}
114
115U_CAPI UBool U_EXPORT2
116izrule_getFirstStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings,
117 UDate& result) {
118 return ((const InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFirstStart(prevRawOffset, prevDSTSavings, result);
119}
120
121U_CAPI UBool U_EXPORT2
122izrule_getFinalStart(IZRule* rule, int32_t prevRawOffset, int32_t prevDSTSavings,
123 UDate& result) {
124 return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getFinalStart(prevRawOffset, prevDSTSavings, result);
125}
126
127U_CAPI UBool U_EXPORT2
128izrule_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
133U_CAPI UBool U_EXPORT2
134izrule_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
139U_CAPI UClassID U_EXPORT2
140izrule_getStaticClassID(IZRule* rule) {
141 return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getStaticClassID();
142}
143
144U_CAPI UClassID U_EXPORT2
145izrule_getDynamicClassID(IZRule* rule) {
146 return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDynamicClassID();
147}
148
149#endif