1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ******************************************************************************* 5 * Copyright (C) 2003 - 2008, International Business Machines Corporation and * 6 * others. All Rights Reserved. * 7 ******************************************************************************* 8 */ 9 10 #ifndef CECAL_H 11 #define CECAL_H 12 13 #include "unicode/utypes.h" 14 15 #if !UCONFIG_NO_FORMATTING 16 17 #include "unicode/calendar.h" 18 19 U_NAMESPACE_BEGIN 20 21 /** 22 * Base class for EthiopicCalendar and CopticCalendar. 23 * @internal 24 */ 25 class U_I18N_API CECalendar : public Calendar { 26 27 protected: 28 //------------------------------------------------------------------------- 29 // Constructors... 30 //------------------------------------------------------------------------- 31 32 /** 33 * Constructs a CECalendar based on the current time in the default time zone 34 * with the given locale with the Julian epoch offiset 35 * 36 * @param aLocale The given locale. 37 * @param success Indicates the status of CECalendar object construction. 38 * Returns U_ZERO_ERROR if constructed successfully. 39 * @internal 40 */ 41 CECalendar(const Locale& aLocale, UErrorCode& success); 42 43 /** 44 * Copy Constructor 45 * @internal 46 */ 47 CECalendar (const CECalendar& other); 48 49 /** 50 * Destructor. 51 * @internal 52 */ 53 virtual ~CECalendar(); 54 55 /** 56 * Default assignment operator 57 * @param right Calendar object to be copied 58 * @internal 59 */ 60 CECalendar& operator=(const CECalendar& right); 61 62 protected: 63 //------------------------------------------------------------------------- 64 // Calendar framework 65 //------------------------------------------------------------------------- 66 67 /** 68 * Return JD of start of given month/extended year 69 * @internal 70 */ 71 virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; 72 73 /** 74 * Calculate the limit for a specified type of limit and field 75 * @internal 76 */ 77 virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; 78 79 /** 80 * (Overrides Calendar) Return true if the current date for this Calendar is in 81 * Daylight Savings Time. Recognizes DST_OFFSET, if it is set. 82 * 83 * @param status Fill-in parameter which receives the status of this operation. 84 * @return True if the current date for this Calendar is in Daylight Savings Time, 85 * false, otherwise. 86 * @internal 87 */ 88 virtual UBool inDaylightTime(UErrorCode&) const; 89 90 /** 91 * Returns TRUE because Coptic/Ethiopic Calendar does have a default century 92 * @internal 93 */ 94 virtual UBool haveDefaultCentury() const; 95 96 protected: 97 /** 98 * The Coptic and Ethiopic calendars differ only in their epochs. 99 * This method must be implemented by CECalendar subclasses to 100 * return the date offset from Julian 101 * @internal 102 */ 103 virtual int32_t getJDEpochOffset() const = 0; 104 105 /** 106 * Convert an Coptic/Ethiopic year, month, and day to a Julian day. 107 * 108 * @param year the extended year 109 * @param month the month 110 * @param day the day 111 * @param jdEpochOffset the epoch offset from Julian epoch 112 * @return Julian day 113 * @internal 114 */ 115 static int32_t ceToJD(int32_t year, int32_t month, int32_t date, 116 int32_t jdEpochOffset); 117 118 /** 119 * Convert a Julian day to an Coptic/Ethiopic year, month and day 120 * 121 * @param julianDay the Julian day 122 * @param jdEpochOffset the epoch offset from Julian epoch 123 * @param year receives the extended year 124 * @param month receives the month 125 * @param date receives the day 126 * @internal 127 */ 128 static void jdToCE(int32_t julianDay, int32_t jdEpochOffset, 129 int32_t& year, int32_t& month, int32_t& day); 130 }; 131 132 U_NAMESPACE_END 133 134 #endif /* #if !UCONFIG_NO_FORMATTING */ 135 #endif 136 //eof 137