16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2003 - 2013, International Business Machines Corporation and
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* others. All Rights Reserved.
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h"
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "umutex.h"
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "ethpccal.h"
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cecal.h"
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <float.h>
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUOBJECT_DEFINE_RTTI_IMPLEMENTATION(EthiopicCalendar)
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//static const int32_t JD_EPOCH_OFFSET_AMETE_ALEM = -285019;
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const int32_t JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856;
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const int32_t AMETE_MIHRET_DELTA = 5500; // 5501 - 1 (Amete Alem 5501 = Amete Mihret 1)
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Constructors...
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::EthiopicCalendar(const Locale& aLocale,
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                   UErrorCode& success,
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org                                   EEraType type /*= AMETE_MIHRET_ERA*/)
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org:   CECalendar(aLocale, success),
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    eraType(type)
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::EthiopicCalendar(const EthiopicCalendar& other)
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org:   CECalendar(other),
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    eraType(other.eraType)
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::~EthiopicCalendar()
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgCalendar*
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::clone() const
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return new EthiopicCalendar(*this);
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst char *
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::getType() const
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (isAmeteAlemEra()) {
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return "ethiopic-amete-alem";
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return "ethiopic";
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::setAmeteAlemEra(UBool onOff)
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA;
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool
696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::isAmeteAlemEra() const
706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return (eraType == AMETE_ALEM_ERA);
726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Calendar framework
766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t
796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleGetExtendedYear()
806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // Ethiopic calendar uses EXTENDED_YEAR aligned to
826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // Amelete Hihret year always.
836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int32_t eyear;
846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) {
856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        eyear = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    } else if (isAmeteAlemEra()) {
876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        eyear = internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA)
886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret
896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    } else {
906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        // The year defaults to the epoch start, the era to AMETE_MIHRET
916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        int32_t era = internalGet(UCAL_ERA, AMETE_MIHRET);
926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (era == AMETE_MIHRET) {
936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            eyear = internalGet(UCAL_YEAR, 1); // Default to year 1
946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            eyear = internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA;
966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return eyear;
996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid
1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/)
1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    int32_t eyear, month, day, era, year;
1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    jdToCE(julianDay, getJDEpochOffset(), eyear, month, day);
1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (isAmeteAlemEra()) {
1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        era = AMETE_ALEM;
1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        year = eyear + AMETE_MIHRET_DELTA;
1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    } else {
1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        if (eyear > 0) {
1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            era = AMETE_MIHRET;
1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            year = eyear;
1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        } else {
1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            era = AMETE_ALEM;
1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org            year = eyear + AMETE_MIHRET_DELTA;
1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        }
1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_EXTENDED_YEAR, eyear);
1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_ERA, era);
1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_YEAR, year);
1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_MONTH, month);
1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_DATE, day);
1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day);
1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t
1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const
1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (isAmeteAlemEra() && field == UCAL_ERA) {
1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return 0; // Only one era in this mode, era is always 0
1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return CECalendar::handleGetLimit(field, limitType);
1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/**
1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The system maintains a static default century start date and Year.  They are
1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * initialized the first time they are used.  Once the system default century date
1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and year are set, they do not change.
1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */
1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic UDate           gSystemDefaultCenturyStart       = DBL_MIN;
1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic int32_t         gSystemDefaultCenturyStartYear   = -1;
1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic icu::UInitOnce  gSystemDefaultCenturyInit        = U_INITONCE_INITIALIZER;
1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void U_CALLCONV initializeSystemDefaultCentury()
1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UErrorCode status = U_ZERO_ERROR;
1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    EthiopicCalendar calendar(Locale("@calendar=ethiopic"), status);
1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (U_SUCCESS(status)) {
1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        calendar.setTime(Calendar::getNow(), status);
1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        calendar.add(UCAL_YEAR, -80, status);
1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        gSystemDefaultCenturyStart = calendar.getTime(status);
1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status);
1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // We have no recourse upon failure unless we want to propagate the failure
1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // out.
1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUDate
1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::defaultCenturyStart() const
1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // lazy-evaluate systemDefaultCenturyStart
1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return gSystemDefaultCenturyStart;
1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t
1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::defaultCenturyStartYear() const
1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // lazy-evaluate systemDefaultCenturyStartYear
1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury);
1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    if (isAmeteAlemEra()) {
1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        return gSystemDefaultCenturyStartYear + AMETE_MIHRET_DELTA;
1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    }
1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return gSystemDefaultCenturyStartYear;
1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t
1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::getJDEpochOffset() const
1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return JD_EPOCH_OFFSET_AMETE_MIHRET;
1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if 0
1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// We do not want to introduce this API in ICU4C.
1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// It was accidentally introduced in ICU4J as a public API.
1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Calendar system Conversion methods...
1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//-------------------------------------------------------------------------
1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t
1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::ethiopicToJD(int32_t year, int32_t month, int32_t date)
1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{
1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET);
2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}
2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END
2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
206