ac7d853b91
X-SVN-Rev: 23657
273 lines
7.9 KiB
C++
273 lines
7.9 KiB
C++
/*
|
|
*******************************************************************************
|
|
* 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
|