1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)/* 2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)******************************************************************************* 3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* Copyright (C) 2003 - 2009, International Business Machines Corporation and * 4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)* others. All Rights Reserved. * 5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)******************************************************************************* 6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)*/ 7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "unicode/utypes.h" 9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#if !UCONFIG_NO_FORMATTING 11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "umutex.h" 13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "ethpccal.h" 14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include "cecal.h" 15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#include <float.h> 16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)U_NAMESPACE_BEGIN 18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)UOBJECT_DEFINE_RTTI_IMPLEMENTATION(EthiopicCalendar) 20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//static const int32_t JD_EPOCH_OFFSET_AMETE_ALEM = -285019; 22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const int32_t JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; 23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)static const int32_t AMETE_MIHRET_DELTA = 5500; // 5501 - 1 (Amete Alem 5501 = Amete Mihret 1) 24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)// Constructors... 27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::EthiopicCalendar(const Locale& aLocale, 30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UErrorCode& success, 31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) EEraType type /*= AMETE_MIHRET_ERA*/) 32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles): CECalendar(aLocale, success), 33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eraType(type) 34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::EthiopicCalendar(const EthiopicCalendar& other) 38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles): CECalendar(other), 39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eraType(other.eraType) 40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::~EthiopicCalendar() 44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)Calendar* 48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::clone() const 49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return new EthiopicCalendar(*this); 51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)const char * 54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::getType() const 55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (isAmeteAlemEra()) { 57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return "ethiopic-amete-alem"; 58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return "ethiopic"; 60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)void 63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::setAmeteAlemEra(UBool onOff) 64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA; 66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)UBool 69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::isAmeteAlemEra() const 70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return (eraType == AMETE_ALEM_ERA); 72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)// Calendar framework 76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t 79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::handleGetExtendedYear() 80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Ethiopic calendar uses EXTENDED_YEAR aligned to 82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Amelete Hihret year always. 83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t eyear; 84f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) { 85f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eyear = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1 86f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else if (isAmeteAlemEra()) { 87f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eyear = internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA) 88f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret 89f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 90f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // The year defaults to the epoch start, the era to AMETE_MIHRET 91f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t era = internalGet(UCAL_ERA, AMETE_MIHRET); 92f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (era == AMETE_MIHRET) { 93f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eyear = internalGet(UCAL_YEAR, 1); // Default to year 1 94f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 95f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) eyear = internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA; 96f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 97f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 98f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return eyear; 99f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 100f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 101f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)void 102f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/) 103f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 104f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t eyear, month, day, era, year; 105f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) jdToCE(julianDay, getJDEpochOffset(), eyear, month, day); 106f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 107f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (isAmeteAlemEra()) { 108f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) era = AMETE_ALEM; 109f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) year = eyear + AMETE_MIHRET_DELTA; 110f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 111f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (eyear > 0) { 112f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) era = AMETE_MIHRET; 113f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) year = eyear; 114f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 115f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) era = AMETE_ALEM; 116f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) year = eyear + AMETE_MIHRET_DELTA; 117f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 118f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 119f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 120f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_EXTENDED_YEAR, eyear); 121f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_ERA, era); 122f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_YEAR, year); 123f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_MONTH, month); 124f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_DATE, day); 125f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day); 126f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 127f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 128f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t 129f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const 130f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 131f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (isAmeteAlemEra() && field == UCAL_ERA) { 132f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return 0; // Only one era in this mode, era is always 0 133f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 134f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return CECalendar::handleGetLimit(field, limitType); 135f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 136f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 137f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)const UDate EthiopicCalendar::fgSystemDefaultCentury = DBL_MIN; 138f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)const int32_t EthiopicCalendar::fgSystemDefaultCenturyYear = -1; 139f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 140f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)UDate EthiopicCalendar::fgSystemDefaultCenturyStart = DBL_MIN; 141f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t EthiopicCalendar::fgSystemDefaultCenturyStartYear = -1; 142f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 143f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)UDate 144f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::defaultCenturyStart() const 145f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 146f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) initializeSystemDefaultCentury(); 147f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return fgSystemDefaultCenturyStart; 148f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 149f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 150f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t 151f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::defaultCenturyStartYear() const 152f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 153f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) initializeSystemDefaultCentury(); 154f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (isAmeteAlemEra()) { 155f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return fgSystemDefaultCenturyStartYear + AMETE_MIHRET_DELTA; 156f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 157f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return fgSystemDefaultCenturyStartYear; 158f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 159f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 160f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)void 161f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::initializeSystemDefaultCentury() 162f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 163f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // lazy-evaluate systemDefaultCenturyStart 164f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UBool needsUpdate; 165f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UMTX_CHECK(NULL, (fgSystemDefaultCenturyStart == fgSystemDefaultCentury), needsUpdate); 166f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 167f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (!needsUpdate) { 168f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return; 169f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 170f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 171f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UErrorCode status = U_ZERO_ERROR; 172f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 173f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) EthiopicCalendar calendar(Locale("@calendar=ethiopic"), status); 174f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (U_SUCCESS(status)) { 175f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) calendar.setTime(Calendar::getNow(), status); 176f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) calendar.add(UCAL_YEAR, -80, status); 177f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) UDate newStart = calendar.getTime(status); 178f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) int32_t newYear = calendar.get(UCAL_YEAR, status); 179f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) { 180f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) umtx_lock(NULL); 181f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) fgSystemDefaultCenturyStartYear = newYear; 182f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) fgSystemDefaultCenturyStart = newStart; 183f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) umtx_unlock(NULL); 184f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 185f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 186f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // We have no recourse upon failure unless we want to propagate the failure 187f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // out. 188f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 189f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 190f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t 191f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::getJDEpochOffset() const 192f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 193f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return JD_EPOCH_OFFSET_AMETE_MIHRET; 194f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 195f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 196f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 197f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#if 0 198f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)// We do not want to introduce this API in ICU4C. 199f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)// It was accidentally introduced in ICU4J as a public API. 200f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 201f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 202f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)// Calendar system Conversion methods... 203f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)//------------------------------------------------------------------------- 204f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 205f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)int32_t 206f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)EthiopicCalendar::ethiopicToJD(int32_t year, int32_t month, int32_t date) 207f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles){ 208f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET); 209f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 210f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#endif 211f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 212f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)U_NAMESPACE_END 213f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 214f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)#endif 215