tor-browser

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

ztrans.h (5131B)


      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-2016, International Business Machines Corporation and
      6 * others. All Rights Reserved.
      7 *******************************************************************************
      8 */
      9 #ifndef __ZTRANS_H
     10 #define __ZTRANS_H
     11 
     12 /**
     13 * \file 
     14 * \brief C API: Time zone transition classes
     15 */
     16 
     17 #include "unicode/utypes.h"
     18 
     19 #if !UCONFIG_NO_FORMATTING
     20 
     21 #include "unicode/uobject.h"
     22 
     23 /**
     24 * A TimeZoneTransition.  Use the ztrans_* API to manipulate.  Create with
     25 * ztrans_open*, and destroy with ztrans_close.
     26 */
     27 struct ZTrans;
     28 typedef struct ZTrans ZTrans;
     29 
     30 /**
     31 * Constructs a time zone transition with the time and the rules before/after
     32 * the transition.
     33 * 
     34 * @param time  The time of transition in milliseconds since the base time.
     35 * @param from  The time zone rule used before the transition.
     36 * @param to    The time zone rule used after the transition.
     37 */
     38 U_CAPI ZTrans* U_EXPORT2
     39 ztrans_open(UDate time, const void* from, const void* to);
     40 
     41 /**
     42 * Constructs an empty <code>TimeZoneTransition</code>
     43 */
     44 U_CAPI ZTrans* U_EXPORT2
     45 ztrans_openEmpty();
     46 
     47 /**
     48 * Disposes of the storage used by a ZTrans object.  This function should
     49 * be called exactly once for objects returned by ztrans_open*.
     50 * @param trans the object to dispose of
     51 */
     52 U_CAPI void U_EXPORT2
     53 ztrans_close(ZTrans *trans);
     54 
     55 /**
     56 * Returns a copy of this object.
     57 * @param rule the original ZRule
     58 * @return the newly allocated copy of the ZRule
     59 */
     60 U_CAPI ZTrans* U_EXPORT2
     61 ztrans_clone(ZTrans *trans);
     62 
     63 /**
     64 * Returns true if trans1 is identical to trans2
     65 * and vis versa.
     66 * @param trans1 to be checked for containment
     67 * @param trans2 to be checked for containment
     68 * @return true if the test condition is met
     69 */
     70 U_CAPI UBool U_EXPORT2
     71 ztrans_equals(const ZTrans* trans1, const ZTrans* trans2);
     72 
     73 /**
     74 * Returns the time of transition in milliseconds.
     75 * param trans, the transition to use
     76 * @return The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
     77 */
     78 U_CAPI UDate U_EXPORT2
     79 ztrans_getTime(ZTrans* trans);
     80 
     81 /**
     82 * Sets the time of transition in milliseconds.
     83 * param trans, the transition to use
     84 * @param time The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
     85 */
     86 U_CAPI void U_EXPORT2
     87 ztrans_setTime(ZTrans* trans, UDate time);
     88 
     89 /**
     90 * Returns the rule used before the transition.
     91 * param trans, the transition to use
     92 * @return The time zone rule used after the transition.
     93 */
     94 U_CAPI void* U_EXPORT2
     95 ztrans_getFrom(ZTrans* & trans);
     96 
     97 /**
     98 * Sets the rule used before the transition.  The caller remains
     99 * responsible for deleting the TimeZoneRule object.
    100 * param trans, the transition to use
    101 * param trans, the transition to use
    102 * @param from The time zone rule used before the transition.
    103 */
    104 U_CAPI void U_EXPORT2
    105 ztrans_setFrom(ZTrans* trans, const void* from);
    106 
    107 /**
    108 * Adopts the rule used before the transition.  The caller must
    109 * not delete the TimeZoneRule object passed in.
    110 * param trans, the transition to use
    111 * @param from The time zone rule used before the transition.
    112 */
    113 U_CAPI void U_EXPORT2
    114 ztrans_adoptFrom(ZTrans* trans, void* from);
    115 
    116 /**
    117 * Returns the rule used after the transition.
    118 * param trans, the transition to use
    119 * @return The time zone rule used after the transition.
    120 */
    121 U_CAPI void* U_EXPORT2
    122 ztrans_getTo(ZTrans* trans);
    123 
    124 /**
    125 * Sets the rule used after the transition.  The caller remains
    126 * responsible for deleting the TimeZoneRule object.
    127 * param trans, the transition to use
    128 * @param to The time zone rule used after the transition.
    129 */
    130 U_CAPI void U_EXPORT2
    131 ztrans_setTo(ZTrans* trans, const void* to);
    132 
    133 /**
    134 * Adopts the rule used after the transition.  The caller must
    135 * not delete the TimeZoneRule object passed in.
    136 * param trans, the transition to use
    137 * @param to The time zone rule used after the transition.
    138 */
    139 U_CAPI void U_EXPORT2
    140 ztrans_adoptTo(ZTrans* trans, void* to);
    141 
    142 /**
    143 * Return the class ID for this class. This is useful only for comparing to
    144 * a return value from getDynamicClassID(). For example:
    145 * <pre>
    146 * .   Base* polymorphic_pointer = createPolymorphicObject();
    147 * .   if (polymorphic_pointer->getDynamicClassID() ==
    148 * .       erived::getStaticClassID()) ...
    149 * </pre>
    150 * param trans, the transition to use
    151 * @return          The class ID for all objects of this class.
    152 */
    153 U_CAPI UClassID U_EXPORT2
    154 ztrans_getStaticClassID(ZTrans* trans);
    155 
    156 /**
    157 * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
    158 * method is to implement a simple version of RTTI, since not all C++
    159 * compilers support genuine RTTI. Polymorphic operator==() and clone()
    160 * methods call this method.
    161 *
    162 * param trans, the transition to use
    163 * @return          The class ID for this object. All objects of a
    164 *                  given class have the same class ID.  Objects of
    165 *                  other classes have different class IDs.
    166 */
    167 U_CAPI UClassID U_EXPORT2
    168 ztrans_getDynamicClassID(ZTrans* trans);
    169 
    170 #endif
    171 
    172 #endif