Home | History | Annotate | Download | only in i18n
      1 /*
      2 *******************************************************************************
      3 * Copyright (C) 2009-2011, International Business Machines Corporation and
      4 * others. All Rights Reserved.
      5 *******************************************************************************
      6 */
      7 #ifndef __ZTRANS_H
      8 #define __ZTRANS_H
      9 
     10 /**
     11  * \file
     12  * \brief C API: Time zone transition classes
     13  */
     14 
     15 #include "unicode/utypes.h"
     16 
     17 #if !UCONFIG_NO_FORMATTING
     18 
     19 #ifndef UCNV_H
     20 
     21 /**
     22  * A TimeZoneTransition.  Use the ztrans_* API to manipulate.  Create with
     23  * ztrans_open*, and destroy with ztrans_close.
     24  */
     25 struct ZTrans;
     26 typedef struct ZTrans ZTrans;
     27 
     28 #endif
     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
    173