ICU-4081 Fixed warnings

X-SVN-Rev: 22892
This commit is contained in:
Andrew J Macheret 2007-11-06 20:09:52 +00:00
parent 823b13cee5
commit 4fc941c249
2 changed files with 19 additions and 4 deletions

View file

@ -177,7 +177,7 @@ int32_t ChineseCalendar::handleGetExtendedYear() {
* whether or not the given month is a leap month.
* @stable ICU 2.8
*/
int32_t ChineseCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) {
int32_t ChineseCalendar::handleGetMonthLength(int32_t extendedYear, int32_t month) const {
int32_t thisStart = handleComputeMonthStart(extendedYear, month, TRUE) -
kEpochStartAsJulianDay + 1; // Julian day -> local days
int32_t nextStart = newMoonNear(thisStart + SYNODIC_GAP, TRUE);
@ -328,6 +328,14 @@ void ChineseCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode&
}
}
/**
* Override Calendar to handle leap months properly.
* @stable ICU 2.8
*/
void ChineseCalendar::add(EDateFields field, int32_t amount, UErrorCode& status) {
add((UCalendarDateFields)field, amount, status);
}
/**
* Override Calendar to handle leap months properly.
* @stable ICU 2.8
@ -390,6 +398,10 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
}
}
void ChineseCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status) {
roll((UCalendarDateFields)field, amount, status);
}
//------------------------------------------------------------------
// Support methods and constants
@ -499,7 +511,7 @@ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
UDate newMoon = gChineseCalendarAstro->getMoonTime(CalendarAstronomer::NEW_MOON(), after);
umtx_unlock(&astroLock);
return millisToDays(newMoon);
return (int32_t) millisToDays(newMoon);
}
/**
@ -510,7 +522,8 @@ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
* @return the nearest integer number of months between day1 and day2
*/
int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const {
return (int32_t) (((day2 - day1) / CalendarAstronomer::SYNODIC_MONTH) + .5);
double roundme = ((day2 - day1) / CalendarAstronomer::SYNODIC_MONTH);
return (int32_t) (roundme + (roundme >= 0 ? .5 : -.5));
}
/**

View file

@ -139,7 +139,7 @@ class ChineseCalendar : public Calendar {
protected:
virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const;
virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month);
virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const;
//virtual int32_t handleGetYearLength(int32_t extendedYear) const;
virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const;
virtual int32_t handleGetExtendedYear();
@ -150,7 +150,9 @@ class ChineseCalendar : public Calendar {
public:
virtual void add(UCalendarDateFields field, int32_t amount, UErrorCode &status);
virtual void add(EDateFields field, int32_t amount, UErrorCode &status);
virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode &status);
virtual void roll(EDateFields field, int32_t amount, UErrorCode &status);
//----------------------------------------------------------------------