| /* |
| ******************************************************************************* |
| * Copyright (C) 2003 - 2008, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| */ |
| |
| #ifndef COPTCCAL_H |
| #define COPTCCAL_H |
| |
| #include "unicode/utypes.h" |
| |
| #if !UCONFIG_NO_FORMATTING |
| |
| #include "unicode/calendar.h" |
| #include "cecal.h" |
| |
| U_NAMESPACE_BEGIN |
| |
| /** |
| * Implement the Coptic calendar system. |
| * @internal |
| */ |
| class CopticCalendar : public CECalendar { |
| |
| public: |
| /** |
| * Useful constants for CopticCalendar. |
| * @internal |
| */ |
| enum EMonths { |
| /** |
| * Constant for ωογτ/تﻮﺗ, |
| * the 1st month of the Coptic year. |
| */ |
| TOUT, |
| |
| /** |
| * Constant for Παοπι/ﻪﺑﺎﺑ, |
| * the 2nd month of the Coptic year. |
| */ |
| BABA, |
| |
| /** |
| * Constant for Αθορ/رﻮﺗﺎﻫ, |
| * the 3rd month of the Coptic year. |
| */ |
| HATOR, |
| |
| /** |
| * Constant for Χοιακ/ﻚﻬﻴﻛ, |
| * the 4th month of the Coptic year. |
| */ |
| KIAHK, |
| |
| /** |
| * Constant for Τωβι/طﻮﺒﻫ, |
| * the 5th month of the Coptic year. |
| */ |
| TOBA, |
| |
| /** |
| * Constant for Μεϣιρ/ﺮﻴﺸﻣأ, |
| * the 6th month of the Coptic year. |
| */ |
| AMSHIR, |
| |
| /** |
| * Constant for Παρεμϩατ/تﺎﻬﻣﺮﺑ, |
| * the 7th month of the Coptic year. |
| */ |
| BARAMHAT, |
| |
| /** |
| * Constant for Φαρμοθι/هدﻮﻣﺮﺑ, |
| * the 8th month of the Coptic year. |
| */ |
| BARAMOUDA, |
| |
| /** |
| * Constant for Παϣαν/ﺲﻨﺸﺑ, |
| * the 9th month of the Coptic year. |
| */ |
| BASHANS, |
| |
| /** |
| * Constant for Παωνι/ﻪﻧؤﻮﺑ, |
| * the 10th month of the Coptic year. |
| */ |
| PAONA, |
| |
| /** |
| * Constant for Επηπ/ﺐﻴﺑأ, |
| * the 11th month of the Coptic year. |
| */ |
| EPEP, |
| |
| /** |
| * Constant for Μεϲωρη/ىﺮﺴﻣ, |
| * the 12th month of the Coptic year. |
| */ |
| MESRA, |
| |
| /** |
| * Constant for Πικογϫι |
| * μαβοτ/ﺮﻴﻐﺼﻟا |
| * ﺮﻬﺸﻟا, |
| * the 13th month of the Coptic year. |
| */ |
| NASIE |
| }; |
| |
| enum EEras { |
| BCE, // Before the epoch |
| CE // After the epoch |
| }; |
| |
| /** |
| * Constructs a CopticCalendar based on the current time in the default time zone |
| * with the given locale. |
| * |
| * @param aLocale The given locale. |
| * @param success Indicates the status of CopticCalendar object construction. |
| * Returns U_ZERO_ERROR if constructed successfully. |
| * @internal |
| */ |
| CopticCalendar(const Locale& aLocale, UErrorCode& success); |
| |
| /** |
| * Copy Constructor |
| * @internal |
| */ |
| CopticCalendar (const CopticCalendar& other); |
| |
| /** |
| * Destructor. |
| * @internal |
| */ |
| virtual ~CopticCalendar(); |
| |
| /** |
| * Create and return a polymorphic copy of this calendar. |
| * @return return a polymorphic copy of this calendar. |
| * @internal |
| */ |
| virtual Calendar* clone(void) const; |
| |
| /** |
| * return the calendar type, "coptic" |
| * @return calendar type |
| * @internal |
| */ |
| const char * getType() const; |
| |
| protected: |
| //------------------------------------------------------------------------- |
| // Calendar framework |
| //------------------------------------------------------------------------- |
| |
| /** |
| * Return the extended year defined by the current fields. |
| * @internal |
| */ |
| virtual int32_t handleGetExtendedYear(); |
| |
| /** |
| * Compute fields from the JD |
| * @internal |
| */ |
| virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); |
| |
| /** |
| * Returns the date of the start of the default century |
| * @return start of century - in milliseconds since epoch, 1970 |
| * @internal |
| */ |
| virtual UDate defaultCenturyStart() const; |
| |
| /** |
| * Returns the year in which the default century begins |
| * @internal |
| */ |
| virtual int32_t defaultCenturyStartYear() const; |
| |
| /** |
| * Return the date offset from Julian |
| * @internal |
| */ |
| virtual int32_t getJDEpochOffset() const; |
| |
| private: |
| /** |
| * The system maintains a static default century start date. This is initialized |
| * the first time it is used. Before then, it is set to SYSTEM_DEFAULT_CENTURY to |
| * indicate an uninitialized state. Once the system default century date and year |
| * are set, they do not change. |
| */ |
| static UDate fgSystemDefaultCenturyStart; |
| |
| /** |
| * See documentation for systemDefaultCenturyStart. |
| */ |
| static int32_t fgSystemDefaultCenturyStartYear; |
| |
| /** |
| * Default value that indicates the defaultCenturyStartYear is unitialized |
| */ |
| static const int32_t fgSystemDefaultCenturyYear; |
| |
| /** |
| * start of default century, as a date |
| */ |
| static const UDate fgSystemDefaultCentury; |
| |
| /** |
| * Initializes the 100-year window that dates with 2-digit years |
| * are considered to fall within so that its start date is 80 years |
| * before the current time. |
| */ |
| static void initializeSystemDefaultCentury(void); |
| |
| public: |
| /** |
| * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual |
| * override. This method is to implement a simple version of RTTI, since not all C++ |
| * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call |
| * this method. |
| * |
| * @return The class ID for this object. All objects of a given class have the |
| * same class ID. Objects of other classes have different class IDs. |
| * @internal |
| */ |
| virtual UClassID getDynamicClassID(void) const; |
| |
| /** |
| * Return the class ID for this class. This is useful only for comparing to a return |
| * value from getDynamicClassID(). For example: |
| * |
| * Base* polymorphic_pointer = createPolymorphicObject(); |
| * if (polymorphic_pointer->getDynamicClassID() == |
| * Derived::getStaticClassID()) ... |
| * |
| * @return The class ID for all objects of this class. |
| * @internal |
| */ |
| U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void); |
| |
| #if 0 |
| // We do not want to introduce this API in ICU4C. |
| // It was accidentally introduced in ICU4J as a public API. |
| public: |
| //------------------------------------------------------------------------- |
| // Calendar system Conversion methods... |
| //------------------------------------------------------------------------- |
| /** |
| * Convert an Coptic year, month, and day to a Julian day. |
| * |
| * @param year the extended year |
| * @param month the month |
| * @param day the day |
| * @return Julian day |
| * @internal |
| */ |
| static int32_t copticToJD(int32_t year, int32_t month, int32_t day); |
| #endif |
| }; |
| |
| U_NAMESPACE_END |
| |
| #endif /* #if !UCONFIG_NO_FORMATTING */ |
| #endif /* COPTCCAL_H */ |
| //eof |