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