16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2003-2013, International Business Machines Corporation 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File HEBRWCAL.H 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Date Name Description 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 05/13/2003 srl copied from gregocal.h 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 11/26/2003 srl copied from buddhcal.h 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org****************************************************************************** 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef HEBRWCAL_H 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define HEBRWCAL_H 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/calendar.h" 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/gregocal.h" 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code> 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * that that implements the traditional Hebrew calendar. 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This is the civil calendar in Israel and the liturgical calendar 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of the Jewish faith worldwide. 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The Hebrew calendar is lunisolar and thus has a number of interesting 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * properties that distinguish it from the Gregorian. Months start 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * on the day of (an arithmetic approximation of) each new moon. Since the 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * solar year (approximately 365.24 days) is not an even multiple of 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the lunar month (approximately 29.53 days) an extra "leap month" is 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * inserted in 7 out of every 19 years. To make matters even more 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * interesting, the start of a year can be delayed by up to three days 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in order to prevent certain holidays from falling on the Sabbath and 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to prevent certain illegal year lengths. Finally, the lengths of certain 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * months can vary depending on the number of days in the year. 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The leap month is known as "Adar 1" and is inserted between the 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * months of Shevat and Adar in leap years. Since the leap month does 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * not come at the end of the year, calculations involving 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * month numbers are particularly complex. Users of this class should 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * make sure to use the {@link #roll roll} and {@link #add add} methods 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * rather than attempting to perform date arithmetic by manipulating 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the fields directly. 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset. 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * However, in order to keep the time fields in this class 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * synchronized with those of the other calendars and with local clock time, 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * we treat days and months as beginning at midnight, 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * roughly 6 hours after the corresponding sunset. 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If you are interested in more information on the rules behind the Hebrew 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * calendar, see one of the following references: 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <ul> 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>", 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91. 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>Hebrew Calendar Science and Myths, 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://www.geocities.com/Athens/1584/"> 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.geocities.com/Athens/1584/</a> 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>The Calendar FAQ, 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://www.faqs.org/faqs/calendars/faq/"> 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.faqs.org/faqs/calendars/faq/</a> 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </ul> 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see com.ibm.icu.util.GregorianCalendar 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @author Laura Werner 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @author Alan Liu 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @author Steven R. Loomis 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass U_I18N_API HebrewCalendar : public Calendar { 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Useful constants for HebrewCalendar. 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org enum EEras { 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Tishri, the 1st month of the Hebrew year. 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TISHRI, 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Heshvan, the 2nd month of the Hebrew year. 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org HESHVAN, 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Kislev, the 3rd month of the Hebrew year. 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org KISLEV, 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Tevet, the 4th month of the Hebrew year. 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TEVET, 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Shevat, the 5th month of the Hebrew year. 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SHEVAT, 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Adar I, the 6th month of the Hebrew year 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (present in leap years only). In non-leap years, the calendar 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * jumps from Shevat (5th month) to Adar (7th month). 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ADAR_1, 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for the Adar, the 7th month of the Hebrew year. 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ADAR, 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Nisan, the 8th month of the Hebrew year. 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org NISAN, 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Iyar, the 9th month of the Hebrew year. 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org IYAR, 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Sivan, the 10th month of the Hebrew year. 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SIVAN, 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Tammuz, the 11th month of the Hebrew year. 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TAMUZ, 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Av, the 12th month of the Hebrew year. 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AV, 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constant for Elul, the 13th month of the Hebrew year. 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ELUL 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Constructs a HebrewCalendar based on the current time in the default time zone 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * with the given locale. 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param aLocale The given locale. 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param success Indicates the status of HebrewCalendar object construction. 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns U_ZERO_ERROR if constructed successfully. 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org HebrewCalendar(const Locale& aLocale, UErrorCode& success); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Destructor 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~HebrewCalendar(); 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copy constructor 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param source the object to be copied. 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org HebrewCalendar(const HebrewCalendar& source); 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Default assignment operator 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param right the object to be copied. 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org HebrewCalendar& operator=(const HebrewCalendar& right); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create and return a polymorphic copy of this calendar. 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return return a polymorphic copy of this calendar. 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual Calendar* clone(void) const; 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * override. This method is to implement a simple version of RTTI, since not all C++ 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * this method. 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The class ID for this object. All objects of a given class have the 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * same class ID. Objects of other classes have different class IDs. 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UClassID getDynamicClassID(void) const; 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return the class ID for this class. This is useful only for comparing to a return 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * value from getDynamicClassID(). For example: 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Base* polymorphic_pointer = createPolymorphicObject(); 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if (polymorphic_pointer->getDynamicClassID() == 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Derived::getStaticClassID()) ... 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The class ID for all objects of this class. 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UClassID U_EXPORT2 getStaticClassID(void); 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * return the calendar type, "hebrew". 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return calendar type 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual const char * getType() const; 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Calendar API 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org public: 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (Overrides Calendar) UDate Arithmetic function. Adds the specified (signed) amount 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of time to the given time field, based on the calendar's rules. For more 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * information, see the documentation for Calendar::add(). 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param field The time field. 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param amount The amount of date or time to be added to the field. 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Output param set to success/failure code on exit. If any value 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * previously set in the time field is invalid, this will be set to 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * an error status. 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void add(UCalendarDateFields field, int32_t amount, UErrorCode& status); 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @deprecated ICU 2.6 use UCalendarDateFields instead of EDateFields 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void add(EDateFields field, int32_t amount, UErrorCode& status); 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (Overrides Calendar) Rolls up or down by the given amount in the specified field. 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For more information, see the documentation for Calendar::roll(). 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param field The time field. 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param amount Indicates amount to roll. 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Output param set to success/failure code on exit. If any value 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * previously set in the time field is invalid, this will be set to 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * an error status. 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status); 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (Overrides Calendar) Rolls up or down by the given amount in the specified field. 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For more information, see the documentation for Calendar::roll(). 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param field The time field. 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param amount Indicates amount to roll. 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Output param set to success/failure code on exit. If any value 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * previously set in the time field is invalid, this will be set to 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * an error status. 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org` */ 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool isLeapYear(int32_t year) ; 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org protected: 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Subclass API for defining limits of different types. 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Subclasses must implement this method to return limits for the 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * following fields: 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <pre>UCAL_ERA 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_YEAR 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_MONTH 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_WEEK_OF_YEAR 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_WEEK_OF_MONTH 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_DATE (DAY_OF_MONTH on Java) 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_DAY_OF_YEAR 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_DAY_OF_WEEK_IN_MONTH 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_YEAR_WOY 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UCAL_EXTENDED_YEAR</pre> 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param field one of the above field numbers 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>, 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code> 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return the number of days in the given month of the given extended 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * year of this calendar system. Subclasses should override this 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * method if they can provide a more correct or more efficient 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * implementation than the default implementation in Calendar. 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return the number of days in the given extended year of this 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * calendar system. Subclasses should override this method if they can 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * provide a more correct or more efficient implementation than the 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * default implementation in Calendar. 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t handleGetYearLength(int32_t eyear) const; 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Subclasses may override this method to compute several fields 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * specific to each calendar system. These are: 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <ul><li>ERA 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>YEAR 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>MONTH 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>DAY_OF_MONTH 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>DAY_OF_YEAR 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>EXTENDED_YEAR</ul> 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p>The GregorianCalendar implementation implements 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a calendar with the specified Julian/Gregorian cutover date. 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return the extended year defined by the current fields. This will 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * as UCAL_ERA) specific to the calendar system, depending on which set of 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * fields is newer. 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the extended year 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t handleGetExtendedYear(); 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return the Julian day number of day before the first day of the 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * given month in the given extended year. Subclasses should override 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * this method to implement their calendar system. 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param eyear the extended year 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param month the zero-based month, or 0 if useMonth is false 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param useMonth if false, compute the day before the first day of 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the given year, otherwise, compute the day before the first day of 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the given month 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param return the Julian day number of the day before the first 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * day of the given month and year 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool useMonth) const; 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org protected: 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * (Overrides Calendar) Return true if the current date for this Calendar is in 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Daylight Savings Time. Recognizes DST_OFFSET, if it is set. 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Fill-in parameter which receives the status of this operation. 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return True if the current date for this Calendar is in Daylight Savings Time, 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * false, otherwise. 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UBool inDaylightTime(UErrorCode& status) const; 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns TRUE because the Hebrew Calendar does have a default century 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UBool haveDefaultCentury() const; 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the date of the start of the default century 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return start of century - in milliseconds since epoch, 1970 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UDate defaultCenturyStart() const; 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the year in which the default century begins 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t defaultCenturyStartYear() const; 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private: // Calendar-specific implementation 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Finds the day # of the first day in the given Hebrew year. 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To do this, we want to calculate the time of the Tishri 1 new moon 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * in that year. 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The algorithm here is similar to ones described in a number of 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * references, including: 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <ul> 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold, 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Cambridge University Press, 1997, pages 85-91. 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>Hebrew Calendar Science and Myths, 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://www.geocities.com/Athens/1584/"> 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.geocities.com/Athens/1584/</a> 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <li>The Calendar FAQ, 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <a href="http://www.faqs.org/faqs/calendars/faq/"> 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.faqs.org/faqs/calendars/faq/</a> 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * </ul> 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param year extended year 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return day number (JD) 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static int32_t startOfYear(int32_t year, UErrorCode& status); 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static int32_t absoluteDayToDayOfWeek(int32_t day) ; 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t yearType(int32_t year) const; 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static int32_t monthsInYear(int32_t year) ; 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_FORMATTING */ 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//eof 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 444