185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/* 285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************* 385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* Copyright (C) 2003 - 2008, International Business Machines Corporation and * 485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* others. All Rights Reserved. * 585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************* 685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/ 785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#ifndef CECAL_H 985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define CECAL_H 1085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/utypes.h" 1285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if !UCONFIG_NO_FORMATTING 1485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/calendar.h" 1685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1785bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_BEGIN 1885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 1985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 2085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Base class for EthiopicCalendar and CopticCalendar. 2185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 2285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 2385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass U_I18N_API CECalendar : public Calendar { 2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 2585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected: 2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Constructors... 2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Constructs a CECalendar based on the current time in the default time zone 3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * with the given locale with the Julian epoch offiset 3385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param aLocale The given locale. 3585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param success Indicates the status of CECalendar object construction. 3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Returns U_ZERO_ERROR if constructed successfully. 3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 3985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CECalendar(const Locale& aLocale, UErrorCode& success); 4085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 4185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 4285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Copy Constructor 4385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CECalendar (const CECalendar& other); 4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Destructor. 4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual ~CECalendar(); 5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 5485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Default assignment operator 5585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param right Calendar object to be copied 5685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho CECalendar& operator=(const CECalendar& right); 5985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected: 6185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 6285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Calendar framework 6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //------------------------------------------------------------------------- 6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 6585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 6685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Return JD of start of given month/extended year 6785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; 7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Calculate the limit for a specified type of limit and field 7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; 7685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * (Overrides Calendar) Return true if the current date for this Calendar is in 7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Daylight Savings Time. Recognizes DST_OFFSET, if it is set. 8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 8185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param status Fill-in parameter which receives the status of this operation. 8285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return True if the current date for this Calendar is in Daylight Savings Time, 8385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * false, otherwise. 8485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 8585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 8685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual UBool inDaylightTime(UErrorCode&) const; 8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 8885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 8985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Returns TRUE because Coptic/Ethiopic Calendar does have a default century 9085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 9185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual UBool haveDefaultCentury() const; 9385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 9485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected: 9585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 9685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * The Coptic and Ethiopic calendars differ only in their epochs. 9785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * This method must be implemented by CECalendar subclasses to 9885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * return the date offset from Julian 9985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 10085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 10185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual int32_t getJDEpochOffset() const = 0; 10285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 10385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 10485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Convert an Coptic/Ethiopic year, month, and day to a Julian day. 10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 10685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param year the extended year 10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param month the month 10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param day the day 10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param jdEpochOffset the epoch offset from Julian epoch 11085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @return Julian day 11185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho static int32_t ceToJD(int32_t year, int32_t month, int32_t date, 11485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t jdEpochOffset); 11585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 11685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /** 11785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Convert a Julian day to an Coptic/Ethiopic year, month and day 11885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * 11985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param julianDay the Julian day 12085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param jdEpochOffset the epoch offset from Julian epoch 12185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param year receives the extended year 12285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param month receives the month 12385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param date receives the day 12485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal 12585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 12685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho static void jdToCE(int32_t julianDay, int32_t jdEpochOffset, 12785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho int32_t& year, int32_t& month, int32_t& day); 12885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho}; 12985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 13085bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_END 13185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 13285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* #if !UCONFIG_NO_FORMATTING */ 13385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif 13485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//eof 135