fixing getInTimezone to return a new mutable object r=vlad

This commit is contained in:
pavlov%pavlov.net 2005-04-19 03:26:32 +00:00
Родитель c30d90e18b
Коммит 27f6e89169
2 изменённых файлов: 28 добавлений и 23 удалений

Просмотреть файл

@ -64,11 +64,37 @@ calDateTime::calDateTime()
}
calDateTime::calDateTime(struct icaltimetype *atimeptr)
: mImmutable(PR_FALSE)
{
FromIcalTime(atimeptr);
mValid = PR_TRUE;
}
calDateTime::calDateTime(const calDateTime& cdt)
{
// bitwise copy everything
mValid = cdt.mValid;
mNativeTime = cdt.mNativeTime;
mYear = cdt.mYear;
mMonth = cdt.mMonth;
mDay = cdt.mDay;
mHour = cdt.mHour;
mMinute = cdt.mMinute;
mSecond = cdt.mSecond;
mIsUtc = cdt.mIsUtc;
mWeekday = cdt.mWeekday;
mYearday = cdt.mYearday;
mIsDate = cdt.mIsDate;
mLastModified = PR_Now();
// copies are always mutable
mImmutable = PR_FALSE;
mTimezone.Assign(cdt.mTimezone);
}
NS_IMETHODIMP
calDateTime::GetIsMutable(PRBool *aResult)
{
@ -91,32 +117,10 @@ calDateTime::MakeImmutable()
NS_IMETHODIMP
calDateTime::Clone(calIDateTime **aResult)
{
calDateTime *cdt = new calDateTime();
calDateTime *cdt = new calDateTime(*this);
if (!cdt)
return NS_ERROR_OUT_OF_MEMORY;
// bitwise copy everything
cdt->mValid = mValid;
cdt->mNativeTime = mNativeTime;
cdt->mYear = mYear;
cdt->mMonth = mMonth;
cdt->mDay = mDay;
cdt->mHour = mHour;
cdt->mMinute = mMinute;
cdt->mSecond = mSecond;
cdt->mIsUtc = mIsUtc;
cdt->mWeekday = mWeekday;
cdt->mYearday = mYearday;
cdt->mIsDate = mIsDate;
cdt->mLastModified = PR_Now();
// copies are always mutable
cdt->mImmutable = PR_FALSE;
cdt->mTimezone.Assign(mTimezone);
NS_ADDREF(*aResult = cdt);
return NS_OK;
}

Просмотреть файл

@ -54,6 +54,7 @@ class calDateTime : public calIDateTime,
public:
calDateTime ();
calDateTime (struct icaltimetype *timeptr);
calDateTime (const calDateTime& cdt);
// nsISupports interface
NS_DECL_ISUPPORTS