1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************
359d709d503bab6e2b61931737e662dd293b40578ccornelius* Copyright (C) 2003-2013, International Business Machines Corporation
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* and others. All Rights Reserved.
5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File HEBRWCAL.H
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History:
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   Date        Name        Description
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   05/13/2003  srl          copied from gregocal.h
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*   11/26/2003  srl          copied from buddhcal.h
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef HEBRWCAL_H
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define HEBRWCAL_H
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/calendar.h"
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/gregocal.h"
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code>
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that that implements the traditional Hebrew calendar.
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is the civil calendar in Israel and the liturgical calendar
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of the Jewish faith worldwide.
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The Hebrew calendar is lunisolar and thus has a number of interesting
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * properties that distinguish it from the Gregorian.  Months start
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * on the day of (an arithmetic approximation of) each new moon.  Since the
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * solar year (approximately 365.24 days) is not an even multiple of
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the lunar month (approximately 29.53 days) an extra "leap month" is
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * inserted in 7 out of every 19 years.  To make matters even more
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interesting, the start of a year can be delayed by up to three days
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in order to prevent certain holidays from falling on the Sabbath and
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * to prevent certain illegal year lengths.  Finally, the lengths of certain
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * months can vary depending on the number of days in the year.
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The leap month is known as "Adar 1" and is inserted between the
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * months of Shevat and Adar in leap years.  Since the leap month does
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * not come at the end of the year, calculations involving
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * month numbers are particularly complex.  Users of this class should
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * make sure to use the {@link #roll roll} and {@link #add add} methods
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * rather than attempting to perform date arithmetic by manipulating
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the fields directly.
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset.
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * However, in order to keep the time fields in this class
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * synchronized with those of the other calendars and with local clock time,
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * we treat days and months as beginning at midnight,
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * roughly 6 hours after the corresponding sunset.
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are interested in more information on the rules behind the Hebrew
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * calendar, see one of the following references:
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul>
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>",
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91.
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>Hebrew Calendar Science and Myths,
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      <a href="http://www.geocities.com/Athens/1584/">
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      http://www.geocities.com/Athens/1584/</a>
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <li>The Calendar FAQ,
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      <a href="http://www.faqs.org/faqs/calendars/faq/">
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      http://www.faqs.org/faqs/calendars/faq/</a>
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul>
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see com.ibm.icu.util.GregorianCalendar
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @author Laura Werner
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @author Alan Liu
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @author Steven R. Loomis
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p>
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @internal
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
8350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass U_I18N_API HebrewCalendar : public Calendar {
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  /**
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * Useful constants for HebrewCalendar.
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * @internal
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   */
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  enum EEras {
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Tishri, the 1st month of the Hebrew year.
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      TISHRI,
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      /**
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Heshvan, the 2nd month of the Hebrew year.
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      HESHVAN,
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      /**
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Kislev, the 3rd month of the Hebrew year.
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      KISLEV,
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Tevet, the 4th month of the Hebrew year.
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      TEVET,
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Shevat, the 5th month of the Hebrew year.
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      SHEVAT,
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Adar I, the 6th month of the Hebrew year
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * (present in leap years only). In non-leap years, the calendar
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * jumps from Shevat (5th month) to Adar (7th month).
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      ADAR_1,
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for the Adar, the 7th month of the Hebrew year.
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      ADAR,
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Nisan, the 8th month of the Hebrew year.
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      NISAN,
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Iyar, the 9th month of the Hebrew year.
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      IYAR,
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Sivan, the 10th month of the Hebrew year.
137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      SIVAN,
139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Tammuz, the 11th month of the Hebrew year.
142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      TAMUZ,
144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Av, the 12th month of the Hebrew year.
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      AV,
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constant for Elul, the 13th month of the Hebrew year.
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru      ELUL
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    };
155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Constructs a HebrewCalendar based on the current time in the default time zone
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * with the given locale.
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param aLocale  The given locale.
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param success  Indicates the status of HebrewCalendar object construction.
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                 Returns U_ZERO_ERROR if constructed successfully.
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    HebrewCalendar(const Locale& aLocale, UErrorCode& success);
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Destructor
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual ~HebrewCalendar();
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Copy constructor
176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param source    the object to be copied.
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    HebrewCalendar(const HebrewCalendar& source);
180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Default assignment operator
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param right    the object to be copied.
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    HebrewCalendar& operator=(const HebrewCalendar& right);
187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Create and return a polymorphic copy of this calendar.
190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return    return a polymorphic copy of this calendar.
191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual Calendar* clone(void) const;
194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic:
196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * override. This method is to implement a simple version of RTTI, since not all C++
199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call
200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * this method.
201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return   The class ID for this object. All objects of a given class have the
203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *           same class ID. Objects of other classes have different class IDs.
204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UClassID getDynamicClassID(void) const;
207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Return the class ID for this class. This is useful only for comparing to a return
210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * value from getDynamicClassID(). For example:
211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *      Base* polymorphic_pointer = createPolymorphicObject();
213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *      if (polymorphic_pointer->getDynamicClassID() ==
214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *          Derived::getStaticClassID()) ...
215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return   The class ID for all objects of this class.
217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
21950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    static UClassID U_EXPORT2 getStaticClassID(void);
220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * return the calendar type, "hebrew".
223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return calendar type
225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual const char * getType() const;
228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    // Calendar API
231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru public:
232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * (Overrides Calendar) UDate Arithmetic function. Adds the specified (signed) amount
234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * of time to the given time field, based on the calendar's rules.  For more
235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * information, see the documentation for Calendar::add().
236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param field   The time field.
238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param amount  The amount of date or time to be added to the field.
239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status  Output param set to success/failure code on exit. If any value
240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                previously set in the time field is invalid, this will be set to
241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                an error status.
242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void add(UCalendarDateFields field, int32_t amount, UErrorCode& status);
244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @deprecated ICU 2.6 use UCalendarDateFields instead of EDateFields
246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void add(EDateFields field, int32_t amount, UErrorCode& status);
248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * (Overrides Calendar) Rolls up or down by the given amount in the specified field.
252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For more information, see the documentation for Calendar::roll().
253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param field   The time field.
255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param amount  Indicates amount to roll.
256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status  Output param set to success/failure code on exit. If any value
257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                previously set in the time field is invalid, this will be set to
258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                an error status.
259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status);
262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * (Overrides Calendar) Rolls up or down by the given amount in the specified field.
265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For more information, see the documentation for Calendar::roll().
266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param field   The time field.
268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param amount  Indicates amount to roll.
269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param status  Output param set to success/failure code on exit. If any value
270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                previously set in the time field is invalid, this will be set to
271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *                an error status.
272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead.
273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru`     */
274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void roll(EDateFields field, int32_t amount, UErrorCode& status);
275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
27650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    /**
27750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * @internal
27850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     */
27950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho    static UBool isLeapYear(int32_t year) ;
280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru protected:
282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Subclass API for defining limits of different types.
285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Subclasses must implement this method to return limits for the
286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * following fields:
287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <pre>UCAL_ERA
289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_YEAR
290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_MONTH
291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_WEEK_OF_YEAR
292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_WEEK_OF_MONTH
293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_DATE (DAY_OF_MONTH on Java)
294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_DAY_OF_YEAR
295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_DAY_OF_WEEK_IN_MONTH
296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_YEAR_WOY
297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_EXTENDED_YEAR</pre>
298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param field one of the above field numbers
300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>,
301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code>
302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Return the number of days in the given month of the given extended
308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * year of this calendar system.  Subclasses should override this
309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * method if they can provide a more correct or more efficient
310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * implementation than the default implementation in Calendar.
311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const;
314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Return the number of days in the given extended year of this
317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * calendar system.  Subclasses should override this method if they can
318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * provide a more correct or more efficient implementation than the
319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * default implementation in Calendar.
320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 2.0
321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t handleGetYearLength(int32_t eyear) const;
323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Subclasses may override this method to compute several fields
325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * specific to each calendar system.  These are:
326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <ul><li>ERA
328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>YEAR
329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>MONTH
330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>DAY_OF_MONTH
331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>DAY_OF_YEAR
332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>EXTENDED_YEAR</ul>
333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <p>The GregorianCalendar implementation implements
335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * a calendar with the specified Julian/Gregorian cutover date.
336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual void handleComputeFields(int32_t julianDay, UErrorCode &status);
339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Return the extended year defined by the current fields.  This will
341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such
342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * as UCAL_ERA) specific to the calendar system, depending on which set of
343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * fields is newer.
344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return the extended year
345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t handleGetExtendedYear();
348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Return the Julian day number of day before the first day of the
350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * given month in the given extended year.  Subclasses should override
351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * this method to implement their calendar system.
352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param eyear the extended year
353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param month the zero-based month, or 0 if useMonth is false
354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param useMonth if false, compute the day before the first day of
355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * the given year, otherwise, compute the day before the first day of
356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * the given month
357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param return the Julian day number of the day before the first
358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * day of the given month and year
359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                                                   UBool useMonth) const;
363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
365fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    /**
366fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * Validate a single field of this calendar.
367fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * Overrides Calendar::validateField(int) to provide
368fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * special handling for month validation for Hebrew calendar.
369fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @internal
370fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     */
371fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    virtual void validateField(UCalendarDateFields field, UErrorCode &status);
372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru protected:
374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  /**
376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * (Overrides Calendar) Return true if the current date for this Calendar is in
377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   *
379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * @param status Fill-in parameter which receives the status of this operation.
380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * @return   True if the current date for this Calendar is in Daylight Savings Time,
381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   *           false, otherwise.
382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   * @internal
383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru   */
384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru  virtual UBool inDaylightTime(UErrorCode& status) const;
385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Returns TRUE because the Hebrew Calendar does have a default century
388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UBool haveDefaultCentury() const;
391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Returns the date of the start of the default century
394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return start of century - in milliseconds since epoch, 1970
395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual UDate defaultCenturyStart() const;
398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Returns the year in which the default century begins
401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    virtual int32_t defaultCenturyStartYear() const;
404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru private: // Calendar-specific implementation
406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Finds the day # of the first day in the given Hebrew year.
408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * To do this, we want to calculate the time of the Tishri 1 new moon
409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * in that year.
410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <p>
411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * The algorithm here is similar to ones described in a number of
412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * references, including:
413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <ul>
414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold,
415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *     Cambridge University Press, 1997, pages 85-91.
416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>Hebrew Calendar Science and Myths,
418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *     <a href="http://www.geocities.com/Athens/1584/">
419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *     http://www.geocities.com/Athens/1584/</a>
420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *
421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * <li>The Calendar FAQ,
422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *      <a href="http://www.faqs.org/faqs/calendars/faq/">
423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     *      http://www.faqs.org/faqs/calendars/faq/</a>
424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * </ul>
425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @param year extended year
426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @return day number (JD)
427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t startOfYear(int32_t year, UErrorCode& status);
430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t absoluteDayToDayOfWeek(int32_t day) ;
432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    int32_t yearType(int32_t year) const;
437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @internal
440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    static int32_t monthsInYear(int32_t year) ;
442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru};
443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END
445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof
450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
451