tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

zrule.cpp (4877B)


      1 // © 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 *******************************************************************************
      5 * Copyright (C) 2009-2011, International Business Machines Corporation and
      6 * others. All Rights Reserved.
      7 *******************************************************************************
      8 */
      9 
     10 /**
     11 * \file 
     12 * \brief C API: Time zone rule classes
     13 */
     14 
     15 #include "unicode/utypes.h"
     16 
     17 #if !UCONFIG_NO_FORMATTING
     18 
     19 #include "unicode/uobject.h"
     20 #include "zrule.h"
     21 #include "unicode/tzrule.h"
     22 #include "cmemory.h"
     23 #include "unicode/ustring.h"
     24 #include "unicode/parsepos.h"
     25 
     26 U_NAMESPACE_USE
     27 
     28 /*********************************************************************
     29 * ZRule API
     30 *********************************************************************/
     31 
     32 U_CAPI void U_EXPORT2
     33 zrule_close(ZRule* rule) {
     34    delete (TimeZoneRule*)rule;
     35 }
     36 
     37 U_CAPI UBool U_EXPORT2
     38 zrule_equals(const ZRule* rule1, const ZRule* rule2) {
     39    return *(const TimeZoneRule*)rule1 == *(const TimeZoneRule*)rule2;
     40 }
     41 
     42 U_CAPI void U_EXPORT2
     43 zrule_getName(ZRule* rule, char16_t* name, int32_t nameLength) {
     44    UnicodeString s(nameLength==-1, name, nameLength);
     45    s = ((TimeZoneRule*)rule)->TimeZoneRule::getName(s);
     46    nameLength = s.length();
     47    memcpy(name, s.getBuffer(), nameLength);
     48 }
     49 
     50 U_CAPI int32_t U_EXPORT2
     51 zrule_getRawOffset(ZRule* rule) {
     52    return ((TimeZoneRule*)rule)->TimeZoneRule::getRawOffset();
     53 }
     54 
     55 U_CAPI int32_t U_EXPORT2
     56 zrule_getDSTSavings(ZRule* rule) {
     57    return ((TimeZoneRule*)rule)->TimeZoneRule::getDSTSavings();
     58 }
     59 
     60 U_CAPI UBool U_EXPORT2
     61 zrule_isEquivalentTo(ZRule* rule1,  ZRule* rule2) {
     62    return ((TimeZoneRule*)rule1)->TimeZoneRule::isEquivalentTo(*(TimeZoneRule*)rule2);
     63 }
     64 
     65 /*********************************************************************
     66 * IZRule API
     67 *********************************************************************/
     68 
     69 U_CAPI IZRule* U_EXPORT2
     70 izrule_open(const char16_t* name, int32_t nameLength, int32_t rawOffset, int32_t dstSavings) {
     71    UnicodeString s(nameLength==-1, name, nameLength);
     72    return (IZRule*) new InitialTimeZoneRule(s, rawOffset, dstSavings);
     73 }
     74 
     75 U_CAPI void U_EXPORT2
     76 izrule_close(IZRule* rule) {
     77    delete (InitialTimeZoneRule*)rule;
     78 }
     79 
     80 U_CAPI IZRule* U_EXPORT2
     81 izrule_clone(IZRule *rule) {
     82    return (IZRule*) (((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::clone());
     83 }
     84 
     85 U_CAPI UBool U_EXPORT2
     86 izrule_equals(const IZRule* rule1, const IZRule* rule2) {
     87    return *(const InitialTimeZoneRule*)rule1 == *(const InitialTimeZoneRule*)rule2;
     88 }
     89 
     90 U_CAPI void U_EXPORT2
     91 izrule_getName(IZRule* rule, char16_t* & name, int32_t & nameLength) {
     92    // UnicodeString s(nameLength==-1, name, nameLength);
     93    UnicodeString s;
     94    ((InitialTimeZoneRule*)rule)->InitialTimeZoneRule::getName(s);
     95    nameLength = s.length();
     96    name = (char16_t*)uprv_malloc(nameLength);
     97    memcpy(name, s.getBuffer(), nameLength);
     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