intl/icu/source/i18n/zrule.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2 *******************************************************************************
     3 * Copyright (C) 2009-2011, International Business Machines Corporation and
     4 * others. All Rights Reserved.
     5 *******************************************************************************
     6 */
     8 /**
     9  * \file 
    10  * \brief C API: Time zone rule classes
    11  */
    13 #include "unicode/utypes.h"
    15 #if !UCONFIG_NO_FORMATTING
    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"
    24 U_NAMESPACE_USE
    26 /*********************************************************************
    27  * ZRule API
    28  *********************************************************************/
    30 U_CAPI void U_EXPORT2
    31 zrule_close(ZRule* rule) {
    32     delete (TimeZoneRule*)rule;
    33 }
    35 U_CAPI UBool U_EXPORT2
    36 zrule_equals(const ZRule* rule1, const ZRule* rule2) {
    37     return *(const TimeZoneRule*)rule1 == *(const TimeZoneRule*)rule2;
    38 }
    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 }
    49 U_CAPI int32_t U_EXPORT2
    50 zrule_getRawOffset(ZRule* rule) {
    51     return ((TimeZoneRule*)rule)->TimeZoneRule::getRawOffset();
    52 }
    54 U_CAPI int32_t U_EXPORT2
    55 zrule_getDSTSavings(ZRule* rule) {
    56     return ((TimeZoneRule*)rule)->TimeZoneRule::getDSTSavings();
    57 }
    59 U_CAPI UBool U_EXPORT2
    60 zrule_isEquivalentTo(ZRule* rule1,  ZRule* rule2) {
    61     return ((TimeZoneRule*)rule1)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule*)rule2);
    62 }
    64 /*********************************************************************
    65  * IZRule API
    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(s, rawOffset, dstSavings);
    72 }
    74 U_CAPI void U_EXPORT2
    75 izrule_close(IZRule* rule) {
    76     delete (InitialTimeZoneRule*)rule;
    77 }
    79 U_CAPI IZRule* U_EXPORT2
    80 izrule_clone(IZRule *rule) {
    81     return (IZRule*) (((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::clone());
    82 }
    84 U_CAPI UBool U_EXPORT2
    85 izrule_equals(const IZRule* rule1, const IZRule* rule2) {
    86     return *(const InitialTimeZoneRule*)rule1 == *(const InitialTimeZoneRule*)rule2;
    87 }
    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 }
   100 U_CAPI int32_t U_EXPORT2
   101 izrule_getRawOffset(IZRule* rule) {
   102     return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getRawOffset();
   103 }
   105 U_CAPI int32_t U_EXPORT2
   106 izrule_getDSTSavings(IZRule* rule) {
   107     return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDSTSavings();
   108 }
   110 U_CAPI UBool U_EXPORT2
   111 izrule_isEquivalentTo(IZRule* rule1,  IZRule* rule2) {
   112     return ((InitialTimeZoneRule*)rule1)->InitialTimeZoneRule::isEquivalentTo(*(InitialTimeZoneRule*)rule2);
   113 }
   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 }
   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 }
   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 }
   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 }
   139 U_CAPI UClassID U_EXPORT2
   140 izrule_getStaticClassID(IZRule* rule) {
   141     return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getStaticClassID();
   142 }
   144 U_CAPI UClassID U_EXPORT2
   145 izrule_getDynamicClassID(IZRule* rule) {
   146     return ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getDynamicClassID();
   147 }
   149 #endif

mercurial