185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/*
285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*******************************************************************************
385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* Copyright (C) 2003 - 2008, International Business Machines Corporation and  *
485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* others. All Rights Reserved.                                                *
585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*******************************************************************************
685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/
785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#ifndef CECAL_H
985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define CECAL_H
1085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/utypes.h"
1285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if !UCONFIG_NO_FORMATTING
1485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/calendar.h"
1685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1785bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_BEGIN
1885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/**
2085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Base class for EthiopicCalendar and CopticCalendar.
2185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal
2285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */
2385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass U_I18N_API CECalendar : public Calendar {
2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
2585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected:
2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // Constructors...
2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Constructs a CECalendar based on the current time in the default time zone
3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * with the given locale with the Julian epoch offiset
3385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param aLocale  The given locale.
3585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param success  Indicates the status of CECalendar object construction.
3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *                 Returns U_ZERO_ERROR if constructed successfully.
3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
3985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    CECalendar(const Locale& aLocale, UErrorCode& success);
4085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
4185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
4285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Copy Constructor
4385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    CECalendar (const CECalendar& other);
4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Destructor.
4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual ~CECalendar();
5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
5485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Default assignment operator
5585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param right    Calendar object to be copied
5685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    CECalendar& operator=(const CECalendar& right);
5985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
6085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected:
6185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
6285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // Calendar framework
6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
6585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
6685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Return JD of start of given month/extended year
6785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const;
7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Calculate the limit for a specified type of limit and field
7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
7685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * (Overrides Calendar) Return true if the current date for this Calendar is in
7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
8185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param status Fill-in parameter which receives the status of this operation.
8285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return   True if the current date for this Calendar is in Daylight Savings Time,
8385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *           false, otherwise.
8485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
8585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
8685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual UBool inDaylightTime(UErrorCode&) const;
8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
8885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
8985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Returns TRUE because Coptic/Ethiopic Calendar does have a default century
9085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
9185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual UBool haveDefaultCentury() const;
9385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
9485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected:
9585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
9685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * The Coptic and Ethiopic calendars differ only in their epochs.
9785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * This method must be implemented by CECalendar subclasses to
9885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * return the date offset from Julian
9985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
10085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
10185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t getJDEpochOffset() const = 0;
10285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
10385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
10485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Convert an Coptic/Ethiopic year, month, and day to a Julian day.
10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
10685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param year the extended year
10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param month the month
10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param day the day
10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param jdEpochOffset the epoch offset from Julian epoch
11085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return Julian day
11185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    static int32_t ceToJD(int32_t year, int32_t month, int32_t date,
11485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        int32_t jdEpochOffset);
11585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
11685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
11785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Convert a Julian day to an Coptic/Ethiopic year, month and day
11885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
11985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param julianDay the Julian day
12085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param jdEpochOffset the epoch offset from Julian epoch
12185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param year receives the extended year
12285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param month receives the month
12385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param date receives the day
12485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
12585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
12685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    static void jdToCE(int32_t julianDay, int32_t jdEpochOffset,
12785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        int32_t& year, int32_t& month, int32_t& day);
12885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho};
12985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
13085bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_END
13185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
13285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* #if !UCONFIG_NO_FORMATTING */
13385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif
13485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//eof
135