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