| /* | 
 | ******************************************************************************* | 
 | * Copyright (C) 2003 - 2013, 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; | 
 |  | 
 |  | 
 | 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 |