1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*******************************************************************************
383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius* Copyright (C) 2007-2011, International Business Machines Corporation and
483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius* others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*******************************************************************************
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef BASICTZ_H
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define BASICTZ_H
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C++ API: ICU TimeZone base class
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/timezone.h"
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/tzrule.h"
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/tztrans.h"
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// forward declarations
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass UVector;
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>BasicTimeZone</code> is an abstract class extending <code>TimeZone</code>.
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This class provides some additional methods to access time zone transitions and rules.
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * All ICU <code>TimeZone</code> concrete subclasses extend this class.
3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @stable ICU 3.8
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_I18N_API BasicTimeZone: public TimeZone {
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Destructor.
3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~BasicTimeZone();
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Gets the first time zone transition after the base time.
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param base      The base time.
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param inclusive Whether the base time is inclusive or not.
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param result    Receives the first transition after the base time.
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return  TRUE if the transition is found.
4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Gets the most recent time zone transition before the base time.
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param base      The base time.
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param inclusive Whether the base time is inclusive or not.
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param result    Receives the most recent transition before the base time.
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return  TRUE if the transition is found.
5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Checks if the time zone has equivalent transitions in the time range.
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * This method returns true when all of transition times, from/to standard
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * offsets and DST savings used by this time zone match the other in the
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * time range.
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param tz    The <code>BasicTimeZone</code> object to be compared with.
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param start The start time of the evaluated time range (inclusive)
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param end   The end time of the evaluated time range (inclusive)
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param ignoreDstAmount
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              When true, any transitions with only daylight saving amount
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              changes will be ignored, except either of them is zero.
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              For example, a transition from rawoffset 3:00/dstsavings 1:00
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison,
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              but a transtion from rawoffset 2:00/dstsavings 1:00 to
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              rawoffset 3:00/dstsavings 0:00 is included.
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param ec    Output param to filled in with a success or an error.
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return      true if the other time zone has the equivalent transitions in the
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *              time range.
8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UBool hasEquivalentTransitions(/*const*/ BasicTimeZone& tz, UDate start, UDate end,
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UBool ignoreDstAmount, UErrorCode& ec) /*const*/;
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Returns the number of <code>TimeZoneRule</code>s which represents time transitions,
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * for this time zone, that is, all <code>TimeZoneRule</code>s for this time zone except
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <code>InitialTimeZoneRule</code>.  The return value range is 0 or any positive value.
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status    Receives error status code.
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return The number of <code>TimeZoneRule</code>s representing time transitions.
9185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t countTransitionRules(UErrorCode& status) /*const*/ = 0;
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Gets the <code>InitialTimeZoneRule</code> and the set of <code>TimeZoneRule</code>
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * which represent time transitions for this time zone.  On successful return,
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * the argument initial points to non-NULL <code>InitialTimeZoneRule</code> and
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * the array trsrules is filled with 0 or multiple <code>TimeZoneRule</code>
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * instances up to the size specified by trscount.  The results are referencing the
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * rule instance held by this time zone instance.  Therefore, after this time zone
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * is destructed, they are no longer available.
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param initial       Receives the initial timezone rule
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param trsrules      Receives the timezone transition rules
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param trscount      On input, specify the size of the array 'transitions' receiving
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                      the timezone transition rules.  On output, actual number of
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                      rules filled in the array will be set.
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status        Receives error status code.
10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/ = 0;
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Gets the set of time zone rules valid at the specified time.  Some known external time zone
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * implementations are not capable to handle historic time zone rule changes.  Also some
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * implementations can only handle certain type of rule definitions.
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * If this time zone does not use any daylight saving time within about 1 year from the specified
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * time, only the <code>InitialTimeZone</code> is returned.  Otherwise, the rule for standard
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * time and daylight saving time transitions are returned in addition to the
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <code>InitialTimeZoneRule</code>.  The standard and daylight saving time transition rules are
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * represented by <code>AnnualTimeZoneRule</code> with <code>DateTimeRule::DOW</code> for its date
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * rule and <code>DateTimeRule::WALL_TIME</code> for its time rule.  Because daylight saving time
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * rule is changing time to time in many time zones and also mapping a transition time rule to
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * different type is lossy transformation, the set of rules returned by this method may be valid
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * for short period of time.
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * The time zone rule objects returned by this method is owned by the caller, so the caller is
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * responsible for deleting them after use.
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param date      The date used for extracting time zone rules.
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param initial   Receives the <code>InitialTimeZone</code>, always not NULL.
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param std       Receives the <code>AnnualTimeZoneRule</code> for standard time transitions.
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                  When this time time zone does not observe daylight saving times around the
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                  specified date, NULL is set.
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param dst       Receives the <code>AnnualTimeZoneRule</code> for daylight saving time
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                  transitions.  When this time zone does not observer daylight saving times
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                  around the specified date, NULL is set.
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status    Receives error status code.
13885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) /*const*/;
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
14483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_INTERNAL_API
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * The time type option bit flags used by getOffsetFromLocal
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    enum {
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kStandard = 0x01,
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kDaylight = 0x03,
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kFormer = 0x04,
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kLatter = 0x0C
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
15583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_INTERNAL_API */
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Get time zone offsets from local wall time.
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt,
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) /*const*/;
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprotected:
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
16683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_INTERNAL_API
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * The time type option bit masks used by getOffsetFromLocal
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    enum {
172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kStdDstMask = kDaylight,
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        kFormerLatterMask = kLatter
174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
17583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_INTERNAL_API */
176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Default constructor.
17985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    BasicTimeZone();
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Construct a timezone with a given ID.
185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param id a system time zone ID
18685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    BasicTimeZone(const UnicodeString &id);
189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Copy constructor.
192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param source the object to be copied.
19385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @stable ICU 3.8
194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    BasicTimeZone(const BasicTimeZone& source);
196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Gets the set of TimeZoneRule instances applicable to the specified time and after.
199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param start     The start date used for extracting time zone rules
200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param initial   Receives the InitialTimeZone, always not NULL
201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param transitionRules   Receives the transition rules, could be NULL
202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status    Receives error status code
203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    void getTimeZoneRulesAfter(UDate start, InitialTimeZoneRule*& initial, UVector*& transitionRules,
205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru        UErrorCode& status) /*const*/;
206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END
209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // BASICTZ_H
213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof
215