Home | History | Annotate | Download | only in i18n
      1 //  2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 *******************************************************************************
      5 * Copyright (C) 2003 - 2008, International Business Machines Corporation and  *
      6 * others. All Rights Reserved.                                                *
      7 *******************************************************************************
      8 */
      9 
     10 #ifndef CECAL_H
     11 #define CECAL_H
     12 
     13 #include "unicode/utypes.h"
     14 
     15 #if !UCONFIG_NO_FORMATTING
     16 
     17 #include "unicode/calendar.h"
     18 
     19 U_NAMESPACE_BEGIN
     20 
     21 /**
     22  * Base class for EthiopicCalendar and CopticCalendar.
     23  * @internal
     24  */
     25 class U_I18N_API CECalendar : public Calendar {
     26 
     27 protected:
     28     //-------------------------------------------------------------------------
     29     // Constructors...
     30     //-------------------------------------------------------------------------
     31 
     32     /**
     33      * Constructs a CECalendar based on the current time in the default time zone
     34      * with the given locale with the Julian epoch offiset
     35      *
     36      * @param aLocale  The given locale.
     37      * @param success  Indicates the status of CECalendar object construction.
     38      *                 Returns U_ZERO_ERROR if constructed successfully.
     39      * @internal
     40      */
     41     CECalendar(const Locale& aLocale, UErrorCode& success);
     42 
     43     /**
     44      * Copy Constructor
     45      * @internal
     46      */
     47     CECalendar (const CECalendar& other);
     48 
     49     /**
     50      * Destructor.
     51      * @internal
     52      */
     53     virtual ~CECalendar();
     54 
     55     /**
     56      * Default assignment operator
     57      * @param right    Calendar object to be copied
     58      * @internal
     59      */
     60     CECalendar& operator=(const CECalendar& right);
     61 
     62 protected:
     63     //-------------------------------------------------------------------------
     64     // Calendar framework
     65     //-------------------------------------------------------------------------
     66 
     67     /**
     68      * Return JD of start of given month/extended year
     69      * @internal
     70      */
     71     virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const;
     72 
     73     /**
     74      * Calculate the limit for a specified type of limit and field
     75      * @internal
     76      */
     77     virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
     78 
     79     /**
     80      * (Overrides Calendar) Return true if the current date for this Calendar is in
     81      * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
     82      *
     83      * @param status Fill-in parameter which receives the status of this operation.
     84      * @return   True if the current date for this Calendar is in Daylight Savings Time,
     85      *           false, otherwise.
     86      * @internal
     87      */
     88     virtual UBool inDaylightTime(UErrorCode&) const;
     89 
     90     /**
     91      * Returns TRUE because Coptic/Ethiopic Calendar does have a default century
     92      * @internal
     93      */
     94     virtual UBool haveDefaultCentury() const;
     95 
     96 protected:
     97     /**
     98      * The Coptic and Ethiopic calendars differ only in their epochs.
     99      * This method must be implemented by CECalendar subclasses to
    100      * return the date offset from Julian
    101      * @internal
    102      */
    103     virtual int32_t getJDEpochOffset() const = 0;
    104 
    105     /**
    106      * Convert an Coptic/Ethiopic year, month, and day to a Julian day.
    107      *
    108      * @param year the extended year
    109      * @param month the month
    110      * @param day the day
    111      * @param jdEpochOffset the epoch offset from Julian epoch
    112      * @return Julian day
    113      * @internal
    114      */
    115     static int32_t ceToJD(int32_t year, int32_t month, int32_t date,
    116         int32_t jdEpochOffset);
    117 
    118     /**
    119      * Convert a Julian day to an Coptic/Ethiopic year, month and day
    120      *
    121      * @param julianDay the Julian day
    122      * @param jdEpochOffset the epoch offset from Julian epoch
    123      * @param year receives the extended year
    124      * @param month receives the month
    125      * @param date receives the day
    126      * @internal
    127      */
    128     static void jdToCE(int32_t julianDay, int32_t jdEpochOffset,
    129         int32_t& year, int32_t& month, int32_t& day);
    130 };
    131 
    132 U_NAMESPACE_END
    133 
    134 #endif /* #if !UCONFIG_NO_FORMATTING */
    135 #endif
    136 //eof
    137