OLD | NEW |
(Empty) | |
| 1 /* |
| 2 ******************************************************************************* |
| 3 * Copyright (C) 2003 - 2008, International Business Machines Corporation and * |
| 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 * μαβοτ/ﺮﻴﻐ
ebc;ﻟا |
| 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 constructio
n. |
| 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 |
| 191 private: |
| 192 /** |
| 193 * The system maintains a static default century start date. This is initia
lized |
| 194 * the first time it is used. Before then, it is set to SYSTEM_DEFAULT_CENT
URY to |
| 195 * indicate an uninitialized state. Once the system default century date an
d year |
| 196 * are set, they do not change. |
| 197 */ |
| 198 static UDate fgSystemDefaultCenturyStart; |
| 199 |
| 200 /** |
| 201 * See documentation for systemDefaultCenturyStart. |
| 202 */ |
| 203 static int32_t fgSystemDefaultCenturyStartYear; |
| 204 |
| 205 /** |
| 206 * Default value that indicates the defaultCenturyStartYear is unitialized |
| 207 */ |
| 208 static const int32_t fgSystemDefaultCenturyYear; |
| 209 |
| 210 /** |
| 211 * start of default century, as a date |
| 212 */ |
| 213 static const UDate fgSystemDefaultCentury; |
| 214 |
| 215 /** |
| 216 * Initializes the 100-year window that dates with 2-digit years |
| 217 * are considered to fall within so that its start date is 80 years |
| 218 * before the current time. |
| 219 */ |
| 220 static void initializeSystemDefaultCentury(void); |
| 221 |
| 222 public: |
| 223 /** |
| 224 * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual |
| 225 * override. This method is to implement a simple version of RTTI, since not
all C++ |
| 226 * compilers support genuine RTTI. Polymorphic operator==() and clone() meth
ods call |
| 227 * this method. |
| 228 * |
| 229 * @return The class ID for this object. All objects of a given class have
the |
| 230 * same class ID. Objects of other classes have different class ID
s. |
| 231 * @internal |
| 232 */ |
| 233 virtual UClassID getDynamicClassID(void) const; |
| 234 |
| 235 /** |
| 236 * Return the class ID for this class. This is useful only for comparing to
a return |
| 237 * value from getDynamicClassID(). For example: |
| 238 * |
| 239 * Base* polymorphic_pointer = createPolymorphicObject(); |
| 240 * if (polymorphic_pointer->getDynamicClassID() == |
| 241 * Derived::getStaticClassID()) ... |
| 242 * |
| 243 * @return The class ID for all objects of this class. |
| 244 * @internal |
| 245 */ |
| 246 U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void); |
| 247 |
| 248 #if 0 |
| 249 // We do not want to introduce this API in ICU4C. |
| 250 // It was accidentally introduced in ICU4J as a public API. |
| 251 public: |
| 252 //------------------------------------------------------------------------- |
| 253 // Calendar system Conversion methods... |
| 254 //------------------------------------------------------------------------- |
| 255 /** |
| 256 * Convert an Coptic year, month, and day to a Julian day. |
| 257 * |
| 258 * @param year the extended year |
| 259 * @param month the month |
| 260 * @param day the day |
| 261 * @return Julian day |
| 262 * @internal |
| 263 */ |
| 264 static int32_t copticToJD(int32_t year, int32_t month, int32_t day); |
| 265 #endif |
| 266 }; |
| 267 |
| 268 U_NAMESPACE_END |
| 269 |
| 270 #endif /* #if !UCONFIG_NO_FORMATTING */ |
| 271 #endif /* COPTCCAL_H */ |
| 272 //eof |
OLD | NEW |