]>
Commit | Line | Data |
---|---|---|
46f4442e A |
1 | /* |
2 | ******************************************************************************* | |
57a6839d | 3 | * Copyright (C) 2003 - 2013, International Business Machines Corporation and * |
46f4442e A |
4 | * others. All Rights Reserved. * |
5 | ******************************************************************************* | |
6 | */ | |
7 | ||
8 | #ifndef COPTCCAL_H | |
9 | #define COPTCCAL_H | |
10 | ||
11 | #include "unicode/utypes.h" | |
12 | ||
13 | #if !UCONFIG_NO_FORMATTING | |
14 | ||
15 | #include "unicode/calendar.h" | |
16 | #include "cecal.h" | |
17 | ||
18 | U_NAMESPACE_BEGIN | |
19 | ||
20 | /** | |
21 | * Implement the Coptic calendar system. | |
22 | * @internal | |
23 | */ | |
24 | class CopticCalendar : public CECalendar { | |
25 | ||
26 | public: | |
27 | /** | |
28 | * Useful constants for CopticCalendar. | |
29 | * @internal | |
30 | */ | |
31 | enum EMonths { | |
32 | /** | |
33 | * Constant for ωογτ/تﻮﺗ, | |
34 | * the 1st month of the Coptic year. | |
35 | */ | |
36 | TOUT, | |
37 | ||
38 | /** | |
39 | * Constant for Παοπι/ﻪﺑﺎﺑ, | |
40 | * the 2nd month of the Coptic year. | |
41 | */ | |
42 | BABA, | |
43 | ||
44 | /** | |
45 | * Constant for Αθορ/رﻮﺗﺎﻫ, | |
46 | * the 3rd month of the Coptic year. | |
47 | */ | |
48 | HATOR, | |
49 | ||
50 | /** | |
51 | * Constant for Χοιακ/ﻚﻬﻴﻛ, | |
52 | * the 4th month of the Coptic year. | |
53 | */ | |
54 | KIAHK, | |
55 | ||
56 | /** | |
57 | * Constant for Τωβι/طﻮﺒﻫ, | |
58 | * the 5th month of the Coptic year. | |
59 | */ | |
60 | TOBA, | |
61 | ||
62 | /** | |
63 | * Constant for Μεϣιρ/ﺮﻴﺸﻣأ, | |
64 | * the 6th month of the Coptic year. | |
65 | */ | |
66 | AMSHIR, | |
67 | ||
68 | /** | |
69 | * Constant for Παρεμϩατ/تﺎﻬﻣﺮﺑ, | |
70 | * the 7th month of the Coptic year. | |
71 | */ | |
72 | BARAMHAT, | |
73 | ||
74 | /** | |
75 | * Constant for Φαρμοθι/هدﻮﻣﺮﺑ, | |
76 | * the 8th month of the Coptic year. | |
77 | */ | |
78 | BARAMOUDA, | |
79 | ||
80 | /** | |
81 | * Constant for Παϣαν/ﺲﻨﺸﺑ, | |
82 | * the 9th month of the Coptic year. | |
83 | */ | |
84 | BASHANS, | |
85 | ||
86 | /** | |
87 | * Constant for Παωνι/ﻪﻧؤﻮﺑ, | |
88 | * the 10th month of the Coptic year. | |
89 | */ | |
90 | PAONA, | |
91 | ||
92 | /** | |
93 | * Constant for Επηπ/ﺐﻴﺑأ, | |
94 | * the 11th month of the Coptic year. | |
95 | */ | |
96 | EPEP, | |
97 | ||
98 | /** | |
99 | * Constant for Μεϲωρη/ىﺮﺴﻣ, | |
100 | * the 12th month of the Coptic year. | |
101 | */ | |
102 | MESRA, | |
103 | ||
104 | /** | |
105 | * Constant for Πικογϫι | |
106 | * μαβοτ/ﺮﻴﻐﺼﻟا | |
107 | * ﺮﻬﺸﻟا, | |
108 | * the 13th month of the Coptic year. | |
109 | */ | |
110 | NASIE | |
111 | }; | |
112 | ||
113 | enum EEras { | |
114 | BCE, // Before the epoch | |
115 | CE // After the epoch | |
116 | }; | |
117 | ||
118 | /** | |
119 | * Constructs a CopticCalendar based on the current time in the default time zone | |
120 | * with the given locale. | |
121 | * | |
122 | * @param aLocale The given locale. | |
123 | * @param success Indicates the status of CopticCalendar object construction. | |
124 | * Returns U_ZERO_ERROR if constructed successfully. | |
125 | * @internal | |
126 | */ | |
127 | CopticCalendar(const Locale& aLocale, UErrorCode& success); | |
128 | ||
129 | /** | |
130 | * Copy Constructor | |
131 | * @internal | |
132 | */ | |
133 | CopticCalendar (const CopticCalendar& other); | |
134 | ||
135 | /** | |
136 | * Destructor. | |
137 | * @internal | |
138 | */ | |
139 | virtual ~CopticCalendar(); | |
140 | ||
141 | /** | |
142 | * Create and return a polymorphic copy of this calendar. | |
143 | * @return return a polymorphic copy of this calendar. | |
144 | * @internal | |
145 | */ | |
146 | virtual Calendar* clone(void) const; | |
147 | ||
148 | /** | |
149 | * return the calendar type, "coptic" | |
150 | * @return calendar type | |
151 | * @internal | |
152 | */ | |
153 | const char * getType() const; | |
154 | ||
155 | protected: | |
156 | //------------------------------------------------------------------------- | |
157 | // Calendar framework | |
158 | //------------------------------------------------------------------------- | |
159 | ||
160 | /** | |
161 | * Return the extended year defined by the current fields. | |
162 | * @internal | |
163 | */ | |
164 | virtual int32_t handleGetExtendedYear(); | |
165 | ||
166 | /** | |
167 | * Compute fields from the JD | |
168 | * @internal | |
169 | */ | |
170 | virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); | |
171 | ||
172 | /** | |
173 | * Returns the date of the start of the default century | |
174 | * @return start of century - in milliseconds since epoch, 1970 | |
175 | * @internal | |
176 | */ | |
177 | virtual UDate defaultCenturyStart() const; | |
178 | ||
179 | /** | |
180 | * Returns the year in which the default century begins | |
181 | * @internal | |
182 | */ | |
183 | virtual int32_t defaultCenturyStartYear() const; | |
184 | ||
185 | /** | |
186 | * Return the date offset from Julian | |
187 | * @internal | |
188 | */ | |
189 | virtual int32_t getJDEpochOffset() const; | |
190 | ||
46f4442e A |
191 | |
192 | public: | |
193 | /** | |
194 | * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual | |
195 | * override. This method is to implement a simple version of RTTI, since not all C++ | |
196 | * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call | |
197 | * this method. | |
198 | * | |
199 | * @return The class ID for this object. All objects of a given class have the | |
200 | * same class ID. Objects of other classes have different class IDs. | |
201 | * @internal | |
202 | */ | |
203 | virtual UClassID getDynamicClassID(void) const; | |
204 | ||
205 | /** | |
206 | * Return the class ID for this class. This is useful only for comparing to a return | |
207 | * value from getDynamicClassID(). For example: | |
208 | * | |
209 | * Base* polymorphic_pointer = createPolymorphicObject(); | |
210 | * if (polymorphic_pointer->getDynamicClassID() == | |
211 | * Derived::getStaticClassID()) ... | |
212 | * | |
213 | * @return The class ID for all objects of this class. | |
214 | * @internal | |
215 | */ | |
216 | U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void); | |
217 | ||
218 | #if 0 | |
219 | // We do not want to introduce this API in ICU4C. | |
220 | // It was accidentally introduced in ICU4J as a public API. | |
221 | public: | |
222 | //------------------------------------------------------------------------- | |
223 | // Calendar system Conversion methods... | |
224 | //------------------------------------------------------------------------- | |
225 | /** | |
226 | * Convert an Coptic year, month, and day to a Julian day. | |
227 | * | |
228 | * @param year the extended year | |
229 | * @param month the month | |
230 | * @param day the day | |
231 | * @return Julian day | |
232 | * @internal | |
233 | */ | |
234 | static int32_t copticToJD(int32_t year, int32_t month, int32_t day); | |
235 | #endif | |
236 | }; | |
237 | ||
238 | U_NAMESPACE_END | |
239 | ||
240 | #endif /* #if !UCONFIG_NO_FORMATTING */ | |
241 | #endif /* COPTCCAL_H */ | |
242 | //eof |