# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268401355 -7200 # Node ID 38571fd2a704a73d9ea8c4a2c97e2c39c7df7ff6 # Parent 42814f902fe61b563cdcc8aba6bf050844c863ac Revision: 201007 Kit: 201008 diff -r 42814f902fe6 -r 38571fd2a704 calendarui/application/group/Calendar.mmp --- a/calendarui/application/group/Calendar.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/application/group/Calendar.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -91,8 +91,7 @@ // NetworkServices // For sending vCalendars? // ProtServ // For connecting Agenda Server? // DRM // Calendar alarm tones are DRM protected -CAPABILITY CAP_APPLICATION \ - NetworkControl AllFiles +CAPABILITY CAP_APPLICATION VENDORID VID_DEFAULT diff -r 42814f902fe6 -r 38571fd2a704 calendarui/application/group/iconlist.txt --- a/calendarui/application/group/iconlist.txt Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/application/group/iconlist.txt Fri Mar 12 15:42:35 2010 +0200 @@ -29,4 +29,6 @@ -c8,8 qgn_indi_cdr_todo_undone_missed_new -c8,8 qgn_indi_tb_cale_alarm_dismiss -c8,8 qgn_indi_tb_cale_alarm_dismiss_all --c8,8 qgn_stat_sync.svg \ No newline at end of file +-c8,8 qgn_stat_sync.svg +-c8,8 qgn_indi_cale_tb_today.svg +-c8,8 qgn_indi_cale_tb_changeview.svg diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/bwins/calencommonutilsu.def --- a/calendarui/commonutils/bwins/calencommonutilsu.def Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/bwins/calencommonutilsu.def Fri Mar 12 15:42:35 2010 +0200 @@ -29,7 +29,7 @@ ?SizeString@CCalenAttachmentInfo@@QBEPAVHBufC16@@XZ @ 28 NONAME ; class HBufC16 * CCalenAttachmentInfo::SizeString(void) const ?RemoveEntriesEndingAtMidnightL@CalenAgendaUtils@@SAXAAV?$RPointerArray@VCCalInstance@@@@ABVTTime@@@Z @ 29 NONAME ; void CalenAgendaUtils::RemoveEntriesEndingAtMidnightL(class RPointerArray &, class TTime const &) ?Status@CCalenEntryUtil@@QBEABW4TStatus@CCalEntry@@XZ @ 30 NONAME ; enum CCalEntry::TStatus const & CCalenEntryUtil::Status(void) const - ?AddAttachmentL@CCalenAttachmentModel@@QAEXABVTDesC16@@0HHABVTDataType@@@Z @ 31 NONAME ; void CCalenAttachmentModel::AddAttachmentL(class TDesC16 const &, class TDesC16 const &, int, int, class TDataType const &) + ?AddAttachmentL@CCalenAttachmentModel@@QAEXABVTDesC16@@0HHABVTDataType@@AAVRFile@@@Z @ 31 NONAME ; void CCalenAttachmentModel::AddAttachmentL(class TDesC16 const &, class TDesC16 const &, int, int, class TDataType const &, class RFile &) ?OnSameDay@CalenDateUtils@@SAHABVTTime@@0@Z @ 32 NONAME ; int CalenDateUtils::OnSameDay(class TTime const &, class TTime const &) ?OpenAttachmentL@CCalenAttachmentUtils@@SAXAAVRFile@@AAVMAknServerAppExitObserver@@@Z @ 33 NONAME ; void CCalenAttachmentUtils::OpenAttachmentL(class RFile &, class MAknServerAppExitObserver &) ?LoadResourcesL@CCalenAttachmentModel@@QAEXXZ @ 34 NONAME ; void CCalenAttachmentModel::LoadResourcesL(void) diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/eabi/calencommonutilsu.def --- a/calendarui/commonutils/eabi/calencommonutilsu.def Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/eabi/calencommonutilsu.def Fri Mar 12 15:42:35 2010 +0200 @@ -84,7 +84,7 @@ _ZN20CCalenAttachmentInfo4NewLER21CCalenAttachmentModelRK4TBufILi256EES5_iiRK9TDataTypeNS_25TCalenAttachmentStoreTypeE @ 83 NONAME _ZN21CCalenAttachmentModel11SetObserverEP29MCalenAttachmentModelObserver @ 84 NONAME _ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_ @ 85 NONAME - _ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_iiRK9TDataType @ 86 NONAME + _ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_iiRK9TDataTypeR5RFile @ 86 NONAME _ZN21CCalenAttachmentModel14BitmapForFileLER20CCalenAttachmentInfo @ 87 NONAME _ZN21CCalenAttachmentModel14LoadResourcesLEv @ 88 NONAME _ZN21CCalenAttachmentModel16DeleteAttachmentEi @ 89 NONAME diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/group/commonutils.mmp --- a/calendarui/commonutils/group/commonutils.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/group/commonutils.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -99,8 +99,7 @@ LIBRARY aknlayout2scalable.lib LIBRARY gdi.lib -CAPABILITY CAP_GENERAL_DLL \ - DRM +CAPABILITY CAP_GENERAL_DLL VENDORID VID_DEFAULT diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/inc/calenattachmentinfo.h --- a/calendarui/commonutils/inc/calenattachmentinfo.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/inc/calenattachmentinfo.h Fri Mar 12 15:42:35 2010 +0200 @@ -167,7 +167,29 @@ * Performs icon updating. */ void DoUpdateIconL(); - + + /** + * Sets the file handle. + * @param aFile File handle to be set + * + */ + void SetFileHandle(RFile& aFile); + + /** + * Gets the file handle. + * @param File handle. + * + */ + void FileHandle( RFile& aFile ); + + /** + * Check whether the file handle is set or not. + * @return The isSetFileHandle + * + */ + TBool IsFileHandleSet(); + + private: CCalenAttachmentModel& iAttachmentModel; @@ -178,6 +200,8 @@ CGulIcon* iIcon; TBool iIsFetched; TCalenAttachmentStoreType iAttachmentStoreType; + RFile iFile; + TBool isSetFileHandle; }; #endif // CALENATTACHMENTINFO_H diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/inc/calenattachmentmodel.h --- a/calendarui/commonutils/inc/calenattachmentmodel.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/inc/calenattachmentmodel.h Fri Mar 12 15:42:35 2010 +0200 @@ -133,7 +133,7 @@ * @param aDataType mime type of the attachment */ IMPORT_C void AddAttachmentL( const TDesC& aFullName, const TDesC& aSystemFileName, TInt aSize, - TBool aFetched, const TDataType& aDataType ); + TBool aFetched, const TDataType& aDataType, RFile &aFile); /** * Deletes attachment from internal array. Notifies attachment model diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenattachmentinfo.cpp --- a/calendarui/commonutils/src/calenattachmentinfo.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenattachmentinfo.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -67,6 +67,10 @@ TRACE_ENTRY_POINT; TRACE_EXIT_POINT; delete iIcon; + if(isSetFileHandle) + { + iFile.Close(); + } } // ---------------------------------------------------------------------------- @@ -292,6 +296,46 @@ return iSystemFileName; } +// ---------------------------------------------------------------------------- +// CCalenAttachmentInfo::SetFileHandle +// +//Sets the file handle +// ---------------------------------------------------------------------------- +// +void CCalenAttachmentInfo::SetFileHandle(RFile& aFile) + { + TRACE_ENTRY_POINT; + iFile.Duplicate(aFile); + isSetFileHandle = ETrue; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCalenAttachmentInfo::FileHandle +// +//Gets the file handle. +// ---------------------------------------------------------------------------- +// +void CCalenAttachmentInfo::FileHandle( RFile& aFile ) + { + TRACE_ENTRY_POINT; + + aFile.Duplicate( iFile ); + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCalenAttachmentInfo::IsFileHandleSet +// ---------------------------------------------------------------------------- +// +TBool CCalenAttachmentInfo::IsFileHandleSet() + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + + return isSetFileHandle; + } + //end of file diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenattachmentmodel.cpp --- a/calendarui/commonutils/src/calenattachmentmodel.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenattachmentmodel.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -281,7 +281,8 @@ const TDesC& aSystemFileName, TInt aSize, TBool aFetched, - const TDataType& aDataType ) + const TDataType& aDataType, + RFile& aFile) { TRACE_ENTRY_POINT; @@ -294,6 +295,7 @@ aDataType, CCalenAttachmentInfo::ECalenAttachmentFetchedFromEntry ); CleanupStack::PushL(info); + info->SetFileHandle( aFile ); iAttachInfoArray.AppendL(info); CleanupStack::Pop(); isAttachmentModelCleared = EFalse; @@ -341,13 +343,16 @@ // Get the attachment file name TFileName fileName( attachmentInfo->FileName() ); + TParsePtrC fileNameParser(fileName); + TPtrC parsedFileName = fileNameParser.NameAndExt(); + // Confirm if needs to be deleted. CAknQueryDialog* confirmQuery = NULL; confirmQuery = CAknQueryDialog::NewL(); HBufC* stringBuf = NULL; stringBuf = StringLoader::LoadLC( R_QTN_QUERY_COMMON_CONF_REMOVE, - fileName, + parsedFileName, CEikonEnv::Static() ); confirmQuery->SetPromptL( *stringBuf ); if( EAknSoftkeyYes != @@ -482,17 +487,24 @@ RFile file; CCalenAttachmentInfo* attachmentInfo = iAttachInfoArray[aIndex]; - TParsePtrC fileNameParser(attachmentInfo->SystemFileName()); - CEikonEnv* eikonEnv = CEikonEnv::Static(); - RFs& fs = eikonEnv->FsSession(); - User::LeaveIfError(fs.ShareProtected()); - TInt err = file.Open( fs, attachmentInfo->SystemFileName(), - EFileRead|EFileShareReadersOnly); - if(err == KErrInUse) + if( attachmentInfo->IsFileHandleSet() ) + { + attachmentInfo->FileHandle(file); + } + else { - file.Close(); - User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(), - EFileRead|EFileShareReadersOnly) ); + TParsePtrC fileNameParser(attachmentInfo->SystemFileName()); + CEikonEnv* eikonEnv = CEikonEnv::Static(); + RFs& fs = eikonEnv->FsSession(); + User::LeaveIfError(fs.ShareProtected()); + TInt err = file.Open( fs, attachmentInfo->SystemFileName(), + EFileRead|EFileShareReadersOnly); + if(err == KErrInUse) + { + file.Close(); + User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(), + EFileRead|EFileShareReadersOnly) ); + } } TRACE_EXIT_POINT; @@ -593,7 +605,7 @@ fileHandle.Size(fileSize); AddAttachmentL( fileName, systemFileName, fileSize, - ETrue, fileMimeType ); + ETrue, fileMimeType, fileHandle); CleanupStack::PopAndDestroy(&fileHandle); } } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenattachmentutils.cpp --- a/calendarui/commonutils/src/calenattachmentutils.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenattachmentutils.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -50,7 +50,7 @@ const TInt KCalenTextFileNameLength = 20; _LIT( KTextFilenameExtension, ".txt" ); -_LIT( KCalenUnifiedEditorTempDir, "c:\\data\\caleneditor\\" ); +_LIT( KCalenUnifiedEditorTempDir, "c:\\private\\10005901\\caleneditor\\" ); _LIT8( KNotePadTextDataType, "text/plain" ); // ----------------------------------------------------------------------------- diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenentryutil.cpp --- a/calendarui/commonutils/src/calenentryutil.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenentryutil.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -1010,10 +1010,12 @@ TRACE_ENTRY_POINT; TBool allDayEvent(EFalse); + + TTimeIntervalDays differenceInTime = aStopTime.DaysFrom(aStartTime); // fix for AllDayEntry issue if( aStartTime == CalenDateUtils::BeginningOfDay( aStartTime ) && aStopTime == CalenDateUtils::BeginningOfDay( aStopTime ) - && aStartTime != aStopTime ) + && aStartTime != aStopTime && differenceInTime.Int() == 1) // fix for AllDayEntry issue { allDayEvent = ETrue; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/commonutils/src/calenviewutils.cpp --- a/calendarui/commonutils/src/calenviewutils.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/commonutils/src/calenviewutils.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -202,10 +202,11 @@ TTime startLocalTime = startTime.TimeLocalL(); TTime stopLocalTime = stopTime.TimeLocalL(); + TTimeIntervalDays differenceInTime = stopLocalTime.DaysFrom(startLocalTime); // fix for AllDayEntry issue if( startLocalTime != stopLocalTime && startLocalTime == CalenDateUtils::BeginningOfDay( startLocalTime ) && stopLocalTime == CalenDateUtils::BeginningOfDay( stopLocalTime ) && - startLocalTime != stopLocalTime ) + startLocalTime != stopLocalTime && differenceInTime.Int() == 1 ) // fix for AllDayEntry issue { allDayEvent = ETrue; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/data/calencommonui.rss --- a/calendarui/controller/data/calencommonui.rss Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/data/calencommonui.rss Fri Mar 12 15:42:35 2010 +0200 @@ -467,8 +467,8 @@ { helptxt = qtn_cale_tb_today_tooltip; bmpfile = BITMAP_DIR"\\calendar.mif"; - bmpid = EMbmCalendarQgn_indi_repeat_add; - bmpmask = EMbmCalendarQgn_indi_repeat_add_mask; + bmpid = EMbmCalendarQgn_indi_cale_tb_today; + bmpmask = EMbmCalendarQgn_indi_cale_tb_today_mask; extension = r_calen_tb_ext_qgn_indi_cale_tb_repeat_add; } }; @@ -482,8 +482,8 @@ { helptxt = qtn_cale_tb_change_view_tooltip; bmpFile = BITMAP_DIR"\\calendar.mif"; - bmpId = EMbmCalendarQgn_indi_cale_tb_right; - bmpMask = EMbmCalendarQgn_indi_cale_tb_right_mask ; + bmpId = EMbmCalendarQgn_indi_cale_tb_changeview; + bmpMask = EMbmCalendarQgn_indi_cale_tb_changeview_mask ; extension = r_calen_tb_ext_qgn_indi_cale_tb_right; items = { @@ -500,8 +500,8 @@ { helptxt = "dummy"; bmpfile = BITMAP_DIR"\\calendar.mif"; - bmpid = EMbmCalendarQgn_indi_cale_tb_right; - bmpmask = EMbmCalendarQgn_indi_cale_tb_right_mask; + bmpid = EMbmCalendarQgn_indi_cale_tb_changeview; + bmpmask = EMbmCalendarQgn_indi_cale_tb_changeview_mask; extension = r_calen_tb_ext_qgn_indi_cale_tb_right; } }; @@ -532,8 +532,8 @@ { helptxt = qtn_cale_tb_change_view_tooltip; bmpFile = BITMAP_DIR"\\calendar.mif"; - bmpId = EMbmCalendarQgn_indi_cale_tb_right; - bmpMask = EMbmCalendarQgn_indi_cale_tb_right_mask ; + bmpId = EMbmCalendarQgn_indi_cale_tb_changeview; + bmpMask = EMbmCalendarQgn_indi_cale_tb_changeview_mask ; extension = r_calen_tb_ext_qgn_indi_cale_tb_right; items = { @@ -550,8 +550,8 @@ { helptxt = "dummy"; bmpfile = BITMAP_DIR"\\calendar.mif"; - bmpid = EMbmCalendarQgn_indi_cale_tb_right; - bmpmask = EMbmCalendarQgn_indi_cale_tb_right_mask; + bmpid = EMbmCalendarQgn_indi_cale_tb_changeview; + bmpmask = EMbmCalendarQgn_indi_cale_tb_changeview_mask; extension = r_calen_tb_ext_qgn_indi_cale_tb_right; } }; @@ -573,8 +573,8 @@ { helptxt = qtn_cale_tb_today_tooltip; bmpfile = BITMAP_DIR"\\calendar.mif"; - bmpid = EMbmCalendarQgn_indi_repeat_add; - bmpmask = EMbmCalendarQgn_indi_repeat_add_mask; + bmpid = EMbmCalendarQgn_indi_cale_tb_today; + bmpmask = EMbmCalendarQgn_indi_cale_tb_today_mask; extension = r_calen_tb_ext_qgn_indi_cale_tb_repeat_add; } }; diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/calenalarmmanager.cpp --- a/calendarui/controller/src/calenalarmmanager.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/calenalarmmanager.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -885,12 +885,16 @@ { TRACE_ENTRY_POINT; - for(TInt index=0;indexAppendL( sizeLimitParam ); - + CDesCArrayFlat* files = new( ELeave ) CDesC16ArrayFlat(1); CleanupStack::PushL(files); @@ -371,7 +366,7 @@ { // used for fetching media file and notes fetchOk = CCalenAttachmentUtils::FetchFileL( aFetchType, *files, - paramList, EFalse, EFalse, this ); + NULL, EFalse, EFalse, this ); if(fetchOk && iSelectedCommand == ECalenAddNote) @@ -379,7 +374,7 @@ AddAttachmentL(files->MdcaPoint(0)); } } - CleanupStack::PopAndDestroy( 2, paramList ); + CleanupStack::PopAndDestroy( files ); if(!fetchOk) { @@ -659,15 +654,12 @@ if(attachmentInfo->StoreType() == CCalenAttachmentInfo::ECalenNewAttachment) { TParsePtrC fileNameParser(attachmentInfo->SystemFileName()); - RFile fileHandle; - CEikonEnv* eikonEnv = CEikonEnv::Static(); - RFs& fs = eikonEnv->FsSession(); - User::LeaveIfError(fs.ShareProtected()); + RFile fileHandle = iAttachmentModel->GetAttachmentFileL(index); + CleanupClosePushL(fileHandle); TInt aSize; - TInt err = fileHandle.Open(fs, attachmentInfo->SystemFileName(), EFileWrite); TInt error = fileHandle.Size(aSize); HBufC8* data = HBufC8::NewLC(aSize); - TPtr8 fileData = data->Des(); + TPtr8 fileData = data->Des(); if (error == KErrNone) { TInt readingError = fileHandle.Read(fileData,aSize); @@ -681,14 +673,11 @@ attachment->SetLabelL(fileNameParser.NameAndExt()); // sets mime type for the attachment attachment->SetMimeTypeL(attachmentInfo->DataType().Des8()); - - CleanupClosePushL(fileHandle); - CleanupStack::PopAndDestroy(&fileHandle); entry->AddAttachmentL(*attachment); CleanupStack::Pop(attachment); } } - + CleanupStack::PopAndDestroy(&fileHandle); } } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/calencontroller.cpp --- a/calendarui/controller/src/calencontroller.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/calencontroller.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -299,23 +299,55 @@ // ---------------------------------------------------------------------------- // CCalenController::~CCalenController() - { + { TRACE_ENTRY_POINT; + + if(iSystemTimeChangedMsgDelayer) + { + iSystemTimeChangedMsgDelayer->Cancel(); + delete iSystemTimeChangedMsgDelayer; + iSystemTimeChangedMsgDelayer = NULL; + } + if(iAttachmentData) + { + delete iAttachmentData; + iAttachmentData = NULL; + } + + if( iAlarmManager ) + { + delete iAlarmManager; + } + + if( iCustomisationManager ) + { + delete iCustomisationManager; + } + + if( iViewManager ) + { + delete iViewManager; + } + + if ( iSetting ) + { + iSetting->Release(); + } + + if( iActionUi ) + { + delete iActionUi; + } + if ( iServices ) { iServices->Release(); } - - delete iActionUi; - delete iNotifier; - delete iViewManager; - delete iStateMachine; - - if ( iSetting ) + if( iCmdLineLauncher ) { - iSetting->Release(); + delete iCmdLineLauncher; } if( iGlobalData ) @@ -323,31 +355,22 @@ iGlobalData->Release(); } - Dll::SetTls( NULL ); - - delete iCmdLineLauncher; - delete iCustomisationManager; + if( iNotifier ) + { + delete iNotifier; + } - if( iResourceFileOffset ) - { - CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset ); - } - //delete iMultipleDbmanager; - - if(iSystemTimeChangedMsgDelayer) + if( iStateMachine ) { - iSystemTimeChangedMsgDelayer->Cancel(); - delete iSystemTimeChangedMsgDelayer; - iSystemTimeChangedMsgDelayer = NULL; + delete iStateMachine; } + + if( iResourceFileOffset ) + { + CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset ); + } + Dll::SetTls( NULL ); - delete iAlarmManager; - - if(iAttachmentData) - { - delete iAttachmentData; - iAttachmentData = NULL; - } TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/caleneditui.cpp --- a/calendarui/controller/src/caleneditui.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/caleneditui.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -242,7 +242,7 @@ // by the user. else { - iController.BroadcastNotification( ECalenNotifyDialogClosed ); + iController.BroadcastNotification( ECalenNotifyEntrySendCancel ); } } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/calennotifier.cpp --- a/calendarui/controller/src/calennotifier.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/calennotifier.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -71,36 +71,6 @@ { TRACE_ENTRY_POINT; - // Stop database change notifications. - delete iDbChangeNotifier; - - // Stop ECom change notifications - delete iEComWatcher; - - // Release the global data - if( iGlobalData ) - { - // stop listening for calendar file change notifications - iGlobalData->CalSessionL().StopFileChangeNotification(); - iGlobalData->Release(); - } - - if( iSetting ) - { - iSetting->Release(); - } - - // Stop environment change notifications - if( iEnvChangeNotifier ) - { - iEnvChangeNotifier->Cancel(); - delete iEnvChangeNotifier; - } - - // Stop settings change notifications - delete iCenRepChangeNotifier; - delete iRepository; - // Reset the handler array. // Before we reset , close hashset for each handler for(TInt i = 0 ; i < iHandlers.Count() ; i++) @@ -111,13 +81,65 @@ iHandlers.Reset(); iBroadcastQueue.Reset(); - - - iAsyncCallback->Cancel(); - delete iAsyncCallback; - - delete iFilnameDeleted; - + if( iAsyncCallback ) + { + iAsyncCallback->Cancel(); + delete iAsyncCallback; + iAsyncCallback = NULL; + } + + if( iFilnameDeleted ) + { + delete iFilnameDeleted; + iFilnameDeleted = NULL; + } + + // Stop ECom change notifications + if( iEComWatcher ) + { + delete iEComWatcher; + iEComWatcher = NULL; + } + + // Stop database change notifications. + if( iDbChangeNotifier ) + { + delete iDbChangeNotifier; + iDbChangeNotifier = NULL; + } + + // Stop settings change notifications + if( iCenRepChangeNotifier ) + { + delete iCenRepChangeNotifier; + iCenRepChangeNotifier = NULL; + } + + if( iRepository ) + { + delete iRepository; + iRepository = NULL; + } + + // Stop environment change notifications + if( iEnvChangeNotifier ) + { + iEnvChangeNotifier->Cancel(); + delete iEnvChangeNotifier; + } + + if( iSetting ) + { + iSetting->Release(); + } + + // Release the global data + if( iGlobalData ) + { + // stop listening for calendar file change notifications + iGlobalData->CalSessionL().StopFileChangeNotification(); + iGlobalData->Release(); + } TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/calensendingstate.cpp --- a/calendarui/controller/src/calensendingstate.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/calensendingstate.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -120,6 +120,7 @@ switch( aNotification ) { + case ECalenNotifyEntrySendCancel: case ECalenNotifyDialogClosed: // issued when send method query dialog is cancelled { // FIXME Should have a ECalenNotifyEntrySent? diff -r 42814f902fe6 -r 38571fd2a704 calendarui/controller/src/calenviewattachmentsdialog.cpp --- a/calendarui/controller/src/calenviewattachmentsdialog.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/controller/src/calenviewattachmentsdialog.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -251,7 +251,9 @@ TDataType datatype( attInfo.DataType() ); RFile file = iAttachmentModel.GetAttachmentFileL( index ); - OpenAttachmentViewerL(file, *this); + CleanupClosePushL(file); + OpenAttachmentViewerL(file, *this); + CleanupStack::PopAndDestroy(&file); } } break; @@ -1084,50 +1086,32 @@ // Opens a particular attachment // ----------------------------------------------------------------------------- // -void CCalenViewAttachmentsDialog::OpenAttachmentViewerL(RFile& file, MAknServerAppExitObserver& /*aExitObserver*/) +void CCalenViewAttachmentsDialog::OpenAttachmentViewerL(RFile& aFile, MAknServerAppExitObserver& /*aExitObserver*/) { TRACE_ENTRY_POINT; TBuf<250> fileName; - file.FullName(fileName); - TDataType datatype( CCalenAttachmentUtils::GetMimeTypeL(fileName) ); + aFile.FullName(fileName); + TDataType datatype( CCalenAttachmentUtils::GetMimeType(aFile) ); TInt ret = KErrNone; - file.Close(); - RFs& fs = CEikonEnv::Static()->FsSession(); - - //open the file, before giving it to Notepad. - TInt err1 = file.Open( fs, fileName, EFileRead | EFileShareReadersOnly ); - CleanupClosePushL( file ); - if(datatype == KNotePadTextDataType()) { - const TDesC& notepadTitle = _L("NotePad"); - // file handle ownership transferred. - - // 1.File handle from arg has problem for notes since junk chars are reported in file. - // so we use another file handle exclusively open with filename an pass to note viewer. - // - // 2.Pass ETrue to 4th param ExecFileViewerL , to guess encoding. - RFile fileForNotes; - TInt err = fileForNotes.Open( fs, fileName, EFileRead | EFileShareReadersOnly ); - CleanupClosePushL( fileForNotes ); - ret = CNotepadApi::ExecFileViewerL( fileForNotes, + const TDesC& notepadTitle = _L("NotePad"); + ret = CNotepadApi::ExecFileViewerL( aFile, ¬epadTitle, ETrue, ETrue, KCharacterSetIdentifierIso88591 ); - CleanupStack::PopAndDestroy(&fileForNotes); } else { //doc handler will open the other files (other than text file). - TRAP( ret, iDocHandler->OpenFileEmbeddedL( file, datatype ) ); + TRAP( ret, iDocHandler->OpenFileEmbeddedL( aFile, datatype ) ); } - CleanupStack::PopAndDestroy(&file); - + switch(ret) { case KErrNone: diff -r 42814f902fe6 -r 38571fd2a704 calendarui/editors/data/CalenDefaultEditorsData.rss --- a/calendarui/editors/data/CalenDefaultEditorsData.rss Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/editors/data/CalenDefaultEditorsData.rss Fri Mar 12 15:42:35 2010 +0200 @@ -1457,7 +1457,7 @@ }, LBUF { - txt = qtn_cale_item_birthday; + txt = qtn_cale_note_anniversary; }, LBUF { @@ -1656,4 +1656,42 @@ }; } +// --------------------------------------------------------- +// Description list query +// List query for the description types +// --------------------------------------------------------- +RESOURCE AVKON_MULTISELECTION_LIST_QUERY r_description_list_query + { + flags = EGeneralQueryFlags; + softkeys = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT; + items = + { + AVKON_MULTISELECTION_LIST_QUERY_DLG_LINE + { + control = AVKON_LIST_QUERY_CONTROL + { + listtype = EAknCtSinglePopupMenuListBox; + listbox = AVKON_LIST_QUERY_LIST + { + array_id = r_description_list_query_array; + }; + heading = text_softkey_select; + }; + } + }; + } + +// --------------------------------------------------------- +// Description list query array +// List of the description types +// --------------------------------------------------------- +RESOURCE ARRAY r_description_list_query_array + { + items= + { + LBUF { txt = qtn_cale_om_descript_new; }, + LBUF { txt = qtn_cale_om_descript_exist; } + }; + } + // End of File diff -r 42814f902fe6 -r 38571fd2a704 calendarui/editors/inc/CalenDescription.h --- a/calendarui/editors/inc/CalenDescription.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/editors/inc/CalenDescription.h Fri Mar 12 15:42:35 2010 +0200 @@ -181,6 +181,11 @@ */ HBufC* ExecTextViewerL(TInt& aStatus, const TDesC& aDescription); + /** + * Handles ECalenCmdAddDescription command + */ + TBool HandleAddDescriptionL(); + private: diff -r 42814f902fe6 -r 38571fd2a704 calendarui/editors/inc/calenunifiededitor.h --- a/calendarui/editors/inc/calenunifiededitor.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/editors/inc/calenunifiededitor.h Fri Mar 12 15:42:35 2010 +0200 @@ -494,6 +494,13 @@ */ void VerifyCollectionIdL(const TCalCollectionId aColId); + /* + * Return attachment names + * @param aAttachmentNames names of the attachments. + * @return HBufC + */ + void GetAttachmentNamesL(RPointerArray& aAttachmentNames); + protected: /** * From CEikDialog @@ -659,7 +666,10 @@ * */ void HideFieldsForEditSingleInstance(); - + + static TInt AsyncProcessCommandL(TAny* aThisPtr); + + private: /** * @var iEditedCalEntry @@ -812,7 +822,10 @@ * @var isReplaceLocation * @brief Flag to indicate whenter to replace the location or to append it */ - TBool isReplaceLocation; + TBool isReplaceLocation; + + CAsyncCallBack* iAsyncCallback; + }; /** diff -r 42814f902fe6 -r 38571fd2a704 calendarui/editors/src/CalenDescription.cpp --- a/calendarui/editors/src/CalenDescription.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/editors/src/CalenDescription.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -192,12 +192,6 @@ TBool processed = EFalse; switch( aCommandId ) { - case ECalenCmdShowDescription: - { - ShowL(); - processed = ETrue; - break; - } case ECalenCmdAddDescriptionNew: { AddNewL(); @@ -210,6 +204,28 @@ processed = ETrue; break; } + case ECalenCmdAddDescription: + { + if(EntryHasDescription()) + { + ShowL(); + processed = ETrue; + } + else + { + processed = HandleAddDescriptionL(); + } + + break; + } + + case ECalenCmdShowDescription: + { + + ShowL(); + processed = ETrue; + break; + } case ECalenCmdRemoveDescription: { RemoveL(); @@ -583,4 +599,46 @@ TRACE_EXIT_POINT; return desc; } + +// ---------------------------------------------------------------------------- +// CCalenDescription::HandleAddDescriptionL +// Handles the command ECalenAddDescription +// ---------------------------------------------------------------------------- +// +TBool CCalenDescription::HandleAddDescriptionL() + { + TRACE_ENTRY_POINT; + + TBool processed = EFalse; + TInt selectedIndex(0); + CAknListQueryDialog* dlg = new (ELeave) CAknListQueryDialog(&selectedIndex); + dlg->PrepareLC( R_DESCRIPTION_LIST_QUERY ); + + if(dlg->RunLD()) + { + switch(selectedIndex) + { + case 0: //ECalenCmdAddDescriptionNew + { +// iCheck = 0; + AddNewL(); + processed = ETrue; + break; + } + case 1: //ECalenCmdAddDescriptionExisting + { +// iCheck = 1; + AddMemoL(); + processed = ETrue; + break; + } + default: + break; + } + } + + TRACE_EXIT_POINT; + + return processed; + } // End of File diff -r 42814f902fe6 -r 38571fd2a704 calendarui/editors/src/calenunifiededitor.cpp --- a/calendarui/editors/src/calenunifiededitor.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/editors/src/calenunifiededitor.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -165,7 +165,10 @@ delete iUnifiedEditorControl; iCollectionIds.Reset(); - + + iAsyncCallback->Cancel(); + delete iAsyncCallback; + TRACE_EXIT_POINT; } @@ -285,6 +288,11 @@ isReplaceLocation = EFalse; + + TCallBack callback(CCalenUnifiedEditor::AsyncProcessCommandL,this); + iAsyncCallback = new(ELeave) CAsyncCallBack(callback,CActive::EPriorityStandard); + + iIdle = CIdle::NewL( CActive::EPriorityUserInput ); iIdle->Start( TCallBack( KeyCallBack, this) ); iCoeEnv->AddFepObserverL( *this ); @@ -1242,7 +1250,22 @@ } break; } - + + case ECalenEditorDescription: + { +// CEikEdwin* edwin = static_cast( Control( focusControl ) ); +// if ( edwin && edwin->Text()->DocumentLength() == 0 ) +// { +// ProcessCommandL( ECalenCmdAddDescription ); +// } +// else +// { +// ProcessCommandL( ECalenCmdShowDescription ); +// } + iAsyncCallback->CallBack(); + break; + } + default: { break; @@ -1275,6 +1298,24 @@ } } + +TInt CCalenUnifiedEditor::AsyncProcessCommandL( TAny* aThisPtr ) + { + TInt focusControl( static_cast(aThisPtr)->IdOfFocusControl() ); + CEikEdwin* edwin = static_cast( static_cast(aThisPtr)->Control( focusControl ) ); + if ( edwin && edwin->Text()->DocumentLength() == 0 ) + { + static_cast(aThisPtr)->ProcessCommandL(ECalenCmdAddDescription); + } + else + { + static_cast(aThisPtr)->ProcessCommandL(ECalenCmdShowDescription); + } + + return 0; + } + + // ----------------------------------------------------------------------------- // CCalenUnifiedEditor::HandleResourceChange // Handdles the resource change @@ -1525,13 +1566,10 @@ TRACE_ENTRY_POINT; // Only insert if there is some summary (or location) - if( !EditorDataHandler().AreTextFieldsEmptyL() ) + // Changes done to remove Lunar calendar item from options menu + if( EditorDataHandler().AreTextFieldsEmptyL() ) { - // Insert Send menu item - iServices->OfferMenuPaneL( aResourceId, aMenuPane ); - } - else - {// Delete Send Menu item if exists + // Delete Send Menu item if exists aMenuPane->DeleteMenuItem( ECalenSend ); } @@ -1981,7 +2019,8 @@ if( startDate == CalenDateUtils::BeginningOfDay( startDate ) && endDate == CalenDateUtils::BeginningOfDay( endDate ) ) { - if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate ) + TTimeIntervalDays differenceInTime = endDate.DaysFrom(startDate); // fix for AllDayEntry issue + if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate && differenceInTime.Int() == 1 ) { Edited().SetEntryType( CCalEntry::EEvent ); } @@ -2238,6 +2277,7 @@ if(!IsCreatingNewEntry() && !iEditorDataHandler->IsCalendarEditedL()) { + iServices->GetAttachmentData()->Reset(); iServices->EntryViewL(iEditorDataHandler->PreviousDbCollectionId()) ->DeleteL(*iOriginalCalEntry); } @@ -2268,6 +2308,7 @@ } if(!IsCreatingNewEntry() && iEditorDataHandler->IsCalendarEditedL()) { + iServices->GetAttachmentData()->Reset(); iServices->EntryViewL(iEditorDataHandler->PreviousDbCollectionId()) ->DeleteL(*iOriginalCalEntry); } @@ -3050,9 +3091,9 @@ if( attachmentCount ) { RPointerArray attachmentNames; - Edited().AttachmentNamesL(attachmentNames); - TInt attachmentCount = attachmentNames.Count(); - TInt attachmentLength(0); + GetAttachmentNamesL(attachmentNames); + attachmentCount = attachmentNames.Count(); + TInt attachmentLength(0); for( TInt index =0; index0) @@ -3340,6 +3381,33 @@ TRACE_EXIT_POINT; } + +// ----------------------------------------------------------------------------- +// CCalenUnifiedEditor::AttachmentNamesL +// Provides all the attachments names +// ----------------------------------------------------------------------------- +// +void CCalenUnifiedEditor::GetAttachmentNamesL(RPointerArray& aAttachmentNames) + { + TInt attachCount = iServices->GetAttachmentData()->NumberOfItems(); + if( attachCount ) + { + RPointerArray attachmentInfoList; + iServices->GetAttachmentData()->GetAttachmentListL(attachmentInfoList); + for( TInt index =0; indexFileName() ); + HBufC* attachmentName = HBufC::NewL(fileNameParser.NameAndExt().Length()); + attachmentName->Des().Copy(fileNameParser.NameAndExt()); + aAttachmentNames.Append(attachmentName); + } + } + else + { + Edited().AttachmentNamesL(aAttachmentNames); + } + } // ----------------------------------------------------------------------------- // CMapsIconPicture::CMapsIconPicture diff -r 42814f902fe6 -r 38571fd2a704 calendarui/group/bld.inf --- a/calendarui/group/bld.inf Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/group/bld.inf Fri Mar 12 15:42:35 2010 +0200 @@ -45,6 +45,7 @@ ../rom/CalenGlobalData.iby CORE_APP_LAYER_IBY_EXPORT_PATH(calenglobaldata.iby) ../rom/CalenSvr.iby CORE_APP_LAYER_IBY_EXPORT_PATH(calensvr.iby) ../rom/CalenSettingsUi.iby CORE_APP_LAYER_IBY_EXPORT_PATH(calensettingsui.iby) +../rom/CalenSvrResources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(CalenSvrResources.iby) ../rom/calenregionalutil.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(calenregionalutil.iby) diff -r 42814f902fe6 -r 38571fd2a704 calendarui/loc/calendar.loc --- a/calendarui/loc/calendar.loc Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/loc/calendar.loc Fri Mar 12 15:42:35 2010 +0200 @@ -2366,7 +2366,7 @@ //l: list_form_graphic_pane_t1 //w: //r: 9.2 -#define qtn_cale_item_birthday "Birthday" +#define qtn_cale_item_anniversary "Anniversary" //d: "To-Do" text for EventType field pop-up in calendar editor //l: list_form_graphic_pane_t1 @@ -2623,5 +2623,10 @@ //w: //r: 9.2 #define qtn_cale_db_friends "Friends" + +//d:Wait note text in to-do view. +//l:popup_note_wait_window +// +#define qtn_todo_wait_updating_status_notes "Updating status" // End of File diff -r 42814f902fe6 -r 38571fd2a704 calendarui/multicaluidialog/src/multicaluidialogimpl.cpp --- a/calendarui/multicaluidialog/src/multicaluidialogimpl.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/multicaluidialog/src/multicaluidialogimpl.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -208,9 +208,17 @@ { TRACE_ENTRY_POINT; - if(iDesArray && iListBox) + if(iListBox) { - return; + iListBox->Reset(); + delete iListBox; + iListBox = NULL; + } + + if(iDesArray) + { + delete iDesArray; + iDesArray = NULL; } iDesArray = new (ELeave) CDesCArrayFlat(5); @@ -329,26 +337,29 @@ TRgb nonSkinColor = AKN_LAF_COLOR(215); CFbsBitmap* bitmap = NULL; CFbsBitmap* mask = NULL; - + TAknsItemID KSearchCheckboxOff; + TAknsItemID KSearchCheckboxOn; switch( aIndex ) { case ECalenListDbIconUnMarked: { - icon = CreateBitmapSkinnedIconL( - KAknsIIDQgnPropCheckboxOn, + KSearchCheckboxOff.Set( 0x0A8461F4, 1 ); + icon = CreateBitmapSkinnedIconL( + KSearchCheckboxOff, iIconFile, EMbmMulticaluidialogQgn_prop_checkbox_off, - EMbmMulticaluidialogQgn_prop_checkbox_off_mask ); - } + EMbmMulticaluidialogQgn_prop_checkbox_off_mask ); + } break; case ECalenListDbIconMarked: { - icon = CreateBitmapSkinnedIconL( - KAknsIIDQgnPropCheckboxOn, + KSearchCheckboxOn.Set( 0x0A8461F4, 2 ); + icon = CreateBitmapSkinnedIconL( + KSearchCheckboxOn, iIconFile, EMbmMulticaluidialogQgn_prop_checkbox_on, - EMbmMulticaluidialogQgn_prop_checkbox_on_mask ); + EMbmMulticaluidialogQgn_prop_checkbox_on_mask ); } break; @@ -375,12 +386,8 @@ CAknIconArray* icons = new(ELeave) CAknIconArray( iconCount ); CleanupStack::PushL( icons ); icons->SetReserveL( iconCount ); - - for( TInt i=0; iAppendL( GetIconL( ECalenListDbIconMarked ) ); - icons->AppendL( GetIconL( ECalenListDbIconUnMarked ) ); - } + icons->AppendL( GetIconL( ECalenListDbIconMarked ) ); + icons->AppendL( GetIconL( ECalenListDbIconUnMarked ) ); CleanupStack::Pop( icons ); TRACE_EXIT_POINT; return icons; @@ -709,7 +716,7 @@ else { iListBox->SetRect( rect ); - } + } } TRACE_EXIT_POINT; @@ -766,10 +773,7 @@ SetTitlePaneL( ETrue ); ConstructListL(); - UpdateListboxL(); - //UpdateCbaL(); - - + UpdateListboxL(); TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; if( AknLayoutUtils::PenEnabled() ) { @@ -842,14 +846,12 @@ void CMultiCalUiDialogImpl::HandleResourceChange(TInt aType) { TRACE_ENTRY_POINT; - + CAknDialog::HandleResourceChange( aType ); if ( aType == KAknsMessageSkinChange || aType == KEikDynamicLayoutVariantSwitch ) { - SizeChanged(); - TRAP_IGNORE(UpdateListboxL()); - } + SizeChanged(); + } - CAknDialog::HandleResourceChange( aType ); TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp --- a/calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -25,6 +25,11 @@ #include #include +#include +#include +#include + + #include "CalenThaiPlugin.h" @@ -130,6 +135,14 @@ aLabel.SetFont( labelFont ); aLabel.SetLabelAlignment(ELayoutAlignCenter); aLabel.SetTextL( iThaiYearText ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb color; + TInt error = AknsUtils::GetCachedColor(skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6); + if (error == KErrNone) + { + aLabel.OverrideColorL(EColorLabelText, color); + } TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp --- a/calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -32,6 +32,10 @@ #include #include +#include +#include +#include + #include "calendarui_debug.h" #include "calenlunarvietnameseplugin.h" #include "calenlunarvietnameselocalizer.h" @@ -203,6 +207,16 @@ aLabel.SetLabelAlignment(ELayoutAlignCenter); aLabel.SetTextL( *newLinedText); + // Query the text colour based on the theme and update the label text + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb color; + TInt error = AknsUtils::GetCachedColor(skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6); + if (error == KErrNone) + { + aLabel.OverrideColorL(EColorLabelText, color); + } + CleanupStack::PopAndDestroy( newLinedText ); CleanupStack::PopAndDestroy( lineWidths ); CleanupStack::PopAndDestroy( textLines ); @@ -227,6 +241,16 @@ aLabel.SetLabelAlignment(ELayoutAlignCenter); aLabel.SetTextL( iExtraRowText ); + // Query the text colour based on the theme and update the label text + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb color; + TInt error = AknsUtils::GetCachedColor(skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6); + if (error == KErrNone) + { + aLabel.OverrideColorL(EColorLabelText, color); + } + TRACE_EXIT_POINT; } @@ -673,10 +697,15 @@ // ----------------------------------------------------------------------------- // void CCalenPluginLabel::HandlePointerEventL(const TPointerEvent& - /*aPointerEvent*/) + aPointerEvent) { TRACE_ENTRY_POINT; - iPlugin.ShowDetailsL(); + + if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + iPlugin.ShowDetailsL(); + } + TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp --- a/calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -31,6 +31,10 @@ #include #include +#include +#include +#include + #include "calendarui_debug.h" #include "CalenLunarChinesePlugin.h" #include "calenlunarpanic.h" @@ -155,7 +159,8 @@ // CCalenLunarChinesePlugin::SetLabelContentExtraL // ----------------------------------------------------------------------------- // -void CCalenLunarChinesePlugin::SetLabelContentExtraL( CEikLabel& aLabel ,TRect& aRect) +void CCalenLunarChinesePlugin::SetLabelContentExtraL(CEikLabel& aLabel, + TRect& aRect) { TRACE_ENTRY_POINT; @@ -171,37 +176,45 @@ CleanupStack::PushL( lineWidths ); TInt maxWidth = aRect.Size().iWidth; - lineWidths->AppendL( maxWidth ); - - const CFont* fontLabel = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont,NULL); - - HBufC* visualText = AknBidiTextUtils::ConvertToVisualAndWrapToArrayWholeTextL( - iExtraRowText, - *lineWidths, - *fontLabel, - *textLines); - - if(textLines->Count() < 3 && textLines->Count() > 0) - { - TInt nH = textLines->Count(); - aRect.iBr.iY = aRect.iBr.iY * nH; - } - - HBufC* newLinedText = HBufC::NewLC( iExtraRowText.Length() + 4); - - for(TInt i = 0 ; i < textLines->Count();i++) - { - newLinedText->Des().Append(textLines->At(i)); - newLinedText->Des().Append( KFieldSeparator ); - } - + lineWidths->AppendL(maxWidth); + + const CFont* fontLabel = AknLayoutUtils::FontFromId( + EAknLogicalFontPrimarySmallFont, NULL); + + HBufC* visualText = + AknBidiTextUtils::ConvertToVisualAndWrapToArrayWholeTextL( + iExtraRowText, *lineWidths, *fontLabel, *textLines); + + if (textLines->Count() < 3 && textLines->Count() > 0) + { + TInt nH = textLines->Count(); + aRect.iBr.iY = aRect.iBr.iY * nH; + } + + HBufC* newLinedText = HBufC::NewLC(iExtraRowText.Length() + 4); + + for (TInt i = 0; i < textLines->Count(); i++) + { + newLinedText->Des().Append(textLines->At(i)); + newLinedText->Des().Append(KFieldSeparator); + } + aLabel.UseLogicalToVisualConversion(ETrue); aLabel.SetLabelAlignment(ELayoutAlignCenter); aLabel.SetTextL( *newLinedText); - CleanupStack::PopAndDestroy( newLinedText ); - CleanupStack::PopAndDestroy( lineWidths ); - CleanupStack::PopAndDestroy( textLines ); + // Query the text colour based on the theme and update the label text + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb color; + TInt error = AknsUtils::GetCachedColor(skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6); + if (error == KErrNone) + { + aLabel.OverrideColorL(EColorLabelText, color); + } + CleanupStack::PopAndDestroy(newLinedText); + CleanupStack::PopAndDestroy(lineWidths); + CleanupStack::PopAndDestroy(textLines); delete visualText; TRACE_EXIT_POINT; @@ -211,7 +224,8 @@ // CCalenLunarChinesePlugin::SetLabelContentL // ----------------------------------------------------------------------------- // -void CCalenLunarChinesePlugin::SetLabelContentL( CEikLabel& aLabel, const TRect& /*aRect*/ ) +void CCalenLunarChinesePlugin::SetLabelContentL(CEikLabel& aLabel, + const TRect& /*aRect*/) { TRACE_ENTRY_POINT; TRect nullRect(0,0,0,0); @@ -222,6 +236,16 @@ aLabel.SetLabelAlignment(ELayoutAlignCenter); aLabel.SetTextL( iExtraRowText ); + // Query the text colour based on the theme and update the label text + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb color; + TInt error = AknsUtils::GetCachedColor(skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6); + if (error == KErrNone) + { + aLabel.OverrideColorL(EColorLabelText, color); + } + TRACE_EXIT_POINT; } @@ -671,12 +695,17 @@ // ----------------------------------------------------------------------------- // void CCalenPluginLabel::HandlePointerEventL(const TPointerEvent& - /*aPointerEvent*/) - { - TRACE_ENTRY_POINT; - iPlugin.ShowDetailsL(); - TRACE_EXIT_POINT; - } + aPointerEvent) + { + TRACE_ENTRY_POINT; + + if ( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + iPlugin.ShowDetailsL(); + } + + TRACE_EXIT_POINT; + } //EOF diff -r 42814f902fe6 -r 38571fd2a704 calendarui/rom/CalenSvr.iby --- a/calendarui/rom/CalenSvr.iby Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/rom/CalenSvr.iby Fri Mar 12 15:42:35 2010 +0200 @@ -22,7 +22,7 @@ file=ABI_DIR\BUILD_DIR\CalenSvrClient.dll SHARED_LIB_DIR\CalenSvrClient.dll file=ABI_DIR\BUILD_DIR\CalenSvr.exe PROGRAMS_DIR\CalenSvr.exe -data=DATAZ_\RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc + #endif // CALENSVR_IBY diff -r 42814f902fe6 -r 38571fd2a704 calendarui/rom/CalenSvrResources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/rom/CalenSvrResources.iby Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: IBY file for Calendar Server. +* +*/ + + + +#ifndef CALENSVRRESOURCES_IBY +#define CALENSVRRESOURCES_IBY + +data=DATAZ_\RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc + +#endif // CALENSVRRESOURCES_IBY + +// End of File \ No newline at end of file diff -r 42814f902fe6 -r 38571fd2a704 calendarui/settings/settingsui/group/calensettingsui.mmp --- a/calendarui/settings/settingsui/group/calensettingsui.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/settings/settingsui/group/calensettingsui.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -85,6 +85,7 @@ LIBRARY caf.lib LIBRARY cafutils.lib LIBRARY drmhelper.lib +LIBRARY MediaFileList.lib // File logging LIBRARY flogger.lib diff -r 42814f902fe6 -r 38571fd2a704 calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp --- a/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -41,6 +41,8 @@ // KDC_RESOURCE_DIR definition #include +#include + // ============================ MEMBER FUNCTIONS =============================== @@ -214,6 +216,8 @@ { TRACE_ENTRY_POINT; +#define NEW_MEDIA_FILE_LIST_API +#ifndef NEW_MEDIA_FILE_LIST_API // Create instance of FileList using new FileList API CFLDFileListContainer* filelist = CFLDFileListContainer::NewLC(); @@ -228,14 +232,44 @@ TBool ok( filelist->LaunchL( iToneFile, *iPopupHeader ) ); - if( ok ) + + CleanupStack::PopAndDestroy( filelist ); // filelist +#else + CMediaFileList* list = CMediaFileList::NewL(); + CleanupStack::PushL(list); + + + TInt nullItem = KErrNotFound; + + // off + list->SetNullItemL(*iToneOffText, iOffToneFile, + CMediaFileList::EMediaFileTypeAudio, + CMediaFileList::ENullItemIconOff); + + // default tone + list->SetNullItemL(*iToneDefaultText, iDefaultToneFile, + CMediaFileList::EMediaFileTypeAudio, + CMediaFileList::ENullItemIconOff); + + list->SetAttrL(CMediaFileList::EAttrExcludeMimeType, CMediaFileList::EMediaFileTypeVideo); + list->SetAttrL(CMediaFileList::EAttrAutomatedType, CDRMHelper::EAutomatedTypeCalendarAlarm); + + // Make sure that iOffToneFile is passed, in case iToneFile happens to be KNullDesC + ASSERT(!IsEmpty(iToneFile)); + + TBool ok = !list->ShowMediaFileListL(&iToneFile, &nullItem, + NULL, NULL ); + + + CleanupStack::PopAndDestroy(list); +#endif + + if (ok) { iAlarmSoundChanged = ETrue; StoreL(); - UpdateListBoxTextL(); + UpdateListBoxTextL(); } - - CleanupStack::PopAndDestroy( filelist ); // filelist TRACE_EXIT_POINT; } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/settings/settingsui/src/calensettingsuicontainer.cpp --- a/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -659,9 +659,6 @@ // Construct setting item with parametrized values HBufC* itemTitle = StringLoader::LoadLC( R_CALEN_SETTING_DEFAULTMAILBOX_TITLE ); // The resources loaded up here are empty as the items need to be dynamically updated. - - settingItem->SetEmptyItemTextL( KNullDesC ); - settingItem->ConstructL( EFalse, aOrdinal, *itemTitle, NULL, R_CALEN_SETTING_DEFAULTMAILBOX, EAknCtPopupSettingList, NULL, R_CALEN_EMPTY_POPUP_SETTING_TEXTS ); @@ -791,7 +788,7 @@ // Always add this in. We will set it hidden when it's not needed (i.e. when the // week start is set to anything other than "Monday") at the bottom of this function. - AddEnumerationItemL( iWeekTitle, + AddBinaryItemL( iWeekTitle, ECalenWeekTitleItemId, R_CALEN_SETTING_WEEKTITLE_TITLE, R_CALEN_SETTING_WEEKTITLE, diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/inc/calencontainer.h --- a/calendarui/views/inc/calencontainer.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/inc/calencontainer.h Fri Mar 12 15:42:35 2010 +0200 @@ -44,6 +44,7 @@ class CEikLabel; class MCalenContext; class CCalenContainerLayoutManager; +class MCalenPreview; class MAknNaviDecoratorObserver; @@ -241,6 +242,10 @@ */ void UpdateTodayToolbarItemL(); + /** + * returns previewpane pointer + */ + virtual const MCalenPreview* PreviewPane(){return NULL; }; private: // New functions /** * Return number of icons needed to be displayed diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/inc/calenmonthcontainer.h --- a/calendarui/views/inc/calenmonthcontainer.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/inc/calenmonthcontainer.h Fri Mar 12 15:42:35 2010 +0200 @@ -127,6 +127,11 @@ void HidePopup(); void RedrawPreviewPane(); + + /** + * returns previewpane pointer + */ + const MCalenPreview* PreviewPane(); private: // New function @@ -364,8 +369,7 @@ // View specific data, references to views data TTime& iDate; TTime iOldFirstDayOfGrid; - TBool iChangeMonth; - TBool iNativePreview; + TBool iChangeMonth; }; #endif //CALENMONTHCONT_H diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/inc/calenweekcontainer.h --- a/calendarui/views/inc/calenweekcontainer.h Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/inc/calenweekcontainer.h Fri Mar 12 15:42:35 2010 +0200 @@ -178,6 +178,11 @@ * Cleanup instances */ void CleanupInstances(); + + /** + * returns previewpane pointer + */ + const MCalenPreview* PreviewPane(); public: /** @@ -433,8 +438,7 @@ TBool iTopRowDefault; TBool iRow; - TBool iValidDay; - TBool iNativePreview; + TBool iValidDay; }; #endif //CALENWEEKCONT_H diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calencontainer.cpp --- a/calendarui/views/src/calencontainer.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calencontainer.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -826,29 +826,24 @@ TRect CCalenContainer::ReducePreview( TRect aRect ) const { TRACE_ENTRY_POINT; - if (UsePreview() ) - { - // Find the application window - TRect screenRect; - TAknLayoutRect application_window; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, - screenRect ); - application_window.LayoutRect( - screenRect, - AknLayoutScalable_Apps::application_window().LayoutLine() ); - - // Find the size of the main pane when the preview is valid. - TAknLayoutRect main_pane; - - TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; - - main_pane.LayoutRect( - application_window.Rect(), - AknLayoutScalable_Apps::main_pane( orientation + 10 ).LayoutLine() ); + + // Find the application window + TRect screenRect; + TAknLayoutRect application_window; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, screenRect); + application_window.LayoutRect(screenRect, + AknLayoutScalable_Apps::application_window().LayoutLine()); - aRect.SetWidth( main_pane.Rect().Width() ); - aRect.SetHeight( main_pane.Rect().Height() ); - } + // Find the size of the main pane when the preview is valid. + TAknLayoutRect main_pane; + + TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; + + main_pane.LayoutRect(application_window.Rect(), + AknLayoutScalable_Apps::main_pane(orientation + 10).LayoutLine()); + + aRect.SetWidth(main_pane.Rect().Width()); + aRect.SetHeight(main_pane.Rect().Height()); TRACE_EXIT_POINT; return aRect; diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calencontainerlayoutmanager.cpp --- a/calendarui/views/src/calencontainerlayoutmanager.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calencontainerlayoutmanager.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -144,12 +144,8 @@ // See if preview pane is available CheckPreviewL(); - // If no preview pane, check for an info bar - if ( !iLayoutFlags.IsSet( ECalenContainerPreview )) - { - CheckInfobarL(); - } - + CheckInfobarL(); + TRACE_EXIT_POINT; } @@ -163,10 +159,9 @@ TRACE_ENTRY_POINT; TRect previewRect = iContainer.PreviewRectL(); - if ( !iContainer.PreviewRectL().IsEmpty() ) + if (!iContainer.PreviewRectL().IsEmpty() && iContainer.PreviewPane()) { - iLayoutFlags.Set( ECalenContainerPreview ); - iLayoutFlags.Clear( ECalenContainerInfobar ); + iLayoutFlags.Set( ECalenContainerPreview ); } @@ -200,8 +195,7 @@ { iInfobar = infoBarControl; // If the infobar exists, set the container window and activate. - iLayoutFlags.Set( ECalenContainerInfobar ); - iLayoutFlags.Clear( ECalenContainerPreview ); + iLayoutFlags.Set( ECalenContainerInfobar ); iInfobar->SetContainerWindowL( iContainer ); } } diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calendaycontainer.cpp --- a/calendarui/views/src/calendaycontainer.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calendaycontainer.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -1438,24 +1438,25 @@ return; } - if(aPointerEvent.iType == TPointerEvent::EButton1Up) + if(aPointerEvent.iType == TPointerEvent::EButton1Down) { control = iLayoutManager->ControlOrNull(); if(control) { if(control->Rect().Contains(aPointerEvent.iPosition)) { - control->HandlePointerEventL(aPointerEvent); + control->HandlePointerEventL(aPointerEvent); + return; } } + if (iListBox->Model()->NumberOfItems() <= 0) + { + iView->HandleCommandL(ECalenCmdOpenMskDialog); + return; + } } - TInt pointerIndex(-1); - if(iListBox->Model()->NumberOfItems() <= 0) - { - iView->HandleCommandL(ECalenCmdOpenMskDialog); - return; - } + TInt pointerIndex(-1); // Single click integration if ( aPointerEvent.iType == TPointerEvent::EButton1Down && iListBox->View()->XYPosToItemIndex( diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calenmonthcontainer.cpp --- a/calendarui/views/src/calenmonthcontainer.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calenmonthcontainer.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -116,12 +116,7 @@ delete iGrid; delete iMonthDataArray; - delete iBackgroundSkinContext; - if( iNativePreview && iPreview ) - { - delete iPreview; - iPreview = NULL; - } + delete iBackgroundSkinContext; TRACE_EXIT_POINT; } @@ -510,7 +505,7 @@ SetActiveDayL( aNewActiveDay ); // dont focus the preview popup/previewpane if any dialog or faster app is active - if( !iView->IsEditorActiveOrFasterAppExit()) + if( iPreview && !iView->IsEditorActiveOrFasterAppExit()) { iPreview->FocusChangedL( aNewActiveDay ); } @@ -619,7 +614,7 @@ { TRACE_ENTRY_POINT; - if (aType == EEventKeyDown) + if (iPreview && aType == EEventKeyDown) { iPreview->Hide(); } @@ -1035,6 +1030,16 @@ } // ---------------------------------------------------------------------------- +// CCalenMonthContainer::PreviewPane +// Returns previewpane pointer +// ---------------------------------------------------------------------------- +const MCalenPreview* CCalenMonthContainer::PreviewPane() + { + TRACE_ENTRY_POINT + TRACE_EXIT_POINT + return iPreview; + } + // CCalenMonthContainer::ConstructImplL // Third phase constructor. // This function was called CCalenNativeView::ConstructL(). @@ -1055,12 +1060,7 @@ // Create preview pane TRect aRect = PreviewRectL(); iPreview = iServices.CustomPreviewPaneL(aRect); - if (iPreview == NULL) - { - iPreview = CCalenPreview::NewL( iView, locale, iServices ); - iNativePreview = ETrue; - } - + // grid iGrid = new(ELeave) CCalenMonthGrid(iFirstDayOfGrid,this); iGrid->SetContainerWindowL(*this); @@ -1658,6 +1658,19 @@ if(AknLayoutUtils::PenEnabled()) { + CCoeControl* control( NULL ); + if(aPointerEvent.iType == TPointerEvent::EButton1Down) + { + control = iLayoutManager->ControlOrNull(); + if(control) + { + if(control->Rect().Contains(aPointerEvent.iPosition)) + { + control->HandlePointerEventL(aPointerEvent); + return; + } + } + } TInt pointerIndex(-1); TBool isItem (iGrid->View()->XYPosToItemIndex(aPointerEvent.iPosition, pointerIndex)); CAknGridM* gridModel = static_cast(iGrid->Model()); @@ -1732,7 +1745,10 @@ if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { iGrid->HandlePointerEventL( pointerEvent ); - iPreview->Hide(); + if (iPreview) + { + iPreview->Hide(); + } if ( pointerIndex != index ) { iChangeMonth = EFalse; @@ -1779,7 +1795,7 @@ { switch ( aEventType ) { - case ( MEikListBoxObserver::EEventItemDoubleClicked ): + case ( MEikListBoxObserver::EEventItemClicked ): { if ( !iView->MenuBar()->IsDisplayed() ) { @@ -1791,13 +1807,16 @@ } - +// ---------------------------------------------------------------------------- +// CCalenMonthContainer::HidePopup +// ---------------------------------------------------------------------------- void CCalenMonthContainer::HidePopup() { TRACE_ENTRY_POINT; - - iPreview->Hide(); - + if (iPreview) + { + iPreview->Hide(); + } TRACE_EXIT_POINT; } @@ -2131,7 +2150,7 @@ iView->SetEditorActive( EFalse ); // dont focus the preview popup/previewpane if any dialog or faster app is active - if(!iView->IsEditorActiveOrFasterAppExit()) + if(iPreview && !iView->IsEditorActiveOrFasterAppExit()) { // preview popup is shown when application comes to foreground iPreview->FocusChangedL( iServices.Context().FocusDateAndTimeL().TimeLocalL() ); diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calentodoview.cpp --- a/calendarui/views/src/calentodoview.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calentodoview.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -323,6 +323,7 @@ //TODO: will be uncommented with copy to cal functionality. case ECalenCopyToCalendars: { + SaveCurrentItemIndexL(); CopyToCalendarsL(); } break; diff -r 42814f902fe6 -r 38571fd2a704 calendarui/views/src/calenweekcontainer.cpp --- a/calendarui/views/src/calenweekcontainer.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/calendarui/views/src/calenweekcontainer.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -211,11 +211,7 @@ TRACE_ENTRY_POINT; delete iListBox; - if( iNativePreview && iPreview ) - { - delete iPreview; - iPreview = NULL; - } + delete iDesArray; CleanupInstances(); @@ -1242,11 +1238,7 @@ // Create preview pane TRect aRect = PreviewRectL(); iPreview = iServices.CustomPreviewPaneL(aRect); - if (iPreview == NULL) - { - iPreview = CCalenPreview::NewL( iView, locale, iServices ); - iNativePreview = ETrue; - } + // ownership of builder transferred // 3) Listbox @@ -1361,7 +1353,7 @@ AknLayoutScalable_Apps::listscroll_cale_week_pane(layoutToolBarVariant).LayoutLine() ); - TWeekListBoxLayout lay( UseInfobar(), UseToolbar(), ETrue, main_pane ); + TWeekListBoxLayout lay( UseInfobar(), UseToolbar(), UsePreview(), main_pane ); iListBox->SetRect( iListBox->LayoutRect() ); TInt layoutVariant = lay.LayoutVariantIndex(TWeekListBoxLayout::EScrollPaneCp08); @@ -1545,7 +1537,7 @@ TRACE_ENTRY_POINT; // always hide popup on key events - if (aType == EEventKeyDown) + if (iPreview && aType == EEventKeyDown) { iPreview->Hide(); } @@ -1766,7 +1758,7 @@ CCalHourItem& itemInfo = *(*slotTable)[iListBox->CurrentItemIndex()]; // dont focus the preview popup/previewpane if any dialog or faster app is active - if(!iView->IsEditorActiveOrFasterAppExit()) + if(iPreview && !iView->IsEditorActiveOrFasterAppExit()) { if( !itemInfo.IsTimed() ) { @@ -2182,6 +2174,18 @@ aPointerEvent.iType == TPointerEvent::EButton1Down ) { IgnoreEventsUntilNextPointerUp(); + CCoeControl* control(NULL); + if (aPointerEvent.iType == TPointerEvent::EButton1Down) + { + control = iLayoutManager->ControlOrNull(); + if (control) + { + if (control->Rect().Contains(aPointerEvent.iPosition)) + { + control->HandlePointerEventL(aPointerEvent); + } + } + } return; } @@ -2204,10 +2208,7 @@ { UpdateStatusPaneAndExtensionsL(); } - iFirstTap = ETrue; } - else - iFirstTap = EFalse; } else { @@ -2235,13 +2236,12 @@ if (newColumn != oldColumn) { WeekView().SetStatusPaneFromActiveContextL(); - } - iFirstTap = ETrue; + } } break; } case TPointerEvent::EButton1Up: - if(isItem && iFirstTap == EFalse && + if(isItem && iView->MenuBar()->IsDisplayed() == EFalse) { iServices.IssueCommandL( ECalenForwardsToDayView ); @@ -2267,9 +2267,10 @@ void CCalenWeekContainer::HidePopup() { TRACE_ENTRY_POINT; - - iPreview->Hide(); - + if (iPreview) + { + iPreview->Hide(); + } TRACE_EXIT_POINT; } @@ -2285,8 +2286,10 @@ SizeChanged(); iViewPopulationComplete = EFalse; - iPreview->Hide(); - + if (iPreview) + { + iPreview->Hide(); + } iListBox->View()->SetDisableRedraw( ETrue ); PopulatesDayListsL(); @@ -2465,6 +2468,18 @@ return row; } + +// ----------------------------------------------------------------------------- +// CCalenWeekContainer::PreviewPane +// Return preview pane pointer +// ----------------------------------------------------------------------------- +// +const MCalenPreview* CCalenWeekContainer::PreviewPane() + { + TRACE_ENTRY_POINT + TRACE_EXIT_POINT + return iPreview; + } // ---------------------------------------------------------------------------- // CCalenWeekContainer::UpdatePreviewPaneL @@ -2482,7 +2497,7 @@ CCalHourItem& itemInfo = *(*slotTable)[iListBox->CurrentItemIndex()]; // dont focus the preview popup/previewpane if any dialog or faster app is active - if(!iView->IsEditorActiveOrFasterAppExit()) + if( iPreview && !iView->IsEditorActiveOrFasterAppExit()) { if( !itemInfo.IsTimed() ) { diff -r 42814f902fe6 -r 38571fd2a704 clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp --- a/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -547,7 +547,9 @@ // Execute the following commands if the resource belongs to alarmeditor. // Display the menu items based on the current focused control. if( ( EControlTextEditor == iSelectedControl ) || - ( EControlTimeEditor == iSelectedControl ) ) + ( EControlTimeEditor == iSelectedControl ) || + ( EControlOccurancePopup == iSelectedControl ) || + ( EControlAlarmDayPopup == iSelectedControl ) ) { aMenuPane->SetItemDimmed( EClockAlarmChange, ETrue ); } diff -r 42814f902fe6 -r 38571fd2a704 clock2/conf/clockapp.confml Binary file clock2/conf/clockapp.confml has changed diff -r 42814f902fe6 -r 38571fd2a704 notepad/notepad1/LibData/NpdLib.rss --- a/notepad/notepad1/LibData/NpdLib.rss Fri Feb 19 22:49:53 2010 +0200 +++ b/notepad/notepad1/LibData/NpdLib.rss Fri Mar 12 15:42:35 2010 +0200 @@ -1524,19 +1524,23 @@ { buf = qtn_nmake_no_memos_secondary_text; } +// ----------------------------------------------------------------------------- +// +// r_send_notepad_note +// the resource process dialog when send notes via message and bluetooth +// +// ----------------------------------------------------------------------------- +// RESOURCE DIALOG r_send_notepad_note { - flags = EAknWaitNoteFlags | EEikDialogFlagModeless; -// buttons=R_AVKON_SOFTKEYS_EMPTY; - buttons=R_AVKON_SOFTKEYS_CANCEL; + flags = EAknWaitNoteFlags; + buttons=R_AVKON_SOFTKEYS_CANCEL; items= { DLG_LINE { type = EAknCtNote; - - //id = EGeneralNote; - id = ESendNotepadAttach; + id = ESendNotepadAttach; control= AVKON_NOTE { layout = EWaitLayout; diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.der Binary file organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.der has changed diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.key --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.key Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn +uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO +vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB +AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo +REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss +/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J +s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut +sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ +pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp +VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ +P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK +1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT +1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x +-----END RSA PRIVATE KEY----- diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h --- a/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h Fri Feb 19 22:49:53 2010 +0200 +++ b/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h Fri Mar 12 15:42:35 2010 +0200 @@ -77,6 +77,7 @@ ECalenNotifyCalendarInfoCreated, ECalenNotifyCalendarInfoUpdated, ECalenNotifyCalendarFileDeleted, + ECalenNotifyEntrySendCancel, ECalenNotifyUserDefined1, ECalenNotifyUserDefined2, ECalenNotifyUserDefined3, diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h --- a/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h Fri Feb 19 22:49:53 2010 +0200 +++ b/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h Fri Mar 12 15:42:35 2010 +0200 @@ -123,26 +123,21 @@ **/ const TUint32 KCalendarStartupStatus = 0x0000000E; -/** -* Text string containing default calendar names separated by commas -* Used for creating default calendars at the startup of the device -* Default value: "Personal,Family,Friends" -*/ -const TUint32 KCalendarDefaultCalendars = 0x0000000F; + /** * Text string containing default calendar colors separated by commas * Used for creating default calendars at the startup of the device * Default value: "16711680,65280,255" */ -const TUint32 KCalendarDefaultColors = 0x00000010; +const TUint32 KCalendarDefaultColors = 0x0000000F; /** * String value containing unique calendar value * Used for identifying an entry by LUID + unique calendar value * Default value:"0" */ -const TUint32 KCalendarAvailableValue = 0x00000011; +const TUint32 KCalendarAvailableValue = 0x00000010; #endif // CALENDARINTERNALCRKEYS_H diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.der Binary file organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.der has changed diff -r 42814f902fe6 -r 38571fd2a704 organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.key --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.key Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn +uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO +vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB +AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo +REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss +/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J +s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut +sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ +pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp +VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ +P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK +1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT +1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x +-----END RSA PRIVATE KEY----- diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/bwins/caltestlibu.def --- a/pimappservices/calendar/bwins/caltestlibu.def Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/bwins/caltestlibu.def Fri Mar 12 15:42:35 2010 +0200 @@ -45,4 +45,5 @@ ?RegisterCalFileL@CCalTestLibrary@@QAEXABVTDesC16@@@Z @ 44 NONAME ; void CCalTestLibrary::RegisterCalFileL(class TDesC16 const &) ?WaitForAgendaServerClose@CCalTestLibrary@@SAXXZ @ 45 NONAME ; void CCalTestLibrary::WaitForAgendaServerClose(void) ?WaitForAlarmEvent@CCalTestLibrary@@QAEHHW4TAlarmChangeEvent@@W4TAlarmState@@H@Z @ 46 NONAME ; int CCalTestLibrary::WaitForAlarmEvent(int, enum TAlarmChangeEvent, enum TAlarmState, int) + ?CreateCalSubSessionL@CCalTestLibrary@@QAEAAV?$RPointerArray@VCCalSession@@@@ABVTDesC16@@@Z @ 47 NONAME ; class RPointerArray & CCalTestLibrary::CreateCalSubSessionL(class TDesC16 const &) diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/client/src/calattachment.cpp --- a/pimappservices/calendar/client/src/calattachment.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/client/src/calattachment.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -554,12 +554,23 @@ */ EXPORT_C void CCalAttachmentFile::FetchFileHandleL(RFile& aFileHandle) const { - if (iAttachmentImpl->IsFileHandleSet() || ! iCalSessionImpl) - { - User::Leave(KErrArgument); - } - - iCalSessionImpl->Server().FetchFileHandleL(aFileHandle, iAttachmentImpl->Uid(), iCalSessionImpl->FileId()); + if ( iAttachmentImpl->IsFileHandleSet() ) + { + aFileHandle.Close(); + User::LeaveIfError( + aFileHandle.Duplicate( iAttachmentImpl->FileHandle() ) ); + } + else if ( iCalSessionImpl ) + { + iCalSessionImpl->Server().FetchFileHandleL( + aFileHandle, + iAttachmentImpl->Uid(), + iCalSessionImpl->FileId() ); + } + else + { + User::Leave( KErrArgument ); + } } /** Load the binary data into the attachment object to be accessed through the CCalAttachment::Value function. diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/client/src/calcalendarinfoimpl.cpp --- a/pimappservices/calendar/client/src/calcalendarinfoimpl.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/client/src/calcalendarinfoimpl.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -69,9 +69,9 @@ { if (iProperties[position]->Value().Compare(KNullDesC8) == 0) { - __ASSERT_DEBUG(iProperties[position]->StreamId() != KNullStreamId, CalUtils::Panic(ECalendarInfoNullStreamId)); + __ASSERT_DEBUG(iFileName && iProperties[position]->StreamId() != KNullStreamId, CalUtils::Panic(ECalendarInfoNullStreamId)); // Get the property - HBufC8* value = iSessionImpl->Server().GetPropertyValueL(iSessionImpl->FileName(), iProperties[position]->StreamId()); + HBufC8* value = iSessionImpl->Server().GetPropertyValueL(iFileName->Des(), iProperties[position]->StreamId()); iProperties[position]->SetValue(value); } else if (iProperties[position]->State() == CAgnCalendarInfoProperty::EDeleted) diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/eabi/caltestlibu.def --- a/pimappservices/calendar/eabi/caltestlibu.def Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/eabi/caltestlibu.def Fri Mar 12 15:42:35 2010 +0200 @@ -52,4 +52,5 @@ _ZTV15CCalTestLibrary @ 51 NONAME _ZN15CCalTestLibrary24WaitForAgendaServerCloseEv @ 52 NONAME _ZN15CCalTestLibrary17WaitForAlarmEventEi17TAlarmChangeEvent11TAlarmStatei @ 53 NONAME + _ZN15CCalTestLibrary20CreateCalSubSessionLERK7TDesC16 @ 54 NONAME diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/server/inc/agsentrymodel.h --- a/pimappservices/calendar/server/inc/agsentrymodel.h Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/server/inc/agsentrymodel.h Fri Mar 12 15:42:35 2010 +0200 @@ -212,6 +212,7 @@ TTime TzRulesLastModifiedDateL(); void CheckTzDbModificationL(); void HandleTzRulesChangeL(const TTime& aTime); + TBool IsIndexFileAvailableL(); // Calendar file conversion operations void LoadNewStreamStoreL(CStreamStore& aStore, const TStreamId& aModelStreamId, CAgnEntryManager& aEntryManager, CAgnTzRuleIndex& aTzRuleIndex); @@ -229,7 +230,7 @@ TBool GenerateIndexFileName(TFileName& aFileName); TCalCollectionId CollectionId() const; const CAgnServFile& AgnServFile(); - + void ResetDeleteRollbackArray(); private: void ConstructL(CAgnServFile* aAgnServerFile); diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/server/src/agsasyncdelete.cpp --- a/pimappservices/calendar/server/src/agsasyncdelete.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/server/src/agsasyncdelete.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -246,7 +246,7 @@ CleanupStack::PopAndDestroy(entry); } } - + iModel.ResetDeleteRollbackArray(); iTidyDeleteArray->Reset(); iModel.FlushL(); } diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/server/src/agsentrymodel.cpp --- a/pimappservices/calendar/server/src/agsentrymodel.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/server/src/agsentrymodel.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -120,6 +120,14 @@ return *iAgnServerFile; } +/** + * Resets delete rollback array before the callback + */ +void CAgnEntryModel::ResetDeleteRollbackArray() + { + iDeleteRollbackArray.ResetAndDestroy(); + } + /** Load up the stream network */ void CAgnEntryModel::DoOpenL(const TStreamId& aModelStreamId) @@ -1398,22 +1406,20 @@ // file needs to be rebuilt and to no try to delete the file more than once. void CAgnEntryModel::MarkIndexFileAsDirtyL() { - if (iIndexFileIsDirty) - { - return; // the file is already marked as dirty - } - - TFileName idxfilename; - if (!GenerateIndexFileName(idxfilename)) - { - User::Leave(KErrBadName); - } - - TInt connectErr = iFs.Connect(); - User::LeaveIfError(connectErr); - - iFs.Delete(idxfilename); // ignore return as there is nothing we can do with it - + + if(IsIndexFileAvailableL()) + { + TFileName idxfilename; + if (!GenerateIndexFileName(idxfilename)) + { + User::Leave(KErrBadName); + } + + TInt connectErr = iFs.Connect(); + User::LeaveIfError(connectErr); + + iFs.Delete(idxfilename); // ignore return as there is nothing we can do with it + } iIndexFileIsDirty = ETrue; } @@ -1512,6 +1518,32 @@ return EFalse; } +// This method check the index file is exist. +// It returns: +// ETrue - File is already exist +// EFalse - File is not available +TBool CAgnEntryModel::IsIndexFileAvailableL() + { + TFileName idxfilename; + if (!GenerateIndexFileName(idxfilename)) + { + User::Leave(KErrBadName); + } + + TInt connectErr = iFs.Connect(); + User::LeaveIfError(connectErr); + + RFile idxFile; + TInt errReadIdx = idxFile.Open(iFs, idxfilename, EFileRead); + CleanupClosePushL(idxFile); + if((errReadIdx == KErrNotFound)) + { + CleanupStack::PopAndDestroy(); + return EFalse; + } + CleanupStack::PopAndDestroy(&idxFile); + return ETrue; +} // This method attempts to save all indices to the index file. // If any errors are encountered it will Leave. diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/server/src/agsfilemanager.cpp --- a/pimappservices/calendar/server/src/agsfilemanager.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/server/src/agsfilemanager.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -1243,7 +1243,7 @@ } else { - iAgnServer.AlarmServer().SetAlarmStatusForCalendarFile(fileName, EAlarmStatusEnabled); + QueueAlarmsImmediately(); } User::LeaveIfError(iStore->Commit()); diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/server/src/agsmain.cpp --- a/pimappservices/calendar/server/src/agsmain.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/server/src/agsmain.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -260,6 +260,7 @@ iProxy = CAgnTlsProxy::CreateL(CAgnTlsProxy::TAgnTlsTzRulesType_Server); User::LeaveIfError(iFs.Connect()); + User::LeaveIfError( iFs.ShareProtected() ); User::LeaveIfError(iAlarmServer.Connect()); iFileMgr = CAgnServFileMgr::NewL(iFs, *this); iFileMgr->CreatePermanentDataL(); diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/shared/src/agmcalendartime.cpp --- a/pimappservices/calendar/shared/src/agmcalendartime.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/shared/src/agmcalendartime.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -101,6 +101,14 @@ iTime = AgnDateTime::MaxDate(); } iLocalOffsetInMinutes = KOffsetUnspecified; + if ( ! aFloating) + { + SetFloatingFlag(EFalse); + } + else + { + SetFloatingFlag(ETrue); + } } else { diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF --- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF Fri Mar 12 15:42:35 2010 +0200 @@ -21,11 +21,11 @@ PRJ_TESTEXPORTS -TestCalApiPolicing.bat \epoc32\tools\TestCalApiPolicing.bat -Cap_80000004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_80000004_TestCalApiPolicingSub.script -Cap_00010004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00010004_TestCalApiPolicingSub.script -Cap_00008004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00008004_TestCalApiPolicingSub.script -Cap_00000004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00000004_TestCalApiPolicingSub.script -TestCalApiPolicing.IBY \epoc32\rom\include\TestCalApiPolicing.IBY -TestCalApiPolicing.script C:\testdata\scripts\TestCalApiPolicing.script +TestCalApiPolicing.bat /epoc32/tools/TestCalApiPolicing.bat +Cap_80000004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_80000004_TestCalApiPolicingSub.script +Cap_00010004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00010004_TestCalApiPolicingSub.script +Cap_00008004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00008004_TestCalApiPolicingSub.script +Cap_00000004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00000004_TestCalApiPolicingSub.script +TestCalApiPolicing.IBY /epoc32/rom/include/TestCalApiPolicing.IBY +TestCalApiPolicing.script C:/testdata/scripts/TestCalApiPolicing.script diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP --- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP Fri Mar 12 15:42:35 2010 +0200 @@ -82,9 +82,9 @@ SOURCE EDeleteEntryByGuid1_CSTEP.CPP SOURCE ECommit1_CSTEP.CPP SOURCE ERollback1_CSTEP.CPP -USERINCLUDE ..\..\..\..\shared\inc +USERINCLUDE ../../../../shared/inc -SYSTEMINCLUDE \epoc32\include \epoc32\include\test +SYSTEMINCLUDE /epoc32/include /epoc32/include/test LIBRARY euser.lib //For TEF diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP --- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP Fri Mar 12 15:42:35 2010 +0200 @@ -24,7 +24,7 @@ PARAM_FOREACH_MESS_END USERINCLUDE PARAM_SVR_USERINCLUDE -SYSTEMINCLUDE PARAM_SVR_SYSTEMINCLUDE \epoc32\include\test +SYSTEMINCLUDE PARAM_SVR_SYSTEMINCLUDE /epoc32/include/test LIBRARY PARAM_SVR_LIBRARIES //For TEF diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/caltestlib.cpp --- a/pimappservices/calendar/tsrc/caltestlib.cpp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/caltestlib.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -120,6 +121,7 @@ void CCalTestLibrary::CloseCalendarSession(TBool aWaitForAgendaToClose) { iChunkMutex.Wait(); + iSubCalSessions.ResetAndDestroy(); delete iSession; iSession = NULL; if (iRefCount && (--*iRefCount <= 0) && aWaitForAgendaToClose) @@ -399,6 +401,16 @@ if (aIsCalFile) { + + for(TInt i = 0; i < iSubCalSessions.Count();i++) + { + CCalCalendarInfo* info = iSubCalSessions[i]->CalendarInfoL(); + HBufC* fileName = info->FileNameL().AllocLC(); + delete info; + iSubCalSessions[i]->DeleteCalFileL(*fileName); + CleanupStack::PopAndDestroy(fileName); + } + iSession->DeleteCalFileL(aFileName); TInt indx=-1; if(iDelFileFlag) @@ -948,4 +960,24 @@ return tickPeriod * durationInTicks; } +EXPORT_C RPointerArray& CCalTestLibrary::CreateCalSubSessionL(const TDesC& aFileName) + { + CCalSession* session = CCalSession::NewL(*iSession); + CCalCalendarInfo* calendarInfo = CCalCalendarInfo::NewL(); + calendarInfo->SetColor(KRgbRed); + calendarInfo->SetNameL(_L("test")); + calendarInfo->SetEnabled(ETrue); + + TRAPD(err,session->CreateCalFileL(aFileName,*calendarInfo)); + if(err == KErrAlreadyExists) + { + session->DeleteCalFileL(aFileName); + session->CreateCalFileL(aFileName,*calendarInfo); + } + session->OpenL(aFileName); + iSubCalSessions.Append(session); + + delete calendarInfo; + return iSubCalSessions; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/caltestlib.h --- a/pimappservices/calendar/tsrc/caltestlib.h Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/caltestlib.h Fri Mar 12 15:42:35 2010 +0200 @@ -105,6 +105,9 @@ // Used to append the file to the delete list IMPORT_C void RegisterCalFileL(const TDesC& aFileName); + + // Create a calendar file. It leaves if the file exists. + IMPORT_C RPointerArray& CreateCalSubSessionL(const TDesC& aFileName); // Session and Views handling @@ -220,6 +223,7 @@ TBool iDelFileFlag; RMutex iChunkMutex; RASCliSession iAlarmServer; + RPointerArray iSubCalSessions; }; diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/interop/group/alldayevents.mmp --- a/pimappservices/calendar/tsrc/interop/group/alldayevents.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/interop/group/alldayevents.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -21,10 +21,10 @@ CAPABILITY readuserdata writeuserdata -USERINCLUDE ..\inc -SYSTEMINCLUDE \epoc32\include +USERINCLUDE ../inc +SYSTEMINCLUDE /epoc32/include -SOURCEPATH ..\src +SOURCEPATH ../src SOURCE alldayevents.cpp LIBRARY euser.lib estor.lib efsrv.lib pimtestclient.lib diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendar/tsrc/tcal_dataexchange.mmp --- a/pimappservices/calendar/tsrc/tcal_dataexchange.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendar/tsrc/tcal_dataexchange.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -23,6 +23,7 @@ USERINCLUDE . SYSTEMINCLUDE /epoc32/include +APP_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY calinterimapi.lib LIBRARY euser.lib estor.lib efsrv.lib caltestlib.lib diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendarvcalplugin/Inc/agnversit.h --- a/pimappservices/calendarvcalplugin/Inc/agnversit.h Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendarvcalplugin/Inc/agnversit.h Fri Mar 12 15:42:35 2010 +0200 @@ -25,10 +25,10 @@ #include #include #include -#include "calversit.h" #include #include "agmvcal.h" +#include "calversit.h" class TTzRule; class CAgnVCalConverter; diff -r 42814f902fe6 -r 38571fd2a704 pimappservices/calendarvcalplugin/group/agnversit.mmp --- a/pimappservices/calendarvcalplugin/group/agnversit.mmp Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappservices/calendarvcalplugin/group/agnversit.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -31,7 +31,7 @@ SOURCEPATH ../src userinclude ../Inc -USERINCLUDE ../../calendar/inc +userinclude ../../calendar/inc SOURCEPATH ../src diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/bwins/CCONORIGINALU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/bwins/CCONORIGINALU.DEF Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,19 @@ +EXPORTS + ??0TArithmeticalDate@@QAE@XZ @ 1 NONAME ; public: __thiscall TArithmeticalDate::TArithmeticalDate(void) + ??0TChineseCalendar@@QAE@XZ @ 2 NONAME ; public: __thiscall TChineseCalendar::TChineseCalendar(void) + ??0TChineseDate@@QAE@XZ @ 3 NONAME ; public: __thiscall TChineseDate::TChineseDate(void) + ??0TGregorianCalendar@@QAE@N@Z @ 4 NONAME ; public: __thiscall TGregorianCalendar::TGregorianCalendar(double) + ??0TGregorianCalendar@@QAE@XZ @ 5 NONAME ; public: __thiscall TGregorianCalendar::TGregorianCalendar(void) + ??4TCalendar@@QAEAAV0@ABV0@@Z @ 6 NONAME ; public: class TCalendar & __thiscall TCalendar::operator=(class TCalendar const &) + ??8TArithmeticalDate@@QBEHABV0@@Z @ 7 NONAME ; public: int __thiscall TArithmeticalDate::operator==(class TArithmeticalDate const &)const + ??8TChineseDate@@QBEHABV0@@Z @ 8 NONAME ; public: int __thiscall TChineseDate::operator==(class TChineseDate const &)const + ?ChineseToDateTime@TChineseCalendar@@QAEXAAVTDateTime@@@Z @ 9 NONAME ; public: void __thiscall TChineseCalendar::ChineseToDateTime(class TDateTime &) + ?DateTimeToChinese@TChineseCalendar@@QAEXABVTDateTime@@@Z @ 10 NONAME ; public: void __thiscall TChineseCalendar::DateTimeToChinese(class TDateTime const &) + ?DateTimeToGregorian@TGregorianCalendar@@QAEXAAVTDateTime@@@Z @ 11 NONAME ; public: void __thiscall TGregorianCalendar::DateTimeToGregorian(class TDateTime &) + ?GetDate@TChineseCalendar@@QAEXAAVTChineseDate@@@Z @ 12 NONAME ; public: void __thiscall TChineseCalendar::GetDate(class TChineseDate &) + ?GetDate@TGregorianCalendar@@QAEXAAVTArithmeticalDate@@@Z @ 13 NONAME ; public: void __thiscall TGregorianCalendar::GetDate(class TArithmeticalDate &) + ?GregorianToDateTime@TGregorianCalendar@@QAEXAAVTDateTime@@@Z @ 14 NONAME ; public: void __thiscall TGregorianCalendar::GregorianToDateTime(class TDateTime &) + ?JulianDay@TCalendar@@QAENXZ @ 15 NONAME ; public: double __thiscall TCalendar::JulianDay(void) + ?SetDate@TChineseCalendar@@QAEHABVTChineseDate@@@Z @ 16 NONAME ; public: int __thiscall TChineseCalendar::SetDate(class TChineseDate const &) + ?SetDate@TGregorianCalendar@@QAEHAAVTArithmeticalDate@@@Z @ 17 NONAME ; public: int __thiscall TGregorianCalendar::SetDate(class TArithmeticalDate &) + diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,314 @@ +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Creates the Calcon look-up table for the date range: +// 1/1/StartYear & 31/12/KEndYear +// The Linda Agenda date range is 1980-2100 +// Creates CALCONDATA.CPP and CALCONDATA.H in \epoc32\wins\c +// These should then be placed in \calcon\src and \calcon\inc respectively +// and then Calcon should be rebuilt. +// Uses the original Calcon library, now called CalconOriginal.dll +// + +void mainL(); + +#include "CalconTable.h" +#include "calconv.h" +#include + +// Type definitions +#define UNUSED_VAR(a) a = a + +//Change these to alter the date range for Calcon +const TInt KStartYear=-587; +const TInt KEndYear=2100; + +CCalconTableEngine::CCalconTableEngine() : + iTest(_L("CalconTable")) + {} + +void CCalconTableEngine::GenerateTableL() + { + TTime timeStarted; + timeStarted.UniversalTime(); + + iTest.Printf(_L("Generating Calcon table for dates:\n")); + iTest.Printf(_L("Start: 1st January %d\n"),KStartYear); + iTest.Printf(_L("End: 31st December %d\n\n"),KEndYear); + iTest.Printf(_L("Creating c:\\calcondata.cpp\n\n")); + + TDateTime dateTime(KStartYear,EJanuary,0,0,0,0,0); + TDateTime endTime(KEndYear,EDecember,31-1,0,0,0,0); + + iStartJulianDate=JulianDate(dateTime); + iEndJulianDate=JulianDate(endTime); + + TChineseCalendar calendar; + + TInt numYears=endTime.Year()-dateTime.Year()+4; + iYearArray = new (ELeave) TUint[numYears]; + +//Set date to beginning of current Chinese year + TChineseDate initialChineseDate; + calendar.DateTimeToChinese(dateTime); + calendar.GetDate(initialChineseDate); + + initialChineseDate.iMonth=1; + initialChineseDate.iDay=1; + calendar.SetDate(initialChineseDate); + calendar.ChineseToDateTime(dateTime); + + TTime time=dateTime; + TReal chineseNewYear=JulianDate(dateTime); + + TChineseDate lastDate; + TChineseDate chineseDate=initialChineseDate; + +//Move near the end of the current month + time+=TTimeIntervalDays(27); + TBool hadLeapMonth=EFalse; + + iSession.Connect(); + TInt err=iFile.Replace(iSession, _L("c:\\calcondata.cpp"), EFileShareExclusive); + if (err!=KErrNone) + return; + + err=iFile2.Replace(iSession, _L("c:\\calcondata.h"), EFileShareExclusive); + if (err!=KErrNone) + return; + + StartPrint(initialChineseDate.iCycle); + + while (chineseNewYear 2) + { + Month = Month - 3; + Year = aDate.Year(); + } + else + { + Month = Month + 9; + Year = aDate.Year() - 1; + } + + TInt Centuries = Year / 100; + TInt Decades = Year - 100 * Centuries; + TInt julian = (146097 * Centuries)/4 + (1461 * Decades) /4 + (153 * Month + 2) / 5 + aDate.Day() + 1 + 1721119; + return julian; +*/ + } + +void CCalconTableEngine::Print(TInt aFile,TPtrC8 aFormat, ...) + { + VA_LIST args; + VA_START( args, aFormat); + + TBuf8<1024> buffer; + TBuf16<1024> buffer2; + + buffer.FormatList(aFormat, args); + CnvUtfConverter::ConvertToUnicodeFromUtf8(buffer2,buffer); + + if (aFile==1) + iFile.Write(buffer); + if (aFile==2) + iFile2.Write(buffer); + + iTest.Printf(buffer2); + } + +void CCalconTableEngine::AddNewYear(TInt aChineseNewYear) + { + iYearArray[iYearCounter++]=aChineseNewYear; + } + +void CCalconTableEngine::AddMonth(TInt aCycle, TInt aYear, TInt aMonth, TInt aMonthFlag) + { + if (iFirstPrint) + { + iFirstPrint=EFalse; + iFirstYear=aYear; + + Print(2,_L8("const TInt KFirstJulianDate=%d;\n"),iStartJulianDate); + Print(2,_L8("const TInt KLastJulianDate=%d;\n"),iEndJulianDate); + Print(2,_L8("const TInt KFirstYear=%d; //1..60\n"),aYear+1); + Print(1,_L8("const TUint16 TCalconData::iCalConDataMonth[]={\n")); + + iMonthFlag=0; + iMonthFlagBit=1<<15; + iCyclePrint=aCycle; + iMonthPrint=aMonth; + iYearPrint=aYear; + } + else + { + if (aMonth==0) + {//print out the month details + Print(1,_L8(" %uU, // %u - %u\n"),iMonthFlag, iCyclePrint,iYearPrint); + + iMonthFlag=0; + iMonthFlagBit=1<<15; + iCyclePrint=aCycle; + iMonthPrint=aMonth; + iYearPrint=aYear; + iLastYear=iYearPrint+1; + } + } + + TBool bit=EFalse; //29 days + if (aMonthFlag==2 || aMonthFlag==4) //30 days + bit=ETrue; + + if (aMonthFlag==3 || aMonthFlag==4) + {//set leap + TUint shiftedLeapMonth=TUint(aMonth+1)<<28; + iYearArray[iYearCounter-1]|=shiftedLeapMonth; + } + + if (bit) + iMonthFlag|=iMonthFlagBit; + + iMonthFlagBit>>=1; + } + +void CCalconTableEngine::StartPrint(TInt aFirstCycle) + { + iFirstPrint=ETrue; + + Print(1,_L8("//\n")); + Print(1,_L8("// CALCONDATA.CPP\n")); + Print(1,_L8("//\n")); + Print(1,_L8("// Copyright (c) 2002 Symbian Ltd. All rights reserved\n")); + Print(1,_L8("//\n")); + Print(1,_L8("// Generated by CalconTable.exe\n")); + Print(1,_L8("//\n")); + + Print(2,_L8("//\n")); + Print(2,_L8("// CALCONDATA.H\n")); + Print(2,_L8("//\n")); + Print(2,_L8("// Copyright (c) 2002 Symbian Ltd. All rights reserved\n")); + Print(2,_L8("//\n")); + Print(2,_L8("// Generated by CalconTable.exe\n")); + Print(2,_L8("//\n")); + + Print(1,_L8("#include \"calconvusingtable.h\"\n")); + Print(2,_L8("const TInt KFirstCycle=%d;//1..n\n"),aFirstCycle); + } + +void CCalconTableEngine::StopPrint(TInt aLastCycle) + { + Print(1,_L8("};\n")); + Print(1,_L8("const TUint32 TCalconData::iCalConDataYear[]={\n")); + + for (TInt i=0;iGenerateTableL(); + CleanupStack::PopAndDestroy(); //delete ConvDates; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,55 @@ +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALCONTABLE_H +#define __CALCONTABLE_H + +#include +#include + +class CCalconTableEngine : public CBase + { +public: + CCalconTableEngine(); + void GenerateTableL(); +private: + TInt JulianDate(TDateTime& aDate); + void AddNewYear(TInt aChineseNewYear); + void AddMonth(TInt aCycle, TInt aYear, TInt aMonth, TInt aMonthFlag); + void Print(TInt aFile, TPtrC8 aFormat, ...); + void StartPrint(TInt); + void StopPrint(TInt); +private: + RTest iTest; + TBool iFirstPrint; + TInt iFirstYear; + TInt iLastYear; + TUint* iYearArray; + TInt iLastMonth; + TInt iYearCounter; + RFile iFile; + RFile iFile2; + RFs iSession; + + TInt iCyclePrint; + TInt iMonthPrint; + TInt iYearPrint; + TUint iMonthFlag; + TUint iMonthFlagBit; + + TInt iStartJulianDate; + TInt iEndJulianDate; + }; +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/eabi/CConOriginalU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/eabi/CConOriginalU.DEF Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,28 @@ +EXPORTS + _ZN12TChineseDateC1Ev @ 1 NONAME + _ZN12TChineseDateC2Ev @ 2 NONAME + _ZN16TChineseCalendar17ChineseToDateTimeER9TDateTime @ 3 NONAME + _ZN16TChineseCalendar17DateTimeToChineseERK9TDateTime @ 4 NONAME + _ZN16TChineseCalendar7GetDateER12TChineseDate @ 5 NONAME + _ZN16TChineseCalendar7SetDateERK12TChineseDate @ 6 NONAME + _ZN16TChineseCalendarC1Ev @ 7 NONAME + _ZN16TChineseCalendarC2Ev @ 8 NONAME + _ZN17TArithmeticalDateC1Ev @ 9 NONAME + _ZN17TArithmeticalDateC2Ev @ 10 NONAME + _ZN18TGregorianCalendar19DateTimeToGregorianER9TDateTime @ 11 NONAME + _ZN18TGregorianCalendar19GregorianToDateTimeER9TDateTime @ 12 NONAME + _ZN18TGregorianCalendar7GetDateER17TArithmeticalDate @ 13 NONAME + _ZN18TGregorianCalendar7SetDateER17TArithmeticalDate @ 14 NONAME + _ZN18TGregorianCalendarC1Ed @ 15 NONAME + _ZN18TGregorianCalendarC1Ev @ 16 NONAME + _ZN18TGregorianCalendarC2Ed @ 17 NONAME + _ZN18TGregorianCalendarC2Ev @ 18 NONAME + _ZN9TCalendar9JulianDayEv @ 19 NONAME + _ZN9TCalendaraSERKS_ @ 20 NONAME + _ZNK12TChineseDateeqERKS_ @ 21 NONAME + _ZNK17TArithmeticalDateeqERKS_ @ 22 NONAME + _ZTI18TGregorianCalendar @ 23 NONAME ; ## + _ZTV18TGregorianCalendar @ 24 NONAME ; ## + _ZTI21TArithmeticalCalendar @ 25 NONAME ; ## + _ZTV21TArithmeticalCalendar @ 26 NONAME ; ## + diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/1028702c.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/1028702c.rss Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,39 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "ecom/registryinfo.rh" + +RESOURCE REGISTRY_INFO theInfo + { + dll_uid = 0x1028702C; + interfaces = + { + INTERFACE_INFO + { + interface_uid = 0x1028702B; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x1028702D; + version_no = 1; + display_name = "cconplugin"; + default_data = ""; + opaque_data = ""; + } + }; + } + }; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/CalconTest.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/CalconTest.iby Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,30 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALCONTEST_IBY__ +#define __CALCONTEST_IBY__ + +REM Calender Converter Test + +file=ABI_DIR\BUILD_DIR\tCCn.exe System\Programs\CalconTest\tCCn.exe +#include + + + +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input1.txt calcontest\input1.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input2.txt calcontest\input2.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output1REFERENCE.txt calcontest\output1REFERENCE.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output2REFERENCE.txt calcontest\output2REFERENCE.txt +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/app-services_chinesecalendaralgorithm.mrp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/app-services_chinesecalendaralgorithm.mrp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,12 @@ +component app-services_chinesecalendaralgorithm +source \sf\app\organizer\pimappsupport\chinesecalendaralg +binary \sf\app\organizer\pimappsupport\chinesecalendaralg\group all +exports \sf\app\organizer\pimappsupport\chinesecalendaralg\group +notes_source \component_defs\release.src + + +# == IPR section auto-inserted from distribution.policy files == +ipr T +ipr E \sf\app\organizer\pimappsupport\chinesecalendaralg\pluginsrc\table1900-2100 + +# == end auto-inserted section == diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/bld.inf Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,27 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Calcon BLD.INF +// Calendar conversion utilities +// + +PRJ_PLATFORMS + +PRJ_EXPORTS +cconplugin.iby /epoc32/rom/include/cconplugin.iby + +PRJ_MMPFILES +cconplugin.mmp + +#include "../test/group/bld.inf" + diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/calcontable.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/calcontable.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,28 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET calcontable.exe +TARGETTYPE exe +CAPABILITY All -TCB +UID 0 +VENDORID 0x70000001 +SOURCEPATH ../calcontablesrc +SOURCE CalconTable.cpp +USERINCLUDE ../calcontablesrc +USERINCLUDE ../originalinc +SYSTEMINCLUDE /epoc32/include +APP_LAYER_SYSTEMINCLUDE_SYMBIAN +LIBRARY euser.lib efsrv.lib cconoriginal.lib charconv.lib +SMPSAFE \ No newline at end of file diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/cconoriginal.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/cconoriginal.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,28 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET cconoriginal.dll +TARGETTYPE dll +CAPABILITY All -TCB +UID 0x1000008d 0x10005407 //need to change UID +VENDORID 0x70000001 +SOURCEPATH ../originalsrc +SOURCE CConmain.cpp Calendar.cpp ArithmeticalCal.cpp Gregorian.cpp +SOURCE ArithmeticalDate.cpp AstronomicalCal.cpp Chinese.cpp ChineseDate.cpp +USERINCLUDE ../originalinc +SYSTEMINCLUDE /epoc32/include + +LIBRARY euser.lib +SMPSAFE \ No newline at end of file diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/cconplugin.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/cconplugin.iby Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,21 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CCONPLUGIN_IBY__ +#define __CCONPLUGIN_IBY__ + +ECOM_PLUGIN(cconplugin.dll,1028702c.rsc) + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/group/cconplugin.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/group/cconplugin.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,42 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// cconplugin.dll Bi-directional Chinese Lunar calendar to Gregorian calendar +// + +TARGET cconplugin.dll +TARGETTYPE plugin +CAPABILITY All -TCB +UID 0x10009D8D 0x1028702C +VENDORID 0x70000001 + +APP_LAYER_SYSTEMINCLUDE_SYMBIAN +USERINCLUDE ../pluginsrc + +SOURCEPATH ../pluginsrc + +SOURCE cconplugin.cpp +SOURCE chinesecalendarconverterimpl.cpp +SOURCE chinesecalendar.cpp +SOURCE calcondata.cpp +SOURCE gregoriancalendar.cpp +SOURCE calendar.cpp + +LIBRARY euser.lib +LIBRARY ecom.lib + +SOURCEPATH . +start resource 1028702c.rss + target cconplugin.rsc +end +SMPSAFE \ No newline at end of file diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalinc/calconv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalinc/calconv.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,107 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALCONV_H__ +#define __CALCONV_H__ + +// User includes +#include "calconvAstronomicalCal.h" +#include "calconvArithmeticalCal.h" + +// Constants +const TInt KCalConInvalidDate = -50000; // invalid date error code + +// Classes referenced +class TChineseDate; +class TArithmeticalDate; + + +class TChineseCalendar : public TAstronomicalCalendar +{ +public: + IMPORT_C TChineseCalendar(); + IMPORT_C void DateTimeToChinese(const TDateTime& aDT); + IMPORT_C void ChineseToDateTime(TDateTime& aDT); + IMPORT_C TInt SetDate(const TChineseDate& aDate); + IMPORT_C void GetDate(TChineseDate& aDate); + +private: + void ChineseToFixed(const TChineseDate& aDate, TReal& aJulianDay) const; + void ChineseFromFixed(TChineseDate& aDate,const TReal& aJulianDay) const; + TReal ChineseNewYear(TInt aYear) const; + TBool NoMajorSolarTerm(TReal aJulianDay) const; + TBool PriorLeapMonth(TReal& aMnthprime, TReal aMnth) const; + TInt ChineseNewMoonOnOrAfter(TReal aJulianDay) const; + TInt ChineseNewMoonBefore(TReal aJulianDay) const; + TReal MajorSolarTermOnOrAfter(TReal& aJulianDay) const; + TInt ChineseDateNextSolarLongitude(TReal& aJulianDay, const TReal& aDegrees) const; + TReal ChineseTimeZone(const TReal& aJulianDay) const; + TReal CurrentMajorSolarTerm(TReal& aJulianDay) const; + TBool ValidDate(const TChineseDate& aDate) const; + }; + +class TGregorianCalendar : public TArithmeticalCalendar + { +public: + IMPORT_C TGregorianCalendar(); + IMPORT_C TGregorianCalendar(TReal aJulianDay); + IMPORT_C void GregorianToDateTime(TDateTime& aDT); + IMPORT_C void DateTimeToGregorian(TDateTime& aDT); + IMPORT_C void GetDate(TArithmeticalDate& aDate); + IMPORT_C TInt SetDate(TArithmeticalDate& aGregDate); + +private: + void GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const; + void InitMembers(); + TInt DayNumber(const TArithmeticalDate& aDate) const; + void CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const; + TBool IsLeapYear(const TInt aYear) const; + TReal GregToJulianDay(const TArithmeticalDate& aYear) const; + TInt GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2) const; + TBool ValidDate(const TArithmeticalDate& aDate) const; + +private: + friend class TAstronomicalCalendar; + friend class TChineseCalendar; + }; + +class TChineseDate +{ +public: + IMPORT_C TChineseDate(); + IMPORT_C TBool operator==(const TChineseDate& aDate) const; + +public: + TInt iCycle; + TInt iYear; + TInt iMonth; + TBool iLeapMonth; + TInt iDay; +}; + +class TArithmeticalDate +{ +public: + IMPORT_C TArithmeticalDate(); + IMPORT_C TBool operator==(const TArithmeticalDate& aDate) const; + +public: + TInt iDay; + TInt iMonth; + TInt iYear; +}; + + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalinc/calconvArithmeticalCal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalinc/calconvArithmeticalCal.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,34 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __ARITHMETICALCAL_H__ +#define __ARITHMETICALCAL_H__ + +#include +#include "calconvcalendar.h" + +class TArithmeticalCalendar : public TCalendar + { +public: + TArithmeticalCalendar(); + +protected: + TInt DayMonthInYear(const TInt) const; + TInt DaysMonthsElapsed(const TInt) const; + virtual TBool IsLeapYear(const TInt) const; + }; + + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalinc/calconvAstronomicalCal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalinc/calconvAstronomicalCal.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,57 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __ASTRONOMICALCAL_H__ +#define __ASTRONOMICALCAL_H__ + + +#include +#include +#include "calconvcalendar.h" + +const TInt KCalConvFirstDay = 1; +const TReal KMeanSynodicMonth = 29.530588853; + + +class TAstronomicalCalendar : public TCalendar + { +public: + TAstronomicalCalendar(); + +protected: + void AdjustJDFromNoon(TReal& aJulianDay) const; + void AdjustJDToNoon(TReal& aJulianDay) const; + TReal NewMoonAtOrAfter(const TReal& aJulianDay) const; + void EphemerisCorrection(const TReal aJulianDay, TReal& emphCorr) const; + TReal LocalFromUniversal(const TReal& aTime, const TReal& aZone) const; + TReal UniversalFromLocal(const TReal& aTime, const TReal& aZone) const; + TReal DateNextSolarLongitude(const TReal& aJulianDay, const TReal& aDegrees) const; + void SolarLongitude(const TReal& aJulianDay, TReal& aTheta) const; + void JulianCenturies(const TReal& aJulianDay, TReal& aJC) const; + void EphemerisFromUniversal(const TReal& aJulianDay, TReal& aCorrectedJD) const; + TReal UniversalFromEphemeris(const TReal& aJulianDay) const; + void EphemerisCorrPopX(const TInt aYear, TReal& aEmphCorr) const; + TReal NewMoonBefore(const TReal& aJulianDay) const; +private: + TReal NewMoonTime(TInt aTime) const; + void GetLongitude(const TReal& aC, TReal& aLongitude) const; + void Aberration(const TReal& aJulianCenturies, TReal& aAberration) const; + void Nutation(const TReal& aJulianCenturies, TReal& aNutation) const; + void j2000(TReal& aJ2000) const; + void GetPoly(const TReal* aArray, const TReal& aOperand, TInt aCount, TReal& aResult) const; + void PopulateTheta(TReal& aTheta, TInt aYear) const; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalinc/calconvcalendar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalinc/calconvcalendar.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,54 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALENDAR_H__ +#define __CALENDAR_H__ + +#include +#include + + +const TInt KCalConvDayOffsetByOne = 1; +const TInt KCalConvMonthOffsetByOne = 1; +const TInt KCalConvYearOffsetByOne = 1; +const TReal KCalConvPointFive = 0.5; + + +class TCalendar + { +public: + TCalendar(); + IMPORT_C TCalendar& operator=(const TCalendar& aTCal); + IMPORT_C TReal JulianDay(); + +protected: + void Round(TInt& aRes, TReal& aNum) const; + void Mod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const; + void Amod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const; + void Floor(TInt& aRes, const TReal& aNum) const; + void Ceiling(TInt& aRes, const TReal& aNum) const; + +protected: + TReal iStartEpoch; + TInt iDaysInNormYear; + TReal iJulianDay; + TInt iCycle; + TInt iLeaps; + TInt iOffset; + TInt iStdYearMonth; + }; + + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalCal.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalCal.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,125 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TArithmeticalCalendar class. +// +// + +// System includes +#include + +// User includes +#include "calconvArithmeticalCal.h" + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: TArithmeticalCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +TArithmeticalCalendar::TArithmeticalCalendar() + { + } + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: DaysMonthsElapsed +// Arguments: const TInt ,const TInt ,const TInt , const TInt ,const TInt +// +// Comments: The use of this function varies between calendars +// however since the form of the equation is the same it +// is represented in this class. The equation is use to +// calculate the number of days in whole months of a particular +// year up to a particular date in the Gregorian and +// Islamic calendars. The Hebrew calendar uses this +// equation to calculate the number of whole months +// since the start of the calendar. +// +// +// Return: See comments +//------------------------------------------------------ +TInt TArithmeticalCalendar::DaysMonthsElapsed(const TInt aYear) const + { + TReal tempReal; + TInt result; + + tempReal = iOffset * iLeaps; + Mod(tempReal,tempReal,iCycle); + tempReal = ((iLeaps * aYear) - iLeaps + tempReal) / iCycle; + Floor(result,tempReal); + result = result + (iStdYearMonth * (aYear - KCalConvYearOffsetByOne)); + + return result; + } + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: IsLeapYear +// Arguments: const TInt , const TInt ,const TInt , const TInt +// +// Comments: Determines whether the given year is a leap year. +// Gregorian uses a different implimentation. +// +// Return: ETrue if leap year, else EFalse +//------------------------------------------------------ +TBool TArithmeticalCalendar::IsLeapYear(const TInt aYear) const + { + TReal result; + TBool rtn; + + result = (aYear + iOffset) * iLeaps; + Mod(result,result,iCycle); + + if(result < iLeaps) + { + rtn = ETrue; + } + else + { + rtn = EFalse; + } + + return rtn; + } + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: DayMonthInYear +// Arguments: None +// +// Comments: This function Determines the month based on +// the number of days into the year it is +// +// Return: TInt - Month +//------------------------------------------------------ +TInt TArithmeticalCalendar::DayMonthInYear(const TInt aDays) const + { + TReal tempReal; + TInt result; + + tempReal = iLeaps * iOffset; + Mod(tempReal,tempReal,iCycle); + tempReal = (iCycle * aDays) + (iCycle * iStdYearMonth) + iLeaps - KCalConvYearOffsetByOne + iCycle - tempReal; + tempReal = tempReal / ((iCycle * iStdYearMonth) + iLeaps); + Floor(result,tempReal); + + return result; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalDate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalDate.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,64 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TArithmeticalDate class. +// +// + +// User includes +#include "calconv.h" + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TArithmeticalDate +// Function: TArithmeticalDate +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +EXPORT_C TArithmeticalDate::TArithmeticalDate() + { + } + +//------------------------------------------------------ +// Class: TArithmeticalDate +// Function: operator == +// Arguments: const TArithmeticalDate & +// +// Comments: overloaded == operator +// +// Return: TBool - ETrue if both the TArithmeticalDate +// classes are the same +//------------------------------------------------------ +EXPORT_C TBool TArithmeticalDate::operator ==(const TArithmeticalDate &aDate) const + { + TBool rtn = ETrue; + if(iYear != aDate.iYear) + { + rtn = EFalse; + } + if(iMonth != aDate.iMonth) + { + rtn = EFalse; + } + if(iDay != aDate.iDay) + { + rtn = EFalse; + } + return rtn; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/AstronomicalCal.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/AstronomicalCal.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,1090 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TAstronomicalCalendar class. +// +// + +// System includes +#include +#include + +// User includes +#include "calconv.h" +#include "calconvAstronomicalCal.h" + +// Constants +const TReal KCoeff19th[] = + { + -0.00002, + 0.000297, + 0.025184, + -0.181133, + 0.553040, + -0.861938, + 0.677066, + -0.212591, + }; + +const TReal KCoeff18th[] = + { + -0.000009, + 0.003844, + 0.083563, + 0.865736, + 4.867575, + 15.845535, + 31.332267, + 38.291999, + 28.316289, + 11.636204, + 2.043794, + }; + +const TInt KCoeffs[] = + { + 403406, + 195207, + 119433, + 112392, + 3891, + 2819, + 1721, + 0, + 660, + 350, + 334, + 314, + 268, + 242, + 234, + 158, + 132, + 129, + 114, + 99, + 93, + 86, + 78, + 72, + 68, + 64, + 46, + 38, + 37, + 32, + 29, + 28, + 27, + 27, + 25, + 24, + 21, + 21, + 20, + 18, + 17, + 14, + 13, + 13, + 13, + 12, + 10, + 10, + 10, + 10, + }; + +const TReal KMulti[] = + { + 4.721964, + 5.937458, + 1.115589, + 5.781616, + 5.5474, + 1.512, + 4.1897, + 1.163, + 5.415, + 4.315, + 4.553, + 5.198, + 5.989, + 2.911, + 1.423, + 0.061, + 2.317, + 3.193, + 2.828, + 0.52, + 4.65, + 4.35, + 2.75, + 4.5, + 3.23, + 1.22, + 0.14, + 3.44, + 4.37, + 1.14, + 2.84, + 5.96, + 5.09, + 1.72, + 2.56, + 1.92, + 0.09, + 5.98, + 4.03, + 4.47, + 0.79, + 4.24, + 2.01, + 2.65, + 4.98, + 0.93, + 2.21, + 3.59, + 1.5, + 2.55, + }; + +const TReal KAdd[] = + { + 0.01621043, + 628.30348067, + 628.30821524, + 628.29634302, + 1256.605691, + 1256.60984, + 628.324766, + 0.00813, + 1256.5931, + 575.3385, + -0.33931, + 7771.37715, + 786.04191, + 0.05412, + 393.02098, + -0.34861, + 1150.67698, + 157.74337, + 52.9667, + 588.4927, + 52.9611, + -39.807, + 522.3769, + 550.7647, + 2.6108, + 157.7385, + 1884.9103, + -77.5655, + 2.6489, + 1179.0627, + 550.7575, + -79.6139, + 1884.8981, + 21.3219, + 1097.7103, + 548.6856, + 254.4393, + -557.3143, + 606.9774, + 21.3279, + 1097.7163, + -77.5282, + 1884.9191, + 2.0781, + 294.2463, + -0.0799, + 469.4114, + -0.6829, + 214.6325, + 1572.084, + }; + +const TReal KMuArray[] = + { + -0.40720, + 0.17241, + 0.01608, + 0.01039, + 0.00739, + -0.00514, + 0.00208, + -0.00111, + -0.00057, + 0.00056, + -0.00042, + 0.00042, + 0.00038, + -0.00024, + -0.00007, + 0.00004, + 0.00004, + 0.00003, + 0.00003, + -0.00003, + 0.00003, + -0.00002, + -0.00002, + 0.00002, + }; + +const TInt8 KOmegaArray[] = + { + 0, + 1, + 0, + 0, + 1, + 1, + 2, + 0, + 0, + 1, + 0, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }; + +const TInt8 KXiArray[] = + { + 0, + 1, + 0, + 0, + -1, + 1, + 2, + 0, + 0, + 1, + 0, + 1, + 1, + -1, + 2, + 0, + 3, + 1, + 0, + 1, + -1, + -1, + 1, + 0, + }; + +const TInt8 KGammaArray[] = + { + 1, + 0, + 2, + 0, + 1, + 1, + 0, + 1, + 1, + 2, + 3, + 0, + 0, + 2, + 1, + 2, + 0, + 1, + 2, + 1, + 1, + 1, + 3, + 4, + }; + +const TInt8 KZetaArray[] = + { + 0, + 0, + 0, + 2, + 0, + 0, + 0, + -2, + 2, + 0, + 0, + 2, + -2, + 0, + 0, + -2, + 0, + -2, + 2, + 2, + 2, + -2, + 0, + 0, + }; + +const TReal KIotaArray[] = + { + 299.77, + 251.88, + 251.83, + 349.42, + 84.66, + 141.74, + 207.14, + 154.84, + 34.52, + 207.19, + 291.34, + 161.72, + 239.56, + 331.55, + }; + +const TReal KChiArray[] = + { + 0.107408, + 0.016321, + 26.641886, + 36.412478, + 18.206239, + 53.303771, + 2.453732, + 7.306860, + 27.261239, + 0.121824, + 1.844379, + 24.198154, + 25.513099, + 3.592518, + }; + +const TReal KNuArray[] = + { + -0.009173, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }; + +const TReal KLamdaArray[] = + { + 0.000325, + 0.000165, + 0.000164, + 0.000126, + 0.00011, + 0.000062, + 0.00006, + 0.000056, + 0.000047, + 0.000042, + 0.00004, + 0.000037, + 0.000035, + 0.000023, + }; + +const TInt KInitOne = 1; +const TInt KHoursInDay = 24; +const TInt KMinsInHour = 60; +const TInt KSecsInMin = 60; +const TInt KDaysInGregHundredYears = 36525; +const TReal KMeanDaysInGregYear = 365.25; +const TInt KSquared = 2; +const TInt KCubed = 3; +const TInt KQuad = 4; +const TInt K360Degrees = 360; +const TReal KDegreesToRadians = 0.017453292519943296; //(KPi/180); +const TInt KNumElementsCoeff19th = 8; +const TInt KNumElementsCoeff18th = 11; +const TInt KNoOfPeriodicTerms = 50; +const TInt KMaxCorrectionValues = 24; +const TReal KMonthsInTropicalYear = 12.3685; +const TInt KMaxAdditionalValues = 14; + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: TAstronomicalCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +TAstronomicalCalendar::TAstronomicalCalendar() + { + + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: UniversalFromLocal +// Arguments: TReal , TInt +// +// Comments: Universal time is used for time keeping purposes. +// It is given as a fraction on a solar day +// +// Return: Universal time +//------------------------------------------------------ +TReal TAstronomicalCalendar::UniversalFromLocal(const TReal& aTime,const TReal& aZone) const + { + return (aTime - (aZone / (KHoursInDay * KMinsInHour))); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: LocalFromUniversal +// Arguments: TReal , TInt +// +// Comments: Universal time is used for time keeping purposes. +// It is given as a fraction on a solar day +// +// Return: Local time +//------------------------------------------------------ +TReal TAstronomicalCalendar::LocalFromUniversal(const TReal& aTime, const TReal& aZone) const + { + return (aTime + (aZone / (KHoursInDay * KMinsInHour))); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendarL +// Function: EphemerisCorrection +// Arguments: TReal +// +// Comments: Astronomical calculations are performed using +// Ephemeris time that is not affected by nutation +// and aberation. +// +// Return: Correction value +//------------------------------------------------------ +void TAstronomicalCalendar::EphemerisCorrection(const TReal aJulianDay, TReal& aCorrection) const + { + TGregorianCalendar greg(aJulianDay); + TArithmeticalDate gregDate; + TInt year; + TReal theta; + TReal x; + aCorrection = 0; + + // get the value for the year + greg.GetDate(gregDate); + year = gregDate.iYear; + // get theta value + PopulateTheta(theta,year); + // get x value + EphemerisCorrPopX(year, x); + + // perform ephemeris correction + if((year >= 1988) && (year <= 2019)) + { + aCorrection = ((year - 1933) / (KHoursInDay * KMinsInHour * KSecsInMin)); + } + else if((year >= 1900) && (year <= 1987)) + { + GetPoly(KCoeff19th,theta,KNumElementsCoeff19th,aCorrection); + } + else if((year >= 1800) && (year <= 1899)) + { + GetPoly(KCoeff18th,theta,KNumElementsCoeff18th, aCorrection); + } + else if((year >= 1620) && (year <= 1799)) + { + TReal result; + result = year - 1600; + Math::Pow(result,result,KSquared); + result = 196.58333 - (4.0675 * (year - 1600)) + 0.0219167 * result; + aCorrection = result / (KHoursInDay * KMinsInHour * KSecsInMin); + } + else + { + TReal result; + Math::Pow(result,x,KSquared); + result = (result / 41048480) - 15; + aCorrection = result / (KHoursInDay * KMinsInHour * KSecsInMin); + } + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: PopulateTheta +// Arguments: TReal& +// +// Comments: Determines the constant for theta +// This function is used for the ephemeris correction +// +// Return: None +//------------------------------------------------------ +void TAstronomicalCalendar::PopulateTheta(TReal &aTheta,TInt aYear) const + { + TGregorianCalendar greg; + TArithmeticalDate gregDate1; + TArithmeticalDate gregDate2; + gregDate1.iDay = KCalConvFirstDay; + gregDate1.iMonth = EJanuary + KCalConvMonthOffsetByOne; + gregDate1.iYear = 1900; + gregDate2.iDay = KCalConvFirstDay; + gregDate2.iMonth = EJuly + KCalConvMonthOffsetByOne; + gregDate2.iYear = aYear; + aTheta = greg.GregDateDiff(gregDate1,gregDate2) / KDaysInGregHundredYears; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: EphemerisCorrPopX +// Arguments: TReal& +// +// Comments: Determines the constant for x +// This function is used for the ephemeris correction +// +// Return: TReal - ephemeris constant +//------------------------------------------------------ +void TAstronomicalCalendar::EphemerisCorrPopX(const TInt aYear, TReal& aEmphCorr) const + { + TGregorianCalendar greg; + TArithmeticalDate gregDate1; + TArithmeticalDate gregDate2; + gregDate1.iDay = KCalConvFirstDay; + gregDate1.iMonth = EJanuary + KCalConvMonthOffsetByOne; + gregDate1.iYear = 1810; + gregDate2.iDay = KCalConvFirstDay; + gregDate2.iMonth = EJanuary + KCalConvMonthOffsetByOne; + gregDate2.iYear = aYear; + aEmphCorr = 0.5 + greg.GregDateDiff(gregDate1,gregDate2); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: GetPoly +// Arguments: TReal& , CArrayFixFlat& , TReal& +// +// Comments: performs the following calculation +// +// 2 +// SIGMA (Array[i] * Operand ) +// i +// +// Return: TReal - result of above calculation +//------------------------------------------------------ +void TAstronomicalCalendar::GetPoly(const TReal* aArray,const TReal& aOperand, TInt aCount, TReal& aResult) const + { + TInt count; + TReal poly; + + aResult = aArray[0]; + for(count = KInitOne; count < aCount; count++) + { + Math::Pow(poly,aOperand,count); + aResult += aArray[count] * poly; + } + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: EphemerisFromUniversal +// Arguments: None +// +// Comments: converts ephemeris time to universal time +// +// Return: TReal - universal time +//------------------------------------------------------ +void TAstronomicalCalendar::EphemerisFromUniversal(const TReal& aJulianDay, TReal& aCorrectedJD) const + { + TReal emphCorr; + EphemerisCorrection(aJulianDay, emphCorr); + aCorrectedJD = aJulianDay + emphCorr; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: UniversalFromEphemeris +// Arguments: None +// +// Comments: Converts universal time to ephemeris time +// +// Return: TReal - ephemeris time +//------------------------------------------------------ +TReal TAstronomicalCalendar::UniversalFromEphemeris(const TReal& aJulianDay) const + { + TReal result; + EphemerisCorrection(aJulianDay, result); + return (aJulianDay - result); + } + + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: j2000 +// Arguments: None +// +// Comments: Julian day value of January 1st 2000 +// +// Return: TReal - see comment +//------------------------------------------------------ +void TAstronomicalCalendar::j2000(TReal& aJ2000) const + { + TGregorianCalendar greg; + TArithmeticalDate date; + + date.iDay = KCalConvFirstDay; + date.iMonth = EJanuary + KCalConvMonthOffsetByOne; + date.iYear = 2000; + + aJ2000 = KCalConvPointFive + greg.GregToJulianDay(date); + + AdjustJDToNoon(aJ2000); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: JulianCenturies +// Arguments: None +// +// Comments: Number of centuries before or after January +// 1st 2000 (Gregorian) +// +// Return: TReal - centuries and fraction thereof +//------------------------------------------------------ +void TAstronomicalCalendar::JulianCenturies(const TReal& aJulianDay, TReal& aJC) const + { + TReal emph; + TReal julian2000; + EphemerisFromUniversal(aJulianDay,emph); + j2000(julian2000); + + aJC = ( emph- julian2000) / KDaysInGregHundredYears; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: SolarLongitudeL +// Arguments: TReal& +// +// Comments: calculates the longitude of the sun at +// any give Julian Day value. +// +// Return: TReal - longitude +//------------------------------------------------------ +void TAstronomicalCalendar::SolarLongitude(const TReal& aJulianDay, TReal& aTheta) const + { + TReal centuries; // Julian centuries + TReal longitude; // longitude + TReal aberration; + TReal nutation; + + // get the julian centuries + JulianCenturies(aJulianDay,centuries); + + // get the longitude + GetLongitude(centuries, longitude); + + Aberration(centuries,aberration); + Nutation(centuries,nutation); + + aTheta = (longitude + aberration + nutation); + aTheta = (aTheta / KPi) * 180; + Mod(aTheta,aTheta,K360Degrees); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: Nutation +// Arguments: TReal & +// +// Comments: corrects for changes in celestial longitude +// and latitude caused by the gravitational pull +// of the sun and moon on the earth. +// +// Return: TReal - correction value +//------------------------------------------------------ +void TAstronomicalCalendar::Nutation(const TReal &aJulianCenturies, TReal& aNutation) const + { + TReal a; + TReal b; + + a = 124.9 - (1934.134 * aJulianCenturies) + (0.002063 * aJulianCenturies * aJulianCenturies); + a *=KDegreesToRadians; + Math::Sin(a,a); + + b = 201.11 + (72001.5377 * aJulianCenturies) + (0.00057 * aJulianCenturies * aJulianCenturies); + b *= KDegreesToRadians; + Math::Sin(b,b); + + aNutation = (-0.0000834 * a) - (0.0000064 * b); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: Aberration +// Arguments: TReal & +// +// Comments: This function makes a correction for the +// movement of the earth (the apparent movement +// of the sun) in the time taken for light to +// travel to earth. +// +// Return: TReal - correction in radians +//------------------------------------------------------ +void TAstronomicalCalendar::Aberration(const TReal &aJulianCenturies, TReal& aAberration) const + { + aAberration = 177.63 + (35999.01848 * aJulianCenturies); + aAberration *= KDegreesToRadians; + Math::Cos(aAberration,aAberration); + aAberration = (0.0000017 * aAberration) - 0.0000973; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: GetLongitude +// Arguments: TReal& +// +// Comments: calculates the longitude component of the +// solar longitude calculation. +// This function is used by the SolarLongitudeL +// function. +// +// Return: TReal - longitude +//------------------------------------------------------ +void TAstronomicalCalendar::GetLongitude(const TReal& aC, TReal& aLongitude) const + { + TInt count; + aLongitude = 0; + + // get longitude + for(count = 0;count < KNoOfPeriodicTerms;count++) + { + TReal temp; + temp = (KMulti[count] + (KAdd[count] * aC)); + // convert to radians for the Sin function + Math::Sin(temp,temp); + temp = KCoeffs[count] * temp; + aLongitude += temp; + } + aLongitude = 4.9353929 + (628.33196168 * aC) + (0.0000001 * aLongitude); + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: DateNextSolarLongitudeL +// Arguments: TReal , TReal +// +// Comments: +// +// Return: TReal +//------------------------------------------------------ +TReal TAstronomicalCalendar::DateNextSolarLongitude(const TReal& aJulianDay,const TReal& aDegrees) const + { + TReal next; + TInt nextInt; + TReal upperLimit; + TReal lowerLimit; + TReal testDate; + + // get next + SolarLongitude(aJulianDay,next); + next/= aDegrees; + Ceiling(nextInt,next); + next = nextInt * aDegrees; + Mod(next,next,K360Degrees); + + // this is designed to define a range (aJulianDay -> UpperLimit) + // that will allow the sun to pass though aDegrees once and once only + upperLimit = aJulianDay + ((aDegrees / K360Degrees) * 400); + lowerLimit = aJulianDay; + + for(testDate = (upperLimit + lowerLimit) / 2; + (upperLimit - lowerLimit) >= 0.00001; + testDate = (upperLimit + lowerLimit) / 2) + { + TReal solLong; + SolarLongitude(testDate, solLong); + if(next == 0) + { + if(solLong <= aDegrees) + { + upperLimit = testDate; + } + else + { + lowerLimit = testDate; + } + } + else + { + if(solLong >= next) + { + upperLimit = testDate; + } + else + { + lowerLimit = testDate; + } + } + } + return testDate; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: NewMoonAtOrAfter +// Arguments: TReal& +// +// Comments: Calculates the time of the new moon by deturmining +// the sums of periodic terms. +// +// Return: TReal - time of new moon +//------------------------------------------------------ +TReal TAstronomicalCalendar::NewMoonAtOrAfter(const TReal& aJulianDay) const + { + TReal jDReal = aJulianDay; + TReal result; + TInt jD; + + + AdjustJDFromNoon(jDReal); + Floor(jD,jDReal); + TGregorianCalendar greg(jDReal); + AdjustJDToNoon(jDReal); + + TArithmeticalDate date; + TInt approx; + TInt error; + TReal gamma; + + TReal temp; + TInt count; + + // get date + greg.GetDate(date); + + // get Gamma + gamma = date.iYear + (greg.DayNumber(date) / KMeanDaysInGregYear) - 2000; + + // get approx + temp = gamma * KMonthsInTropicalYear; + Floor(approx,temp); + approx--; + + // get error + error = 0; + + for(count = approx;NewMoonTime(count) < aJulianDay;count++) + { + error++; + } + + // calc return + result = NewMoonTime(approx + error); + return result; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: NewMoonTime +// Arguments: TInt +// +// Comments: This function is used as part of the calculation +// for NewMoonAtOrAfter() +// +// Return: TReal - derived value +//------------------------------------------------------ +TReal TAstronomicalCalendar::NewMoonTime(TInt aTime) const + { + TReal newMoonTime; + TReal kappa; + TReal jde; + TReal epsilon; + TReal solarAnomaly; + TReal lunarAnomaly; + TReal moonArgument; + TReal omega; + TReal correction; + TReal additional; + + TReal temp; + TInt count; + + // get Kappa + kappa = aTime / 1236.85; + + // get jde + jde = 2451550.09765; + temp = KMeanSynodicMonth * 1236.85 * kappa; + jde += temp; + Math::Pow(temp,kappa,KSquared); + jde += temp * 0.0001337; + Math::Pow(temp,kappa,KCubed); + jde -= temp * 0.00000015; + Math::Pow(temp,kappa,KQuad); + jde += temp * 0.00000000073; + + // get epsilon + epsilon = 1 - (0.002516 * kappa); + Math::Pow(temp,kappa,KSquared); + epsilon -= temp * 0.0000074; + + // get solar anomaly + solarAnomaly = 2.5534 + (29.10535669 * 1236.85 * kappa); + Math::Pow(temp,kappa,KSquared); + solarAnomaly -= temp * 0.0000218; + Math::Pow(temp,kappa,KCubed); + solarAnomaly -= temp * 0.00000011; + + // get lunar anomaly + lunarAnomaly = 201.5643 + (385.81693528 * 1236.85 * kappa); + Math::Pow(temp,kappa,KSquared); + lunarAnomaly += temp * 0.0107438; + Math::Pow(temp,kappa,KCubed); + lunarAnomaly += temp * 0.00001239; + Math::Pow(temp,kappa,KQuad); + lunarAnomaly -= temp * 0.000000058; + + // get moon argument + moonArgument = 160.7108 + (390.67050274 * 1236.85 * kappa); + Math::Pow(temp,kappa,KSquared); + moonArgument -= temp * 0.0016341; + Math::Pow(temp,kappa,KCubed); + moonArgument -= temp * 0.00000227; + Math::Pow(temp,kappa,KQuad); + moonArgument += temp * 0.000000011; + + // get omega + omega = 124.7746 + (-1.5637558 * 1236.85 * kappa); + Math::Pow(temp,kappa,KSquared); + omega += temp * 0.0020691; + Math::Pow(temp,kappa,KCubed); + omega += temp * 0.00000215; + + // convert to radians for the Sin function + omega *= KDegreesToRadians; + Math::Sin(correction,omega); + correction = -0.00017 * correction; + for(count = 0; count < KMaxCorrectionValues;count++) + { + TReal tempCorrection; + TReal epsilonToTheOmega; + tempCorrection = (KXiArray[count] * solarAnomaly) + + (KGammaArray[count] * lunarAnomaly) + + (KZetaArray[count] * moonArgument); + // convert to radians for the Sin function + tempCorrection *= KDegreesToRadians; + Math::Sin(tempCorrection,tempCorrection); + Math::Pow(epsilonToTheOmega,epsilon,KOmegaArray[count]); + tempCorrection = KMuArray[count] * epsilonToTheOmega * tempCorrection; + correction += tempCorrection; + } + + for(count = 0,additional = 0;count < KMaxAdditionalValues;count++) + { + TReal addnTemp; + Math::Pow(addnTemp,kappa,KSquared); + addnTemp = KIotaArray[count] + (KChiArray[count] * aTime) + + (KNuArray[count] * addnTemp); + // convert to radians for the Sin function + addnTemp *= KDegreesToRadians; + Math::Sin(addnTemp,addnTemp); + addnTemp = KLamdaArray[count] * addnTemp; + additional += addnTemp; + } + + // calculate result + newMoonTime = jde + correction + additional; + newMoonTime = UniversalFromEphemeris(newMoonTime); + return newMoonTime; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: NewMoonBefore +// Arguments: +// +// Comments: +// +// Return: +//------------------------------------------------------ +TReal TAstronomicalCalendar::NewMoonBefore(const TReal &aJulianDay) const + { + TReal result; + result = NewMoonAtOrAfter(aJulianDay); + result-=45; + result = NewMoonAtOrAfter(result); + return result; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: AdjustJDToNoon +// Arguments: TReal& +// +// Comments: This function corrects for the fact that the +// julian day starts at noon however the julian +// day held in the base class starts on the +// preceeding midnight. +// +// Return: None +//------------------------------------------------------ +void TAstronomicalCalendar::AdjustJDToNoon(TReal &aJulianDay) const + { + aJulianDay -= KCalConvPointFive; + } + +//------------------------------------------------------ +// Class: TAstronomicalCalendar +// Function: AdjustJDFromNoon +// Arguments: TReal& +// +// Comments: This function corrects for the fact that the +// julian day starts at noon however the julian +// day held in the base class starts on the +// preceeding midnight. +// +// Return: None +//------------------------------------------------------ +void TAstronomicalCalendar::AdjustJDFromNoon(TReal &aJulianDay) const + { + aJulianDay += KCalConvPointFive; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/CConmain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/CConmain.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,21 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +// System includes +#include + + +// Main DLL entry point + diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/Calendar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/Calendar.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,199 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TCalendar class. +// +// + +#include +#include +#include "calconvcalendar.h" + +const TReal KRemainderApproxZero = 0.000000001; + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TCalendar +// Function: TCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: none +//------------------------------------------------------ +TCalendar::TCalendar() + { + iJulianDay = 0; + } + + +//------------------------------------------------------ +// Class: TCalendar +// Function: operator = +// Arguments: TCalendar &TCal - the TCalendar +// class by referance. +// +// Comments: Copies the JulianDay value from one instance +// of TCalendar to an other. +// +// Return: *this +//------------------------------------------------------ +EXPORT_C TCalendar& TCalendar::operator =(const TCalendar &TCal) + { + iJulianDay = TCal.iJulianDay; + return (*this); + } + +EXPORT_C TReal TCalendar::JulianDay() + { + return iJulianDay; + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Floor +// Arguments: TReal& ,TReal& +// +// Comments: This function returns the floor value of the +// value given in the aNum argument as Determined by: +// +// the largest integer less than or equal to aNum +// +// Return: None +//------------------------------------------------------ +void TCalendar::Floor(TInt& aRes,const TReal& aNum) const + { + TReal tempReal; + TInt32 tempReal32; + TInt precision = 0; + + TReal wholeNoTemp; + Math::Frac(wholeNoTemp,aNum); + if(wholeNoTemp < 0) + { + wholeNoTemp = -wholeNoTemp; + } + + if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero)) + { + tempReal = aNum; + } + else + { + tempReal = aNum - KCalConvPointFive; + } + Math::Round(tempReal,tempReal,precision); + Math::Int(tempReal32,tempReal); + aRes = tempReal32; + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Ceiling +// Arguments: TReal& ,TReal& +// +// Comments: This function returns the ceiling value of the +// value given in the aNum argument as Determined by: +// +// the smallest integer less than or equal to aNum +// +// Return: None +//------------------------------------------------------ +void TCalendar::Ceiling(TInt& aRes,const TReal& aNum) const + { + TReal tempReal; + TInt32 tempReal32; + TInt precision = 0; + + TReal wholeNoTemp; + Math::Frac(wholeNoTemp,aNum); + if(wholeNoTemp < 0) + { + wholeNoTemp = -wholeNoTemp; + } + + if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero)) + { + tempReal = aNum; + } + else + { + tempReal = aNum + KCalConvPointFive; + } + Math::Round(tempReal,tempReal,precision); + Math::Int(tempReal32,tempReal); + aRes = tempReal32; + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Mod +// Arguments: TReal &, const TReal &, const TReal & +// +// Comments: return the mod of the aAbscissa / aDenominator +// quotient as Determined by: +// +// aAbscissa - aDenominator(floor(aAbscissa / aDenominator)) +// +// Return: None +//------------------------------------------------------ +void TCalendar::Mod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const + { + TReal quo; + TInt tempInt; + + quo = aAbscissa / aDenominator; + + Floor(tempInt,quo); + + aRes = aAbscissa - (aDenominator * tempInt); + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Amod +// Arguments: TReal &, const TReal &, const TReal & +// +// Comments: Determines the adjusted remainder +// +// Return: None +//------------------------------------------------------ +void TCalendar::Amod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const + { + Mod(aRes,aAbscissa,aDenominator); + + if(aRes == 0) + { + aRes = aDenominator; + } + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Round +// Arguments: TInt &, TReal & +// +// Comments: rounds of the aNum argument +// +// Return: None +//------------------------------------------------------ +void TCalendar::Round(TInt &aRes, TReal &aNum) const + { + TReal temp; + temp = aNum + 0.5; + Floor(aRes,temp); + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/Chinese.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/Chinese.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,626 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TChineseCalendar class. +// +// + +// User includes +#include "calconv.h" + +// Constants +const TInt KChinStartEpoch = 758325; +const TInt KFifteenth = 15; +const TInt KDegreesPerMonth = 30; +const TInt KMonthsInYear = 12; +const TInt KFirstChinYear = -2636; +const TInt KYearsInChinCycle = 60; +const TInt KCycleOffset = 1; + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: TChineseCalendar +// Arguments: None +// +// Comments: Constructer +// +// Return: None +//------------------------------------------------------ +EXPORT_C TChineseCalendar::TChineseCalendar() + { + iStartEpoch = KChinStartEpoch; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: CurrentMajorSolarTerm +// Arguments: TReal +// +// Comments: Returns the index of the last major solar term +// +// Return: see comment +//------------------------------------------------------ +TReal TChineseCalendar::CurrentMajorSolarTerm(TReal& aJulianDay) const + { + TReal sigma; + TInt sigmaI; + + AdjustJDToNoon(aJulianDay); + + sigma = ChineseTimeZone(aJulianDay); + sigma = UniversalFromLocal(aJulianDay,sigma); + SolarLongitude(sigma,sigma); + sigma /= 30.0; + Floor(sigmaI,sigma); + sigmaI += 2; + Amod(sigma,sigmaI,12.0); + Round(sigmaI,sigma); + return sigmaI; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseTimeZone +// Arguments: TReal +// +// Comments: Determines which time zone to use +// +// Return: TReal - time zone +//------------------------------------------------------ +TReal TChineseCalendar::ChineseTimeZone(const TReal& aJulianDay) const + { + TReal result; + TGregorianCalendar greg(aJulianDay); + TArithmeticalDate date; + + greg.GetDate(date); + + if(date.iYear < 1929) + { + result = 465.0 + (40.0 / 60.0); + } + else + { + result = 480.0; + } + return result; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseDateNextSolarLongitudeL +// Arguments: TReal , TReal +// +// Comments: calculates the first date on or after the given +// julian day when the solar longitude will be a +// multiple of aDegrees degrees. +// +// Return: TInt - see comment +//------------------------------------------------------ +TInt TChineseCalendar::ChineseDateNextSolarLongitude(TReal& aJulianDay, const TReal& aDegrees) const + { + TReal chTimeZone; + TReal chDateNxtSlrLong; + TInt rtn; + + AdjustJDToNoon(aJulianDay); + chTimeZone = ChineseTimeZone(aJulianDay); + + chDateNxtSlrLong = UniversalFromLocal(aJulianDay,chTimeZone); + chDateNxtSlrLong = DateNextSolarLongitude(chDateNxtSlrLong,aDegrees); + chDateNxtSlrLong = LocalFromUniversal(chDateNxtSlrLong,chTimeZone); + + AdjustJDFromNoon(chDateNxtSlrLong); + Floor(rtn,chDateNxtSlrLong); + + return rtn; + } + + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: MajorSolarTermOnOrAfter +// Arguments: TReal +// +// Comments: Determines the major solar term on or after +// the given julian day. +// +// Return: TReal - see comment +//------------------------------------------------------ +TReal TChineseCalendar::MajorSolarTermOnOrAfter(TReal& aJulianDay) const + { + TReal majorSolarTerm; + majorSolarTerm = ChineseDateNextSolarLongitude(aJulianDay,KDegreesPerMonth); + return majorSolarTerm; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: GetDate +// Arguments: TChineseDate & +// +// Comments: This function Determines the chinese date and +// places it in the TChineseDate class provided +// for the julian day value held internally in the +// Chinese class. +// +// Return: None +//------------------------------------------------------ +EXPORT_C void TChineseCalendar::GetDate(TChineseDate &aDate) + { + ChineseFromFixed(aDate,iJulianDay); + } + + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseNewMoonBefore +// Arguments: TReal +// +// Comments: corrects for chinese month starting at noon +// in Beijing +// +// Return: TInt - new moon +//------------------------------------------------------ +TInt TChineseCalendar::ChineseNewMoonBefore(TReal aJulianDay) const + { + TReal newMoon; + TReal timeZone; + TInt rtn; + + AdjustJDToNoon(aJulianDay); + + timeZone = ChineseTimeZone(aJulianDay); + newMoon = UniversalFromLocal(aJulianDay,timeZone); + newMoon = NewMoonBefore(newMoon); + newMoon = LocalFromUniversal(newMoon,timeZone); + + AdjustJDFromNoon(newMoon); + Floor(rtn,newMoon); + + return rtn; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseNewMoonOnOrAfter +// Arguments: TReal +// +// Comments: corrects for chinese month starting at noon +// in Beijing +// +// Return: TInt - new moon +//------------------------------------------------------ +TInt TChineseCalendar::ChineseNewMoonOnOrAfter(TReal aJulianDay) const + { + TReal newMoon; + TReal timeZone; + TInt rtn; + + AdjustJDToNoon(aJulianDay); + + timeZone = ChineseTimeZone(aJulianDay); + newMoon = UniversalFromLocal(aJulianDay,timeZone); + newMoon = NewMoonAtOrAfter(newMoon); + newMoon = LocalFromUniversal(newMoon,timeZone); + + AdjustJDFromNoon(newMoon); + Floor(rtn,newMoon); + + return rtn; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: NoMajorSolarTerm +// Arguments: TReal +// +// Comments: Determines whether a given month lacks a +// major solar term. The first month without +// a major solar term is a leap month. +// +// Return: TBool - ETrue if month has no major solar term +//------------------------------------------------------ +TBool TChineseCalendar::NoMajorSolarTerm(TReal aJulianDay) const + { + TReal chinNewMoon; + TReal currentMajSolTrm1; + TReal currentMajSolTrm2; + + chinNewMoon = ChineseNewMoonOnOrAfter(aJulianDay + KCalConvDayOffsetByOne); + currentMajSolTrm1 = CurrentMajorSolarTerm(chinNewMoon); + currentMajSolTrm2 = CurrentMajorSolarTerm(aJulianDay); + + return(currentMajSolTrm1 == currentMajSolTrm2); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: PriorLeapMonth +// Arguments: TReal , TReal +// +// Comments: this function is used in conjunction with +// NoMajorSolarTerm() to ensure that only the +// first month missing a major solar term is +// a leap month +// +// Return: TBool - +//------------------------------------------------------ +TBool TChineseCalendar::PriorLeapMonth(TReal& aMnthprime, TReal aMnth) const + { + TBool rtn,majorSolarTerm; + TReal newMoonBefore; + + majorSolarTerm = NoMajorSolarTerm(aMnth); + newMoonBefore = ChineseNewMoonBefore(aMnth); + + if((aMnth >= aMnthprime) && + (PriorLeapMonth(aMnthprime,newMoonBefore) || majorSolarTerm)) + { + rtn = ETrue; + } + else + { + rtn = EFalse; + } + return rtn; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseNewYear +// Arguments: TInt +// +// Comments: Determines the chinese new year +// +// Return: TReal - Julian day of the start of the given year +//------------------------------------------------------ +TReal TChineseCalendar::ChineseNewYear(TInt aYear) const + { + TGregorianCalendar greg(iJulianDay); + TArithmeticalDate date; + TReal solarTerm1; + TReal solarTerm2; + TReal newMoon1; + TReal newMoon2; + TReal newMoon3; + TReal rtn; + TBool majorSolarTerm1; + TBool majorSolarTerm2; + TReal tempReal; + TInt tempInt; + + // get solar term 1 + date.iDay = KFifteenth; + date.iMonth = EDecember + KCalConvMonthOffsetByOne; + date.iYear = aYear - KCalConvYearOffsetByOne; + solarTerm1 = greg.GregToJulianDay(date); + solarTerm1 = MajorSolarTermOnOrAfter(solarTerm1); + + // get solar term 2 + date.iDay = KFifteenth; + date.iMonth = EDecember + KCalConvMonthOffsetByOne; + date.iYear = aYear; + solarTerm2 = greg.GregToJulianDay(date); + solarTerm2 = MajorSolarTermOnOrAfter(solarTerm2); + + // get new moon 1 + newMoon1 = ChineseNewMoonOnOrAfter(solarTerm1 + KCalConvDayOffsetByOne); + + // get new moon 2 + newMoon2 = ChineseNewMoonOnOrAfter(newMoon1 + KCalConvDayOffsetByOne); + + // get new moon 3 + newMoon3 = ChineseNewMoonBefore(solarTerm2 + KCalConvDayOffsetByOne); + + // perform chinese new year calculation + tempReal = (newMoon3 - newMoon1) / KMeanSynodicMonth; + Round(tempInt,tempReal); + majorSolarTerm1 = NoMajorSolarTerm(newMoon1); + majorSolarTerm2 = NoMajorSolarTerm(newMoon2); + if((tempInt == KMonthsInYear) && (majorSolarTerm1 || majorSolarTerm2)) + { + rtn = ChineseNewMoonOnOrAfter(newMoon2 + KCalConvDayOffsetByOne); + } + else + { + rtn = newMoon2; + } + return rtn; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: SetDate +// Arguments: TChineseDate& +// +// Comments: this function sets the julian day value +// in the base class from the given +// TChineseDate +// +// Return: None +//------------------------------------------------------ +EXPORT_C TInt TChineseCalendar::SetDate(const TChineseDate &aDate) + { + TReal jD; + TChineseDate ChinDate = aDate; + if(ValidDate(ChinDate)==EFalse) + { + return KCalConInvalidDate; + } + + ChineseToFixed(aDate,jD); + iJulianDay = jD; + return KErrNone; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseFromFixed +// Arguments: TChineseDate &, TReal +// +// Comments: this function converts a julian day value to +// a chinese date in the form TChineseDate +// +// Return: None +//------------------------------------------------------ +void TChineseCalendar::ChineseFromFixed(TChineseDate &aDate, const TReal& aJulianDay) const + { + TGregorianCalendar greg(aJulianDay); + TArithmeticalDate date; + TReal solarTerm1; + TReal solarTerm2; + TReal lunarTerm1; + TReal lunarTerm2; + TReal lunarTerm3; + TInt leapYear; + TInt year; + TInt elapsedYears; + TBool majorSolarTerm; + TReal tempReal; + TInt tempInt; + + // get the Gregorian date + greg.GetDate(date); + year = date.iYear; + + // get solar term 1 + date.iDay = KFifteenth; + date.iMonth = EDecember + KCalConvMonthOffsetByOne; + date.iYear = year - KCalConvYearOffsetByOne; + solarTerm1 = greg.GregToJulianDay(date); + solarTerm1 = MajorSolarTermOnOrAfter(solarTerm1); + + // get solar term 2 + date.iDay = KFifteenth; + date.iMonth = EDecember + KCalConvMonthOffsetByOne; + date.iYear = year; + solarTerm2 = greg.GregToJulianDay(date); + solarTerm2 = MajorSolarTermOnOrAfter(solarTerm2); + + // get lunar term 1 + if((solarTerm1 <= aJulianDay) && (aJulianDay < solarTerm2)) + { + lunarTerm1 = solarTerm1 + KCalConvDayOffsetByOne; + } + else + { + lunarTerm1 = solarTerm2 + KCalConvDayOffsetByOne; + } + lunarTerm1 = ChineseNewMoonOnOrAfter(lunarTerm1); + + // get lunar term 2 + if((solarTerm1 <= aJulianDay) && (aJulianDay < solarTerm2)) + { + lunarTerm2 = solarTerm2 + KCalConvDayOffsetByOne; + } + else + { + date.iDay = KFifteenth; + date.iMonth = EDecember + KCalConvMonthOffsetByOne; + date.iYear = year + KCalConvYearOffsetByOne; + lunarTerm2 = greg.GregToJulianDay(date); + lunarTerm2 = MajorSolarTermOnOrAfter(lunarTerm2) + KCalConvDayOffsetByOne; + } + lunarTerm2 = ChineseNewMoonBefore(lunarTerm2); + + // get Lunar term 3 + lunarTerm3 = aJulianDay + KCalConvDayOffsetByOne; + lunarTerm3 = ChineseNewMoonBefore(lunarTerm3); + + // get leap year + tempReal = ((lunarTerm2 - lunarTerm1) / KMeanSynodicMonth); + Round(tempInt,tempReal); + if(tempInt == KMonthsInYear) + { + leapYear = ETrue; + } + else + { + leapYear = EFalse; + } + + // get month + tempReal = ((lunarTerm3 - lunarTerm1) / KMeanSynodicMonth); + Round(tempInt,tempReal); + if(leapYear && PriorLeapMonth(lunarTerm1,lunarTerm3)) + { + tempInt--; + } + Amod(tempReal,tempInt,KMonthsInYear); + Round(aDate.iMonth,tempReal); + + // get leap month + majorSolarTerm = NoMajorSolarTerm(lunarTerm3); + if((leapYear) && majorSolarTerm && (!PriorLeapMonth(lunarTerm1,ChineseNewMoonBefore(lunarTerm3)))) + { + aDate.iLeapMonth = ETrue; + } + else + { + aDate.iLeapMonth = EFalse; + } + + // get elapsed years + elapsedYears = year - KFirstChinYear; + + date.iDay = KCalConvFirstDay; + date.iMonth = EJuly + KCalConvMonthOffsetByOne; + date.iYear = year; + tempReal = greg.GregToJulianDay(date); + if((aDate.iMonth < (ENovember + KCalConvMonthOffsetByOne)) || (aJulianDay > tempReal)) + { + elapsedYears++; + } + + // get cycle + tempReal = (elapsedYears - KCalConvYearOffsetByOne) / KYearsInChinCycle; + Floor(aDate.iCycle,tempReal); + aDate.iCycle++; + + // get year + Amod(tempReal,elapsedYears,KYearsInChinCycle); + Round(aDate.iYear,tempReal); + + // get day + Floor(tempInt,aJulianDay); + aDate.iDay = tempInt; + Floor(tempInt,lunarTerm3); + aDate.iDay -= tempInt; + aDate.iDay += KCalConvDayOffsetByOne; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ValidDate +// Arguments: TChineseDate & +// +// Comments: This function Determines whether the given +// date is a valid chinese date +// +// Return: TBool - ETrue if date is valid, else EFalse +//------------------------------------------------------ +TBool TChineseCalendar::ValidDate(const TChineseDate &aDate) const + { + TReal jD; + TChineseDate chinDate; + + ChineseToFixed(aDate,jD); + ChineseFromFixed(chinDate,jD); + + if(aDate.operator==(chinDate)) + return ETrue; + else + return EFalse; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseToDateTime +// Arguments: TDateTime & +// +// Comments: This function converts the date held within +// the TChineseCalendar class to a TDateTime format and +// places it in the TDateTime class provided. +// +// Return: void +//------------------------------------------------------ +EXPORT_C void TChineseCalendar::ChineseToDateTime(TDateTime &aDT) + { + TArithmeticalDate gregDate; + TGregorianCalendar greg(iJulianDay); + + greg.GregFromJulianDay(gregDate,iJulianDay); + + aDT.SetMicroSecond(0); + aDT.SetSecond(0); + aDT.SetMinute(0); + aDT.SetHour(0); + aDT.SetMonth((TMonth)(gregDate.iMonth - KCalConvMonthOffsetByOne)); + aDT.SetDay(gregDate.iDay - KCalConvMonthOffsetByOne); + aDT.SetYear(gregDate.iYear); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: DateTimeToChinese +// Arguments: TDateTime & +// +// Comments: Sets the date held in the given TDateTime +// class to the TChineseCalendar class +// +// Return: void +//------------------------------------------------------ +EXPORT_C void TChineseCalendar::DateTimeToChinese(const TDateTime &aDT) + { + TArithmeticalDate gregDate; + TGregorianCalendar greg; + + gregDate.iDay = aDT.Day() + KCalConvMonthOffsetByOne; + gregDate.iMonth = (TInt)aDT.Month() + KCalConvMonthOffsetByOne; + gregDate.iYear = aDT.Year(); + + iJulianDay = greg.GregToJulianDay(gregDate); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseToFixed +// Arguments: TChineseDate , TReal & +// +// Comments: This function converts a chinese date to +// to a julian day value. +// +// Return: void +//------------------------------------------------------ +void TChineseCalendar::ChineseToFixed(const TChineseDate& aDate, TReal &aJulianDay) const + { + TInt year; + TReal newYear; + TReal pi; + TReal priorNewMoon; + TReal yearReal; + TChineseDate chinDate; + + // get year + yearReal = (aDate.iCycle - KCycleOffset) * KYearsInChinCycle; + Floor(year,yearReal); + year += aDate.iYear - KCalConvYearOffsetByOne; + year += KFirstChinYear; + + // get new year + newYear = ChineseNewYear(year); + + // get papa + pi = ChineseNewMoonOnOrAfter(newYear + ((aDate.iMonth - KCalConvMonthOffsetByOne) * 29)); + + // get delta + ChineseFromFixed(chinDate,pi); + + // get priorNewMoon + if((aDate.iMonth == chinDate.iMonth) && (aDate.iLeapMonth == chinDate.iLeapMonth)) + { + priorNewMoon = pi; + } + else + { + priorNewMoon = ChineseNewMoonOnOrAfter(pi + KCalConvDayOffsetByOne); + } + + aJulianDay = priorNewMoon + aDate.iDay - KCalConvDayOffsetByOne; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/ChineseDate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/ChineseDate.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,76 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TChineseDate class. +// +// + +// User includes +#include "calconv.h" + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TChineseDate +// Function: TChineseDate +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +EXPORT_C TChineseDate::TChineseDate() + { + } + + +//------------------------------------------------------ +// Class: TChineseDate +// Function: operator== +// Arguments: const TChineseDate & +// +// Comments: overloaded == operator +// +// Return: TBool - ETrue if the TChineseDate classes +// are the same +//------------------------------------------------------ +EXPORT_C TBool TChineseDate::operator==(const TChineseDate &aDate) const + { + TBool rtn = ETrue; + + if(iCycle != aDate.iCycle) + { + rtn = EFalse; + } + if(iYear != aDate.iYear) + { + rtn = EFalse; + } + if(iMonth != aDate.iMonth) + { + rtn = EFalse; + } + if(iLeapMonth != aDate.iLeapMonth) + { + rtn = EFalse; + } + if(iDay != aDate.iDay) + { + rtn = EFalse; + } + + return rtn; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originalsrc/Gregorian.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originalsrc/Gregorian.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,445 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TGregorianCalendar class. +// +// + +// System includes +#include +#include + +// User includes +#include "calconv.h" + +// Constants +const TReal KFourYears = 4.0; +const TReal KFourHundredYears = 400; +const TReal KOneHundredYears = 100; +const TReal KGregStartEpoch = 1721424.5; +// +const TInt KDayOffsetByZero = 0; +const TInt KGregDaysInNormYear = 365; +const TInt KDaysIn400Years = 146097; +const TInt KDaysIn100Years = 36524; +const TInt KDaysIn4Years = 1461; +const TInt KGregCycle = 12; +const TInt KGregLeaps = 7; +const TInt KGregOffset = 11; +const TInt KGregStdMonth = 30; +const TInt KLastDayInDecember = 31; + + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: TGregorianCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +EXPORT_C TGregorianCalendar::TGregorianCalendar() + { + InitMembers(); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: TGregorianCalendar +// Arguments: TReal +// +// Comments: Overloaded Constructor +// +// Return: None +//------------------------------------------------------ +EXPORT_C TGregorianCalendar::TGregorianCalendar(TReal aJD) + { + iJulianDay = aJD; + InitMembers(); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: InitMembers +// Arguments: None +// +// Comments: This function initialises the member variables +// or the class. It is called in the constructors +// +// Return: +//------------------------------------------------------ +void TGregorianCalendar::InitMembers() + { + iStartEpoch = KGregStartEpoch + KCalConvPointFive; + Floor(iDaysInNormYear,KGregDaysInNormYear); + iCycle = KGregCycle; + iLeaps = KGregLeaps; + iOffset = KGregOffset; + iStdYearMonth = KGregStdMonth; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: IsLeapYear +// Arguments: const TInt +// +// Comments: Determines whether the given year is a leap year. +// +// Return: ETrue if leap year, else EFalse +//------------------------------------------------------ +TBool TGregorianCalendar::IsLeapYear(const TInt aYear)const + { + TReal result; + TBool rtn = EFalse; + + Mod(result,aYear,KFourYears); + + if (!result) + { + rtn = ETrue; + } + + Mod(result,aYear,KOneHundredYears); + + if (!result) + { + Mod(result,aYear,KFourHundredYears); + + if (result) + { + rtn = EFalse; + } + } + return rtn; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregToJulianDay +// Arguments: const TArithmeticalDate& +// +// Comments: converts gregorian date to Julian day value +// +// Return: Julian day value for the given Gregorian date +//------------------------------------------------------ +TReal TGregorianCalendar::GregToJulianDay(const TArithmeticalDate& aDate) const + { + TReal result; + TReal tempReal; + TInt tempInt; + + // days to the start of the year based on normal years + result = iStartEpoch + (iDaysInNormYear * (aDate.iYear - 1)); + + // leap year corrections + tempReal = (aDate.iYear - 1) / KFourYears; + Floor(tempInt,tempReal); + result += tempInt; + + tempReal = (aDate.iYear - 1) / KOneHundredYears; + Floor(tempInt,tempReal); + result -= tempInt; + + tempReal = (aDate.iYear - 1) / KFourHundredYears; + Floor(tempInt,tempReal); + result += tempInt; + + // days in whole months in the year in question - approx + // based on Feb having 30 days + tempInt = DaysMonthsElapsed(aDate.iMonth); + result += tempInt; + + // correction for assumption that Feb has 30 days + if (aDate.iMonth <= (EFebruary + 1)) + result += KDayOffsetByZero; + else if (aDate.iMonth > (EFebruary + 1) && IsLeapYear(aDate.iYear)) + result -= 1; + else + result -= 2; + + // days in month in question + result += aDate.iDay; + + return result; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: SetDate +// Arguments: const TArithmeticalDate& +// +// Comments: This function checks that the give date is +// valid and then assigns the corresponding +// Julian day value to the class +// +// Return: None +//------------------------------------------------------ +EXPORT_C TInt TGregorianCalendar::SetDate(TArithmeticalDate& aGregDate) + { + if (ValidDate(aGregDate)==EFalse) + { + return KCalConInvalidDate; + } + iJulianDay = GregToJulianDay(aGregDate); + return KErrNone; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: ValidDate +// Arguments: const TArithmeticalDate& +// +// Comments: this function Determines that the date given +// is of the correct format for the gregorian +// calendar. +// +// Return: TBool - KSuccess if valid date, else KFail +//------------------------------------------------------ +TBool TGregorianCalendar::ValidDate(const TArithmeticalDate& aDate)const + { + + TReal jD; + TArithmeticalDate gregDate; + + jD = GregToJulianDay(aDate); + GregFromJulianDay(gregDate,jD); + + if (aDate.operator==(gregDate)) + return ETrue; + else + return EFalse; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GetDate +// Arguments: TArithmeticalDate& +// +// Comments: Calculates the gregorian date from the +// Julian day value. +// +// Return: None +//------------------------------------------------------ +EXPORT_C void TGregorianCalendar::GetDate(TArithmeticalDate& aDate) + { + GregFromJulianDay(aDate,iJulianDay); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: DateTimeToGregorian +// Arguments: TDateTime& +// +// Comments: This function converts a TDateTime class to +// the TGregorianCalendar class +// +// Return: void +//------------------------------------------------------ +EXPORT_C void TGregorianCalendar::DateTimeToGregorian(TDateTime& aDT) + { + TArithmeticalDate gregDate; + + gregDate.iDay = aDT.Day() + 1; + gregDate.iMonth = (TInt)aDT.Month() + 1; + gregDate.iYear = aDT.Year(); + + iJulianDay = GregToJulianDay(gregDate); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregorianToDateTime +// Arguments: TDateTime& +// +// Comments: This gets the date from the TGregorianCalendar class +// and places in the the given TDateTime class +// +// Return: void +//------------------------------------------------------ +EXPORT_C void TGregorianCalendar::GregorianToDateTime(TDateTime& aDT) + { + TArithmeticalDate gregDate; + + GregFromJulianDay(gregDate,iJulianDay); + + aDT.SetMicroSecond(0); + aDT.SetSecond(0); + aDT.SetMinute(0); + aDT.SetHour(0); + aDT.SetMonth((TMonth)(gregDate.iMonth - 1)); + aDT.SetDay(gregDate.iDay - 1); + aDT.SetYear(gregDate.iYear); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: CalcGregYear +// Arguments: TArithmeticalDate& +// +// Comments: Calculates the gregorian year from Julian +// day value. +// +// Return: None +//------------------------------------------------------ +void TGregorianCalendar::CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay)const + { + TReal d0; + TReal d1; + TReal d2; + TReal d3; + TReal year; + TInt n400; + TInt n100; + TInt n4; + TInt n1; + TInt32 yearInt32; + + // determine year + // get to start of calendar ie year 1 + d0 = aJulianDay - iStartEpoch - 1; + + Mod(d1,d0,KDaysIn400Years); + + Mod(d2,d1,KDaysIn100Years); + + Mod(d3,d2,KDaysIn4Years); + + // number of 400 year blocks + d0 /= KDaysIn400Years; + Floor(n400,d0); + + // number of 100 year blocks + d1 /= KDaysIn100Years; + Floor(n100,d1); + + // number of 4 year blocks + d2 /= KDaysIn4Years; + Floor(n4,d2); + + // number of 1 year blocks + d3 /= KGregDaysInNormYear; + Floor(n1,d3); + + // calc year + year = (KFourHundredYears * n400) + (KOneHundredYears * n100) + (KFourYears * n4) + n1; + Math::Int(yearInt32,year); + + if ((n100 == (KFourHundredYears / KOneHundredYears)) || (n1 == KFourYears)) + { + aDate.iYear = yearInt32; + } + else + { + aDate.iYear = yearInt32 + 1; + } + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregDateDiff +// Arguments: const TArithmeticalDate, const TArithmeticalDate +// +// Comments: This function Determines the difference in days +// between two gregorian dates. +// +// Return: Days difference +//------------------------------------------------------ +TInt TGregorianCalendar::GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2)const + { + TInt diff; + TReal diffReal; + diffReal = GregToJulianDay(aDate2) - GregToJulianDay(aDate1); + Floor(diff,diffReal); + return diff; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: DayNumber +// Arguments: const TArithmeticalDate& +// +// Comments: this function returns the number of days that +// have elapsed in the given year +// +// Return: see comment +//------------------------------------------------------ +TInt TGregorianCalendar::DayNumber(const TArithmeticalDate& aDate)const + { + TArithmeticalDate tempDate; + TInt dayNum; + + tempDate.iDay = KLastDayInDecember; + tempDate.iMonth = EDecember + 1; + tempDate.iYear = aDate.iYear - 1; + + dayNum = GregDateDiff(tempDate,aDate); + + return dayNum; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregFromJulianDay +// Arguments: TArithmeticalDate& , TReal +// +// Comments: This function converts a gregorian date to +// a julian day +// +// Return: void +//------------------------------------------------------ +void TGregorianCalendar::GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay)const + { + TReal priorDays; + TReal correction; + TReal day; + TReal month; + TInt32 dayInt32; + TInt32 monthInt32; + + CalcGregYear(aDate,aJulianDay); + + aDate.iDay = 1; + aDate.iMonth = EJanuary + 1; + + priorDays = aJulianDay - GregToJulianDay(aDate); + + aDate.iMonth = EMarch + 1; + + if (aJulianDay < GregToJulianDay(aDate)) + { + correction = KDayOffsetByZero; + } + else if ((aJulianDay >= GregToJulianDay(aDate)) && IsLeapYear(aDate.iYear)) + { + correction = 1; + } + else + { + correction = 2; + } + + month = priorDays + correction; + Math::Int(monthInt32,month); + monthInt32 = DayMonthInYear(monthInt32); + aDate.iMonth = monthInt32; + + day = aJulianDay - GregToJulianDay(aDate) + 1; + Math::Int(dayInt32,day); + aDate.iDay = dayInt32; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,440 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "ConvertDates.h" + +// Constants +const TInt KFirstYear = 0; +const TInt KFromOffset = 0; +const TInt KToOffset = 5; +const TInt KCycleOffset = 10; +const TInt KYearOffset = 13; +const TInt KMnthOffset = 19; +const TInt KLeapMonthOffset = 22; +const TInt KDyOffset = 24; +const TInt KCycleLen = 2; +const TInt KSignLen = 1; +const TInt KYearLen = 5; +const TInt KMonthLen = 2; +//const TInt KLeapMonthLen = 1; +const TInt KDayLen = 2; +// +_LIT(KRoot, "C:\\"); +_LIT(KSpace, " "); +_LIT(KResult, " Result "); +_LIT(KTestHeader, "Test Results"); +_LIT(KCalconLogFileDirectory, "calcon"); +_LIT(KCalconLogFile, "c:\\calcon\\calcon.txt"); +_LIT(KInputFile, "c:\\input.txt"); +_LIT(KOutputFile, "c:\\output.txt"); +_LIT8(KImcvCRLF, "\r\n"); + + + +// +// Construction/Destruction +// + +CConvertDates::~CConvertDates() + { + iInputFile.Close(); + iOutputFile.Close(); + iRFSession.Close(); + } + +CConvertDates* CConvertDates::NewL() + { + CConvertDates* self = CConvertDates::NewLC(); + CleanupStack::Pop(); + return self; + } + +CConvertDates* CConvertDates::NewLC() + { + CConvertDates* self = new(ELeave) CConvertDates; + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CConvertDates::ConstructL() + { + // constructors, public member data, static casts + TGregorianCalendar gregorianCalendar; + TChineseCalendar chineseCalendar; + TArithmeticalDate date; + date.iYear=2001; + date.iMonth=1; + date.iDay=24; // 24th January 2001 + gregorianCalendar.SetDate(date); + static_cast(chineseCalendar)=gregorianCalendar; + TChineseDate chineseDate; + chineseCalendar.GetDate(chineseDate); // cycle=78, Year=18, Month=1, Day=1 (New Year's day) + + + User::LeaveIfError(iRFSession.Connect()); + iRFSession.SetSessionPath(KRoot); + + if (iLogger.LogValid()) + iLogger.CloseLog(); + TParse p; + p.Set(KCalconLogFile, NULL, NULL); + iLogger.Connect(); + iLogger.CreateLog(KCalconLogFileDirectory, p.NameAndExt(), EFileLoggingModeOverwrite); + iLogger.SetDateAndTime(EFalse, EFalse); + iLogger.Write(KTestHeader); + } + +void CConvertDates::ConvertL() + { + TBuf8<100> logLine; + TBuf<64> errBuf; + // open the input and output files + OpenFilesL(); + + TInt fileErr = KErrNone; + while(fileErr == KErrNone) + { + // read date from the input file + fileErr = ReadLine(); + if (fileErr==KErrNone) + { + // get the cal types to convert from and to + TRAPD(err,GetCalL(iDateLine)); + if (err) + { + errBuf.Format(_L("\r\nError get calendar conversion type %d\r\n"),err); + iLogger.Write(errBuf); + } + else + { + // do the conversion + Cal1ToCal2(); + + // set the cal types to convert from and to + logLine.Zero(); + TRAP(err,SetCalL(logLine)); + if (err) + { + errBuf.Format(_L("\r\nError set calendar conversion type %d\r\n"),err); + iDateLine.Append(errBuf); + } + else + { + iDateLine.Append(logLine); + iDateLine.Append(_L8("\r\n")); + iLogger.Write(iDateLine); + if (iOutputFile.Write(iDateLine)) + { + User::Leave(KErrCorrupt); + } + } + } + } + } + } + +void CConvertDates::OpenFilesL() + { + User::LeaveIfError(iInputFile.Open(iRFSession, KInputFile, EFileStreamText|EFileRead|EFileShareExclusive)); + User::LeaveIfError(iOutputFile.Replace(iRFSession, KOutputFile, EFileStreamText|EFileWrite|EFileShareExclusive)); + } + +void CConvertDates::GetCalL(TDes8& aDateToConvert) + { + TInt dateError; + TDateTime dt(0,EJanuary,0,0,0,0,0); + TLex8 lexCycle(aDateToConvert.Mid(KCycleOffset,KCycleLen)); + TLex8 lexYear(aDateToConvert.Mid(KYearOffset,KYearLen)); + TLex8 lexMonth(aDateToConvert.Mid(KMnthOffset,KMonthLen)); +// TLex8 lexLeapMonth(aDateToConvert.Mid(KLeapMonthOffset,KLeapMonthLen)); + TLex8 lexDay(aDateToConvert.Mid(KDyOffset,KDayLen)); + + // get cycle + if (lexCycle.Val(iChinDateOut.iCycle) != KErrNone) + { + User::Leave(KErrCorrupt); + } + // get year + if (lexYear.Val(iArithDateOut.iYear) != KErrNone) + { + User::Leave(KErrGeneral); + } + iChinDateOut.iYear = iArithDateOut.iYear; + // get month + if (lexMonth.Val(iArithDateOut.iMonth) != KErrNone) + { + User::Leave(KErrGeneral); + } + iChinDateOut.iMonth = iArithDateOut.iMonth; + // get leap month + if (aDateToConvert[KLeapMonthOffset] == 't') + { + iChinDateOut.iLeapMonth = ETrue; + } + else + { + iChinDateOut.iLeapMonth = EFalse; + } + // get day + if (lexDay.Val(iArithDateOut.iDay) != KErrNone) + { + User::Leave(KErrCorrupt); + } + iChinDateOut.iDay = iArithDateOut.iDay; + + + switch(aDateToConvert[KFromOffset]) + { + case 'g': + iCalTypeFrom = EGreg; + dateError = iGreg.SetDate(iArithDateOut); + iGreg.GregorianToDateTime(dt); + iGreg.DateTimeToGregorian(dt); + break; + case 'c': + iCalTypeFrom = EChin; + dateError = iChin.SetDate(iChinDateOut); + iChin.ChineseToDateTime(dt); + iChin.DateTimeToChinese(dt); + break; + default: + dateError = KErrCorrupt; + break; + } + + if (dateError) + User::Leave(dateError); + + switch(aDateToConvert[KToOffset]) + { + case 'g': + iCalTypeTo = EGreg; + break; + case 'c': + iCalTypeTo = EChin; + break; + default: + break; + } + } + +void CConvertDates::Cal1ToCal2() const + { + switch(iCalTypeFrom) + { + case EGreg: + { + switch(iCalTypeTo) + { + case EChin: + (TCalendar&)(iChin) = (TCalendar&)(iGreg); + break; + default: + break; + } + } + break; + case EChin: + { + switch(iCalTypeTo) + { + case EGreg: + (TCalendar&)(iGreg) = (TCalendar&)(iChin); + break; + default: + break; + } + } + break; + default: + break; + } + } + +void CConvertDates::SetCalL(TDes8& aConvertedDate) + { + TArithmeticalDate Date; + TChineseDate ChinDate; + TBuf8 TempDate; + + switch(iCalTypeFrom) + { + case EGreg: + { + switch(iCalTypeTo) + { + case EChin: + iChin.GetDate(ChinDate); + break; + default: + break; + } + } + break; + case EChin: + { + switch(iCalTypeTo) + { + case EGreg: + iGreg.GetDate(Date); + TempDate.Copy(_L("greg ")); + default: + break; + } + } + break; + default: + break; + } + + if (iCalTypeTo == EChin) + { + TBuf8<10> TempFormatStr; + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KCycleLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iCycle); + aConvertedDate.Append(KResult); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + TempDate.Format(_L8("+")); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iYear); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + if (ChinDate.iLeapMonth == EFalse) + { + TempDate.Format(_L8("f")); + } + else + { + TempDate.Format(_L8("t")); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iDay); + aConvertedDate.Append(TempDate); + } + else + { + TBuf8<10> TempFormatStr; + + if (Date.iYear >= KFirstYear) + { + TempDate.Format(_L8("+")); + } + else + { + TempDate.Format(_L8("-")); + } + aConvertedDate.Append(KResult); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + if (Date.iYear >= KFirstYear) + { + TempDate.Format(TempFormatStr,Date.iYear); + } + else + { + TempDate.Format(TempFormatStr,-Date.iYear); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iDay); + aConvertedDate.Append(TempDate); + } + } + +// +// Read line of test from file +// +TInt CConvertDates::ReadLine() + { + TInt err = KErrNone; + + // Read into the buffer + TBuf8<256> buffer; // Max read of the Read() function.. + iDateLine.Zero(); + + // Get the current file position + TInt filePos = 0; + iInputFile.Seek(ESeekCurrent, filePos); + + // Read the buffer + err = iInputFile.Read(buffer); + + //end of file? + TInt s = buffer.Length(); + if ( s == 0) + { + err = KErrEof; + } + + if (err == KErrNone) + { + // Copy to the lfcr and then set the file pointer + // to the point after that... + TInt pos = buffer.Find(KImcvCRLF); + if ( pos != -1) + { + iDateLine.Justify(buffer, pos, ELeft, ' '); + filePos += (pos+2); + + // Set the file pointer back to after the lfcr.. + iInputFile.Seek(ESeekStart, filePos); + } + // Else fill the whole buffer 256 chars.. + else + { + iDateLine.Copy(buffer); + } + } + return err; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,77 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CONVERTDATES_H__ +#define __CONVERTDATES_H__ + +// System includes +#include +#include +#include +#include +#include "calconv.h" + +// Constants +const TInt KDateLen = 60; + +// Enumerations +enum TCalTypes + { + EGreg, + EHebr, + EChin + }; + +// Classes +class CConvertDates : public CBase + { +public: + static CConvertDates* NewLC(); + static CConvertDates* NewL(); + ~CConvertDates(); + +private: + void ConstructL(); + +public: + void ConvertL(); + +private: + void Cal1ToCal2() const; + void GetCalL(TDes8& aDateToConvert); + void SetCalL(TDes8& aDate); + void OpenFilesL(); + TInt ReadLine(); + +private: + TCalTypes iCalTypeFrom; + TCalTypes iCalTypeTo; + TArithmeticalDate iArithDateOut; + TArithmeticalDate iArithDateIn; + TChineseDate iChinDateOut; + TChineseDate iChinDateIn; + TGregorianCalendar iGreg; + TChineseCalendar iChin; + + RFs iRFSession; + RFile iInputFile; + RFile iOutputFile; + + RFileLogger iLogger; + + TBuf8 iDateLine; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/Input_2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/Input_2.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,76 @@ +greg chin 00 +1898 01 f 01 +greg chin 00 +1899 12 f 31 +greg chin 00 +1900 01 f 10 +greg chin 00 +1910 02 f 15 +greg chin 00 +1920 03 f 20 +greg chin 00 +1924 02 f 29 +greg chin 00 +1970 01 f 01 +greg chin 00 +1971 02 f 02 +greg chin 00 +1972 03 f 03 +greg chin 00 +1973 04 f 04 +greg chin 00 +1974 05 f 05 +greg chin 00 +1975 06 f 06 +greg chin 00 +1976 07 f 07 +greg chin 00 +1977 08 f 08 +greg chin 00 +1978 09 f 09 +greg chin 00 +1979 10 f 10 +greg chin 00 +1980 11 f 11 +greg chin 00 +1981 12 f 12 +greg chin 00 +1982 01 f 13 +greg chin 00 +1982 02 f 28 +greg chin 00 +1982 03 f 01 +greg chin 00 +1999 12 f 31 +greg chin 00 +2000 01 f 01 +greg chin 00 +2000 02 f 29 +greg chin 00 +1998 01 f 28 +greg chin 00 +1998 02 f 28 +greg chin 00 +1998 03 f 30 +greg chin 00 +1998 04 f 29 +greg chin 00 +1998 05 f 30 +greg chin 00 +1998 06 f 28 +greg chin 00 +1998 07 f 28 +greg chin 00 +1998 08 f 28 +greg chin 00 +1998 09 f 28 +greg chin 00 +1998 10 f 28 +greg chin 00 +1998 11 f 28 +greg chin 00 +1998 12 f 29 +greg chin 00 +1999 01 f 28 +greg chin 00 +2043 02 f 10 +greg chin 00 +2044 01 f 29 +chin greg 76 +0034 12 f 09 +chin greg 76 +0036 11 f 29 +chin greg 76 +0036 12 f 10 +chin greg 76 +0047 01 f 06 +chin greg 76 +0057 02 f 01 +chin greg 77 +0001 01 f 25 +chin greg 77 +0046 11 f 24 +chin greg 77 +0048 01 f 07 +chin greg 77 +0049 01 f 18 +chin greg 77 +0050 03 f 02 +chin greg 77 +0051 04 f 14 +chin greg 77 +0052 04 f 27 +chin greg 77 +0053 06 f 11 +chin greg 77 +0054 06 f 24 +chin greg 77 +0055 08 f 07 +chin greg 77 +0056 08 f 20 +chin greg 77 +0057 10 f 04 +chin greg 77 +0058 11 f 17 +chin greg 77 +0058 12 f 19 +chin greg 77 +0059 02 f 05 +chin greg 77 +0059 02 f 06 +chin greg 78 +0016 11 f 24 +chin greg 78 +0016 11 f 25 +chin greg 78 +0017 01 f 25 +chin greg 78 +0015 01 f 01 +chin greg 78 +0015 02 f 02 +chin greg 78 +0015 03 f 03 +chin greg 78 +0015 04 f 04 +chin greg 78 +0015 05 f 05 +chin greg 78 +0015 05 t 05 +chin greg 78 +0015 06 f 06 +chin greg 78 +0015 08 f 08 +chin greg 78 +0015 09 f 09 +chin greg 78 +0015 10 f 10 +chin greg 78 +0015 11 f 11 +chin greg 78 +0060 01 f 01 +chin greg 78 +0060 12 f 30 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/TCCnMain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/TCCnMain.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,44 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include "ConvertDates.h" + +// Type definitions +#define UNUSED_VAR(a) a = a + +void mainL(); + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + CTrapCleanup* cleanupStack=CTrapCleanup::New(); + + TRAPD(error,mainL()); + UNUSED_VAR(error); //Used to supress build warnings + + delete cleanupStack; + __UHEAP_MARKEND; + return KErrNone; + } + +void mainL() + { + CConvertDates* ConvDates = CConvertDates::NewL(); + CleanupStack::PushL(ConvDates); + + ConvDates->ConvertL(); + CleanupStack::PopAndDestroy(); //delete ConvDates; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/TCCnoriginal.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/TCCnoriginal.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,27 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET tccnoriginal.exe +TARGETTYPE exe +CAPABILITY None +UID 0 +VENDORID 0x70000001 +APP_LAYER_SYSTEMINCLUDE_SYMBIAN +USERINCLUDE ../originalinc +SOURCEPATH ../originaltsrc +SOURCE TCCnMain.cpp ConvertDates.cpp +LIBRARY euser.lib cconoriginal.lib efsrv.lib flogger.lib + +SMPSAFE diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/originaltsrc/input.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/originaltsrc/input.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,66 @@ +greg chin 00 -0586 07 f 24 +greg chin 00 -0168 12 f 05 +greg chin 00 +0070 09 f 24 +greg chin 00 +0135 10 f 02 +greg chin 00 +0470 01 f 08 +greg chin 00 +0576 05 f 20 +greg chin 00 +0694 11 f 10 +greg chin 00 +1013 04 f 25 +greg chin 00 +1096 05 f 24 +greg chin 00 +1190 03 f 23 +greg chin 00 +1240 03 f 10 +greg chin 00 +1288 04 f 02 +greg chin 00 +1298 04 f 27 +greg chin 00 +1391 06 f 12 +greg chin 00 +1436 02 f 03 +greg chin 00 +1492 04 f 09 +greg chin 00 +1553 09 f 19 +greg chin 00 +1560 03 f 05 +greg chin 00 +1648 06 f 10 +greg chin 00 +1680 06 f 30 +greg chin 00 +1716 07 f 24 +greg chin 00 +1768 06 f 19 +greg chin 00 +1819 08 f 02 +greg chin 00 +1839 03 f 27 +greg chin 00 +1903 04 f 19 +greg chin 00 +1929 08 f 25 +greg chin 00 +1941 09 f 29 +greg chin 00 +1943 04 f 19 +greg chin 00 +1943 10 f 07 +greg chin 00 +1992 03 f 17 +greg chin 00 +1996 02 f 25 +greg chin 00 +2038 11 f 10 +greg chin 00 +2094 07 f 18 +chin greg 35 +0011 06 f 12 +chin greg 42 +0009 10 f 27 +chin greg 46 +0007 08 f 04 +chin greg 47 +0012 08 f 09 +chin greg 52 +0046 11 f 20 +chin greg 54 +0033 04 f 05 +chin greg 56 +0031 10 f 15 +chin greg 61 +0050 03 f 07 +chin greg 63 +0013 04 f 24 +chin greg 64 +0047 02 f 09 +chin greg 65 +0037 02 f 09 +chin greg 66 +0025 02 f 23 +chin greg 66 +0035 03 f 09 +chin greg 68 +0008 05 f 02 +chin greg 68 +0053 01 f 08 +chin greg 69 +0049 03 f 04 +chin greg 70 +0050 08 f 02 +chin greg 70 +0057 01 f 29 +chin greg 72 +0025 04 t 20 +chin greg 72 +0057 06 f 05 +chin greg 73 +0033 06 f 06 +chin greg 74 +0025 05 f 05 +chin greg 75 +0016 06 f 12 +chin greg 75 +0036 02 f 13 +chin greg 76 +0040 03 f 22 +chin greg 77 +0006 07 f 21 +chin greg 77 +0018 08 f 09 +chin greg 77 +0020 03 f 15 +chin greg 77 +0020 09 f 09 +chin greg 78 +0009 02 f 14 +chin greg 78 +0013 01 f 07 +chin greg 78 +0055 10 f 14 +chin greg 79 +0051 06 f 07 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/arithmeticaldate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/arithmeticaldate.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,29 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __ARITHMETICALDATE_H__ +#define __ARITHMETICALDATE_H__ + +#include + +class TArithmeticalDate + { +public: + TInt iDay; + TInt iMonth; + TInt iYear; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/calcondata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/calcondata.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,428 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +#include "chinesecalendar.h" + +const TUint16 TCalconData::iCalConDataMonth[]={ + 43856U, // 0 - 35 + 19304U, // 0 - 36 + 19168U, // 0 - 37 + 42352U, // 0 - 38 + 21096U, // 0 - 39 + 53856U, // 0 - 40 + 55632U, // 0 - 41 + 23208U, // 0 - 42 + 22176U, // 0 - 43 + 39632U, // 0 - 44 + 19176U, // 0 - 45 + 19168U, // 0 - 46 + 42200U, // 0 - 47 + 42192U, // 0 - 48 + 53840U, // 0 - 49 + 54568U, // 0 - 50 + 46400U, // 0 - 51 + 54944U, // 0 - 52 + 38608U, // 0 - 53 + 38320U, // 0 - 54 + 18872U, // 0 - 55 + 18800U, // 0 - 56 + 42160U, // 0 - 57 + 45656U, // 0 - 58 + 27216U, // 0 - 59 + 27968U, // 1 - 0 + 44456U, // 1 - 1 + 11104U, // 1 - 2 + 38256U, // 1 - 3 + 18808U, // 1 - 4 + 18800U, // 1 - 5 + 25776U, // 1 - 6 + 54432U, // 1 - 7 + 59984U, // 1 - 8 + 27976U, // 1 - 9 + 23248U, // 1 - 10 + 11104U, // 1 - 11 + 37744U, // 1 - 12 + 37600U, // 1 - 13 + 51560U, // 1 - 14 + 51536U, // 1 - 15 + 54432U, // 1 - 16 + 55888U, // 1 - 17 + 46416U, // 1 - 18 + 22176U, // 1 - 19 + 43736U, // 1 - 20 + 9680U, // 1 - 21 + 37584U, // 1 - 22 + 51544U, // 1 - 23 + 43344U, // 1 - 24 + 46248U, // 1 - 25 + 27808U, // 1 - 26 + 46416U, // 1 - 27 + 21928U, // 1 - 28 + 19872U, // 1 - 29 + 42416U, // 1 - 30 + 21176U, // 1 - 31 + 21168U, // 1 - 32 + 43344U, // 1 - 33 + 59728U, // 1 - 34 + 27296U, // 1 - 35 + 44368U, // 1 - 36 + 43856U, // 1 - 37 + 19296U, // 1 - 38 + 42352U, // 1 - 39 + 42352U, // 1 - 40 + 21088U, // 1 - 41 + 59696U, // 1 - 42 + 55632U, // 1 - 43 + 23208U, // 1 - 44 + 22176U, // 1 - 45 + 38608U, // 1 - 46 + 19176U, // 1 - 47 + 19152U, // 1 - 48 + 42192U, // 1 - 49 + 53864U, // 1 - 50 + 53840U, // 1 - 51 + 54568U, // 1 - 52 + 46400U, // 1 - 53 + 46752U, // 1 - 54 + 38608U, // 1 - 55 + 38320U, // 1 - 56 + 18864U, // 1 - 57 + 42168U, // 1 - 58 + 42160U, // 1 - 59 + 45656U, // 2 - 0 + 27216U, // 2 - 1 + 27968U, // 2 - 2 + 44448U, // 2 - 3 + 43872U, // 2 - 4 + 38256U, // 2 - 5 + 18808U, // 2 - 6 + 18800U, // 2 - 7 + 25776U, // 2 - 8 + 27216U, // 2 - 9 + 59984U, // 2 - 10 + 27432U, // 2 - 11 + 23232U, // 2 - 12 + 43872U, // 2 - 13 + 37736U, // 2 - 14 + 37600U, // 2 - 15 + 51552U, // 2 - 16 + 54440U, // 2 - 17 + 54432U, // 2 - 18 + 55888U, // 2 - 19 + 23208U, // 2 - 20 + 22176U, // 2 - 21 + 43736U, // 2 - 22 + 9680U, // 2 - 23 + 37584U, // 2 - 24 + 51544U, // 2 - 25 + 43344U, // 2 - 26 + 46240U, // 2 - 27 + 46416U, // 2 - 28 + 44368U, // 2 - 29 + 21928U, // 2 - 30 + 19360U, // 2 - 31 + 42416U, // 2 - 32 + 21176U, // 2 - 33 + 21168U, // 2 - 34 + 43312U, // 2 - 35 + 29864U, // 2 - 36 + 27296U, // 2 - 37 + 44368U, // 2 - 38 + 19880U, // 2 - 39 + 19296U, // 2 - 40 + 42352U, // 2 - 41 + 42208U, // 2 - 42 + 53856U, // 2 - 43 + 59696U, // 2 - 44 + 54576U, // 2 - 45 + 23200U, // 2 - 46 + 27472U, // 2 - 47 + 38608U, // 2 - 48 + 19176U, // 2 - 49 + 19152U, // 2 - 50 + 42192U, // 2 - 51 + 53848U, // 2 - 52 + 53840U, // 2 - 53 + 54560U, // 2 - 54 + 55968U, // 2 - 55 + 46496U, // 2 - 56 + 22224U, // 2 - 57 + 19160U, // 2 - 58 + 18864U, // 2 - 59 + 42168U, // 3 - 0 + 42160U, // 3 - 1 + 43600U, // 3 - 2 + 46376U, // 3 - 3 + 27936U, // 3 - 4 + 44448U, // 3 - 5 + 21936U, // 3 - 6 + 37744U, // 3 - 7 + 18808U, // 3 - 8 + 18800U, // 3 - 9 + 25776U, // 3 - 10 + 27216U, // 3 - 11 + 59984U, // 3 - 12 + 27296U, // 3 - 13 + 43872U, // 3 - 14 + 43744U, // 3 - 15 + 37600U, // 3 - 16 + 51568U, // 3 - 17 + 51552U, // 3 - 18 + 54440U, // 3 - 19 + 54432U, // 3 - 20 + 55888U, // 3 - 21 + 23208U, // 3 - 22 + 22176U, // 3 - 23 + 42704U, // 3 - 24 + 21224U, // 3 - 25 + 21200U, // 3 - 26 + 43352U, // 3 - 27 + 43344U, // 3 - 28 + 46240U, // 3 - 29 + 46416U, // 3 - 30 + 44368U, // 3 - 31 + 21920U, // 3 - 32 + 42448U, // 3 - 33 + 42416U, // 3 - 34 + 21168U, // 3 - 35 + 43320U, // 3 - 36 + 26928U, // 3 - 37 + 29336U, // 3 - 38 + 27296U, // 3 - 39 + 44368U, // 3 - 40 + 19880U, // 3 - 41 + 19296U, // 3 - 42 + 42352U, // 3 - 43 + 21104U, // 3 - 44 + 53600U, // 3 - 45 + 59696U, // 3 - 46 + 54560U, // 3 - 47 + 55968U, // 3 - 48 + 27472U, // 3 - 49 + 22224U, // 3 - 50 + 19168U, // 3 - 51 + 42216U, // 3 - 52 + 41680U, // 3 - 53 + 53584U, // 3 - 54 + 55592U, // 3 - 55 +}; +const TUint32 TCalconData::iCalConDataYear[]={ + 2414696UL, // 0 - 35 + 2418334155UL, // 0 - 36 + 2415435UL, // 0 - 37 + 2415789UL, // 0 - 38 + 1613028880UL, // 0 - 39 + 2416527UL, // 0 - 40 + 2416881UL, // 0 - 41 + 1344594516UL, // 0 - 42 + 2417620UL, // 0 - 43 + 2417974UL, // 0 - 44 + 807724697UL, // 0 - 45 + 2418713UL, // 0 - 46 + 1881467259UL, // 0 - 47 + 2419451UL, // 0 - 48 + 2419805UL, // 0 - 49 + 1613032895UL, // 0 - 50 + 2420543UL, // 0 - 51 + 2420897UL, // 0 - 52 + 807727620UL, // 0 - 53 + 2421636UL, // 0 - 54 + 2149905639UL, // 0 - 55 + 2422375UL, // 0 - 56 + 2422729UL, // 0 - 57 + 1613035819UL, // 0 - 58 + 2423467UL, // 0 - 59 + 2423821UL, // 1 - 0 + 1344601455UL, // 1 - 1 + 2424560UL, // 1 - 2 + 2424914UL, // 1 - 3 + 807731637UL, // 1 - 4 + 2425653UL, // 1 - 5 + 1881474199UL, // 1 - 6 + 2426390UL, // 1 - 7 + 2426744UL, // 1 - 8 + 1613039835UL, // 1 - 9 + 2427483UL, // 1 - 10 + 2427838UL, // 1 - 11 + 1076170016UL, // 1 - 12 + 2428576UL, // 1 - 13 + 2149912578UL, // 1 - 14 + 2429314UL, // 1 - 15 + 2429668UL, // 1 - 16 + 1881478214UL, // 1 - 17 + 2430406UL, // 1 - 18 + 2430761UL, // 1 - 19 + 1344608395UL, // 1 - 20 + 2431500UL, // 1 - 21 + 2431854UL, // 1 - 22 + 807738576UL, // 1 - 23 + 2432592UL, // 1 - 24 + 2149916594UL, // 1 - 25 + 2433330UL, // 1 - 26 + 2433684UL, // 1 - 27 + 1613046775UL, // 1 - 28 + 2434423UL, // 1 - 29 + 2434777UL, // 1 - 30 + 1076176956UL, // 1 - 31 + 2435516UL, // 1 - 32 + 2418354974UL, // 1 - 33 + 2436253UL, // 1 - 34 + 2436608UL, // 1 - 35 + 1881485154UL, // 1 - 36 + 2437346UL, // 1 - 37 + 2437701UL, // 1 - 38 + 1344615335UL, // 1 - 39 + 2438439UL, // 1 - 40 + 2438794UL, // 1 - 41 + 1076180971UL, // 1 - 42 + 2439531UL, // 1 - 43 + 2149923534UL, // 1 - 44 + 2440270UL, // 1 - 45 + 2440624UL, // 1 - 46 + 1613053715UL, // 1 - 47 + 2441363UL, // 1 - 48 + 2441717UL, // 1 - 49 + 1344619351UL, // 1 - 50 + 2442455UL, // 1 - 51 + 2418361913UL, // 1 - 52 + 2443193UL, // 1 - 53 + 2443547UL, // 1 - 54 + 1881492094UL, // 1 - 55 + 2444286UL, // 1 - 56 + 2444641UL, // 1 - 57 + 1344622275UL, // 1 - 58 + 2445379UL, // 1 - 59 + 2955235749UL, // 2 - 0 + 2446117UL, // 2 - 1 + 2446471UL, // 2 - 2 + 1881495017UL, // 2 - 3 + 2447209UL, // 2 - 4 + 2447564UL, // 2 - 5 + 1613060655UL, // 2 - 6 + 2448303UL, // 2 - 7 + 2448657UL, // 2 - 8 + 1076190835UL, // 2 - 9 + 2449394UL, // 2 - 10 + 2418368853UL, // 2 - 11 + 2450133UL, // 2 - 12 + 2450487UL, // 2 - 13 + 1613063578UL, // 2 - 14 + 2451226UL, // 2 - 15 + 2451580UL, // 2 - 16 + 1344629214UL, // 2 - 17 + 2452318UL, // 2 - 18 + 2452672UL, // 2 - 19 + 807759395UL, // 2 - 20 + 2453411UL, // 2 - 21 + 2149937413UL, // 2 - 22 + 2454150UL, // 2 - 23 + 2454504UL, // 2 - 24 + 1613067594UL, // 2 - 25 + 2455242UL, // 2 - 26 + 2455596UL, // 2 - 27 + 1344633230UL, // 2 - 28 + 2456334UL, // 2 - 29 + 2686811249UL, // 2 - 30 + 2457073UL, // 2 - 31 + 2457427UL, // 2 - 32 + 1881505974UL, // 2 - 33 + 2458166UL, // 2 - 34 + 2458520UL, // 2 - 35 + 1344636154UL, // 2 - 36 + 2459258UL, // 2 - 37 + 2459612UL, // 2 - 38 + 807766335UL, // 2 - 39 + 2460351UL, // 2 - 40 + 1881508897UL, // 2 - 41 + 2461089UL, // 2 - 42 + 2461443UL, // 2 - 43 + 1613074533UL, // 2 - 44 + 2462181UL, // 2 - 45 + 2462536UL, // 2 - 46 + 1076204714UL, // 2 - 47 + 2463274UL, // 2 - 48 + 3223689101UL, // 2 - 49 + 2464013UL, // 2 - 50 + 2464367UL, // 2 - 51 + 1881512913UL, // 2 - 52 + 2465105UL, // 2 - 53 + 2465459UL, // 2 - 54 + 1613078549UL, // 2 - 55 + 2466197UL, // 2 - 56 + 2466552UL, // 2 - 57 + 807773275UL, // 2 - 58 + 2467291UL, // 2 - 59 + 2149951293UL, // 3 - 0 + 2468029UL, // 3 - 1 + 2468383UL, // 3 - 2 + 1613081473UL, // 3 - 3 + 2469121UL, // 3 - 4 + 2469475UL, // 3 - 5 + 1076211654UL, // 3 - 6 + 2470214UL, // 3 - 7 + 2418389673UL, // 3 - 8 + 2470953UL, // 3 - 9 + 2471307UL, // 3 - 10 + 1881519853UL, // 3 - 11 + 2472044UL, // 3 - 12 + 2472399UL, // 3 - 13 + 1344650033UL, // 3 - 14 + 2473137UL, // 3 - 15 + 2473492UL, // 3 - 16 + 1076215670UL, // 3 - 17 + 2474230UL, // 3 - 18 + 2149958232UL, // 3 - 19 + 2474968UL, // 3 - 20 + 2475322UL, // 3 - 21 + 1613088413UL, // 3 - 22 + 2476061UL, // 3 - 23 + 2476415UL, // 3 - 24 + 1344654050UL, // 3 - 25 + 2477154UL, // 3 - 26 + 2418396612UL, // 3 - 27 + 2477892UL, // 3 - 28 + 2478246UL, // 3 - 29 + 1881526792UL, // 3 - 30 + 2478984UL, // 3 - 31 + 2479339UL, // 3 - 32 + 1344656973UL, // 3 - 33 + 2480077UL, // 3 - 34 + 2480432UL, // 3 - 35 + 1076222610UL, // 3 - 36 + 2481170UL, // 3 - 37 + 2149965172UL, // 3 - 38 + 2481908UL, // 3 - 39 + 2482262UL, // 3 - 40 + 1613095353UL, // 3 - 41 + 2483001UL, // 3 - 42 + 2483355UL, // 3 - 43 + 1344660990UL, // 3 - 44 + 2484093UL, // 3 - 45 + 2418403551UL, // 3 - 46 + 2484831UL, // 3 - 47 + 2485185UL, // 3 - 48 + 1881533732UL, // 3 - 49 + 2485924UL, // 3 - 50 + 2486279UL, // 3 - 51 + 1344663913UL, // 3 - 52 + 2487017UL, // 3 - 53 + 2487371UL, // 3 - 54 + 807794093UL, // 3 - 55 + 2488109UL, // 3 - 56 + 0xffffffff +}; + +//Took 260 seconds to create diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/calcondata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/calcondata.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,25 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +#include + +const TInt KFirstCycle=76;//1..n +const TInt KFirstJulianDate=2415021; +const TInt KLastJulianDate=2488434; +const TInt KFirstYear=36; //1..60 +const TInt KLastCycle=79;//1..n +const TInt KLastYear=57;//1..60 +const TInt KNumberOfYears=202; diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/calendar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/calendar.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,207 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TCalendar class. +// + +#include +#include +#include "calendar.h" + +// Constants +const TReal KRemainderApproxZero = 0.000000001; + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +//------------------------------------------------------ +// Class: TCalendar +// Function: TCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: none +//------------------------------------------------------ +TCalendar::TCalendar() + { + iJulianDay = 0; + } + + +//------------------------------------------------------ +// Class: TCalendar +// Function: operator = +// Arguments: TCalendar &TCal - the TCalendar +// class by referance. +// +// Comments: Copies the JulianDay value from one instance +// of TCalendar to an other. +// +// Return: *this +//------------------------------------------------------ +TCalendar& TCalendar::operator =(const TCalendar &TCal) + { + iJulianDay = TCal.iJulianDay; + return (*this); + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Floor +// Arguments: TReal& ,TReal& +// +// Comments: This function returns the floor value of the +// value given in the aNum argument as Determined by: +// +// the largest integer less than or equal to aNum +// +// Return: None +//------------------------------------------------------ +void TCalendar::Floor(TInt& aRes,const TReal& aNum) const + { + TReal tempReal; + TInt32 tempReal32; + TInt precision = 0; + + TReal wholeNoTemp; + Math::Frac(wholeNoTemp,aNum); + if(wholeNoTemp < 0) + { + wholeNoTemp = -wholeNoTemp; + } + + if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero)) + { + tempReal = aNum; + } + else + { + tempReal = aNum - KCalConvPointFive; + } + Math::Round(tempReal,tempReal,precision); + Math::Int(tempReal32,tempReal); + aRes = tempReal32; + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Ceiling +// Arguments: TReal& ,TReal& +// +// Comments: This function returns the ceiling value of the +// value given in the aNum argument as Determined by: +// +// the smallest integer less than or equal to aNum +// +// Return: None +//------------------------------------------------------ +void TCalendar::Ceiling(TInt& aRes,const TReal& aNum) const + { + TReal tempReal; + TInt32 tempReal32; + TInt precision = 0; + + TReal wholeNoTemp; + Math::Frac(wholeNoTemp,aNum); + if(wholeNoTemp < 0) + { + wholeNoTemp = -wholeNoTemp; + } + + if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero)) + { + tempReal = aNum; + } + else + { + tempReal = aNum + KCalConvPointFive; + } + Math::Round(tempReal,tempReal,precision); + Math::Int(tempReal32,tempReal); + aRes = tempReal32; + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Mod +// Arguments: TReal &, const TReal &, const TReal & +// +// Comments: return the mod of the aAbscissa / aDenominator +// quotient as Determined by: +// +// aAbscissa - aDenominator(floor(aAbscissa / aDenominator)) +// +// Return: None +//------------------------------------------------------ +void TCalendar::Mod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const + { + TReal quo; + TInt tempInt; + + quo = aAbscissa / aDenominator; + + Floor(tempInt,quo); + + aRes = aAbscissa - (aDenominator * tempInt); + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Amod +// Arguments: TReal &, const TReal &, const TReal & +// +// Comments: Determines the adjusted remainder +// +// Return: None +//------------------------------------------------------ +void TCalendar::Amod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const + { + Mod(aRes,aAbscissa,aDenominator); + + if(aRes == 0) + { + aRes = aDenominator; + } + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: Round +// Arguments: TInt &, TReal & +// +// Comments: rounds of the aNum argument +// +// Return: None +//------------------------------------------------------ +void TCalendar::Round(TInt &aRes, TReal &aNum) const + { + TReal temp; + temp = aNum + 0.5; + Floor(aRes,temp); + } + +//------------------------------------------------------ +// Class: TCalendar +// Function: JulianDay +// Arguments: None +// +// Comments: Returns the Julian day as a TInt +// +// Return: TInt +//------------------------------------------------------ +TInt TCalendar::JulianDay() + { + return (TInt)iJulianDay; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/calendar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/calendar.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,52 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALENDAR_H__ +#define __CALENDAR_H__ + +// System includes +#include +#include + +// Constants +const TInt KCalConvDayOffsetByOne = 1; +const TInt KCalConvMonthOffsetByOne = 1; +const TInt KCalConvYearOffsetByOne = 1; +const TReal KCalConvPointFive = 0.5; + +class TCalendar + { +public: + TCalendar(); + TCalendar& operator=(const TCalendar& aTCal); + TInt JulianDay(); + +protected: + void Round(TInt& aRes, TReal& aNum) const; + void Mod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const; + void Amod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const; + void Floor(TInt& aRes, const TReal& aNum) const; + void Ceiling(TInt& aRes, const TReal& aNum) const; + +protected: + TReal iStartEpoch; + TInt iDaysInNormYear; + TReal iJulianDay; + TInt iCycle; + TInt iLeaps; + TInt iOffset; + TInt iStdYearMonth; + }; +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/cconplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/cconplugin.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,29 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include "chinesecalendarconverterimpl.h" + +// Export the implementation collection function +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(0x1028702D, CChineseCalendarConverterImpl::NewL) + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + return ImplementationTable; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,368 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TChineseCalendar class. +// + +#include "chinesecalendar.h" +#include "arithmeticaldate.h" +#include "gregoriancalendar.h" + +#if defined(_DEBUG) +_LIT(KCalconPanic,"Calcon"); +#endif + +const TUint KMonthInvalid=0; +const TUint K29DayMonth=1; +const TUint K30DayMonth=2; +const TUint K29DayLeapMonth=3; +const TUint K30DayLeapMonth=4; + +const TUint KMonthMask=1<<15; +const TUint KLeapMonthShift=28; + +const TInt KNoOfYearsInCycle = 60; + +enum TCalconPanic + { + ECalconChineseFromFixedMonthInvalid=0, + ECalconChineseToFixedLeapYearInvalid, + ECalconGetDataYearOutOfRange, + ECalconGetDataMonthOutOfRange, + ECalconGetNewYearYearOutOfRange + }; + +TUint TCalconData::GetData(TInt aCycle, TInt aYear, TInt aMonth) const + { + __ASSERT_DEBUG((aYear>=0 && aYear<=59), User::Panic(_L("Calcon"), ECalconGetDataYearOutOfRange)); //year range is 0..59 + __ASSERT_DEBUG((aMonth>=0 && aMonth<=12), User::Panic(_L("Calcon"), ECalconGetDataMonthOutOfRange));//month range is 0..12 + + TInt y=(aCycle*KNoOfYearsInCycle)+aYear; + y-=(KFirstYear-1); //there are KFirstYear-1 entries missing from the head of the table + TUint16 x=iCalConDataMonth[y]; + + TUint mask=KMonthMask>>aMonth; + + TInt flag=K29DayMonth; + if (x & mask) + flag=K30DayMonth; + + TUint leapMonth=iCalConDataYear[y]>>KLeapMonthShift; + leapMonth--; + + if ((TUint)aMonth==leapMonth) + flag+=2; //--> K29/30DayLeapMonth + + if ((aMonth==12) && (leapMonth==0)) + flag=KMonthInvalid;//month doesn't exist + + return flag; + } + +TUint TCalconData::GetNewYear(TInt aCycle, TInt aYear) const + { + __ASSERT_DEBUG((aYear>=0 && aYear<=59), User::Panic(_L("Calcon"), ECalconGetNewYearYearOutOfRange)); + TInt y=(aCycle*KNoOfYearsInCycle)+aYear; + y-=(KFirstYear-1); + return (iCalConDataYear[y] & 0x0fffffff); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseToDateTime +// Arguments: TDateTime & +// +// Comments: This function converts the date held within +// the TChineseCalendar class to a TDateTime format and +// places it in the TDateTime class provided. +// +// Return: void +//------------------------------------------------------ +void TChineseCalendar::ChineseToDateTime(TDateTime &aDT) + { + TArithmeticalDate gregDate; + TGregorianCalendar greg(iJulianDay); + + greg.GregFromJulianDay(gregDate,iJulianDay); + aDT.Set(0,EJanuary,0,0,0,0,0); + + aDT.SetDay(gregDate.iDay - KCalConvMonthOffsetByOne); + aDT.SetMonth((TMonth)(gregDate.iMonth - KCalConvMonthOffsetByOne)); + aDT.SetYear(gregDate.iYear); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: DateTimeToChinese +// Arguments: TDateTime & +// +// Comments: Sets the date held in the given TDateTime +// class to the TChineseCalendar class +// +// Return: void +//------------------------------------------------------ +void TChineseCalendar::DateTimeToChinese(const TDateTime &aDT) + { + TArithmeticalDate gregDate; + TGregorianCalendar greg; + + gregDate.iDay = aDT.Day() + KCalConvMonthOffsetByOne; + gregDate.iMonth = (TInt)aDT.Month() + KCalConvMonthOffsetByOne; + gregDate.iYear = aDT.Year(); + + iJulianDay = greg.GregToJulianDay(gregDate); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: SetDate +// Arguments: TChineseDate& +// +// Comments: this function sets the julian day value +// in the base class from the given +// TChineseDate +// +// Return: None +//------------------------------------------------------ +TInt TChineseCalendar::SetDate(const TChineseDate &aDate) + { + TReal jD; + TChineseDate ChinDate = aDate; + + if(!ValidDate(ChinDate)) + return KErrArgument; + + if (!ChineseToFixed(aDate,jD)) + return KErrArgument; + + if (jDKLastJulianDate) + return KErrArgument; + + iJulianDay = (TInt)jD; + return KErrNone; + } +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: GetDate +// Arguments: TChineseDate & +// +// Comments: This function Determines the chinese date and +// places it in the TChineseDate class provided +// for the julian day value held internally in the +// Chinese class. +// +// Return: None +//------------------------------------------------------ +TInt TChineseCalendar::GetDate(TChineseDate &aDate) + { + return ChineseFromFixed(aDate,iJulianDay); + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseToFixed +// Arguments: TChineseDate , TReal & +// TChineseDate members start at 1 (not zero) +// +// Comments: This function converts a chinese date to +// to a julian day value. +// +// Return: TBool ETrue if date valid, else EFalse +//------------------------------------------------------ +TBool TChineseCalendar::ChineseToFixed(const TChineseDate& aDate, TReal &aJulianDay) const + { + TInt cycle=aDate.iCycle-KFirstCycle; //cycle starts from zero + TInt year=aDate.iYear-1; //year is 0..59 + + TInt days=0; + + TInt targetMonth=aDate.iMonth; //targetMonth is 1..12 + TBool leap=aDate.iLeapMonth; + if (leap) + { + targetMonth++; + if (iData.GetData(cycle, year, targetMonth-1)<3) + return EFalse; //not a leap month + } + + TInt month=1; + while (month<=targetMonth) + { + TInt daysFlag=iData.GetData(cycle, year, month-1); + +//We need to handle case where targetMonth is a leap month +//Eg if Chinese month==6 targetMonth will be 6 +//Eg but if Chinese month 5 is a leap month, month 6 will be 5(leap) so we need to take it into account +//BUT Eg if Chinese momth== 7(leap) we've already taken this into account. + if (month==targetMonth) + if ((leap) || (daysFlag<3)) + break; + + switch (daysFlag) + { + case KMonthInvalid: + return EFalse; + case K29DayMonth: + days+=29; + break; + case K30DayMonth: + days+=30; + break; + case K29DayLeapMonth: + __ASSERT_DEBUG(!leap, User::Panic(KCalconPanic,ECalconChineseToFixedLeapYearInvalid)); + leap=ETrue; + targetMonth++; + days+=29; + break; + case K30DayLeapMonth: + __ASSERT_DEBUG(!leap, User::Panic(KCalconPanic,ECalconChineseToFixedLeapYearInvalid)); + leap=ETrue; + targetMonth++; + days+=30; + break; + } + month++; + } + +//Check that if days==30, the requested month actually has 30 days + TInt checkMonth = aDate.iMonth; + if (leap) + checkMonth++; //this is the month requested by the user + TUint daysFlag=iData.GetData(cycle, year, checkMonth-1); + + if ((aDate.iDay==30) && ((daysFlag==K29DayMonth) || (daysFlag==K29DayLeapMonth))) + return EFalse; + + days+=aDate.iDay-1; + + days+=iData.GetNewYear(cycle, year);//add the New Year + aJulianDay=days; + return ETrue; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ChineseFromFixed +// Arguments: TChineseDate &, TReal +// +// Comments: this function converts a julian day value to +// a chinese date in the form TChineseDate +// +// Return: None +//------------------------------------------------------ +TInt TChineseCalendar::ChineseFromFixed(TChineseDate &aDate, const TReal& aJulianDay) const + { + if ((aJulianDayKLastJulianDate)) + return KErrArgument; + + TInt cycleIndex=0; + + while ((cycleIndex < KLastCycle-KFirstCycle) + && (aJulianDay >= iData.GetNewYear(cycleIndex+1,0))) + cycleIndex++; + + aDate.iCycle=cycleIndex + KFirstCycle; + TInt chineseNewYear; + TInt yearCount=0; + if (cycleIndex==0) + yearCount=KFirstYear-1; + + while (yearCount<60 && aJulianDay >= iData.GetNewYear(cycleIndex,yearCount)) + yearCount++; + + aDate.iYear=yearCount; + chineseNewYear = iData.GetNewYear(cycleIndex,--yearCount); + + TInt addedNumberOfDays = 0; + TInt previousAddedNumberOfDays = 0; + TInt monthCount = 1; + aDate.iMonth = 0; + + TInt monthNumber; // 0=No month exists, 1 = 29 day month, 2 = 30 day month, 3 = 29 day leap month, 4 = 30 day leap month + + while (aJulianDay >= (chineseNewYear + addedNumberOfDays)) + { + previousAddedNumberOfDays = addedNumberOfDays; + monthNumber = iData.GetData(cycleIndex,yearCount,monthCount-1); + + switch (monthNumber) + { + case KMonthInvalid: + __ASSERT_DEBUG(0, User::Panic(_L("Calcon"),ECalconChineseFromFixedMonthInvalid)); + break; + case K29DayMonth: + addedNumberOfDays += 29; + aDate.iMonth++; + aDate.iLeapMonth = EFalse; + break; + case K30DayMonth: + addedNumberOfDays += 30; + aDate.iMonth++; + aDate.iLeapMonth = EFalse; + break; + case K29DayLeapMonth: + addedNumberOfDays += 29; + aDate.iLeapMonth = ETrue; + break; + case K30DayLeapMonth: + addedNumberOfDays += 30; + aDate.iLeapMonth = ETrue; + break; + } + monthCount++; + } + + aDate.iDay = (TInt)aJulianDay - chineseNewYear-previousAddedNumberOfDays; + aDate.iDay++; + return KErrNone; + } + +//------------------------------------------------------ +// Class: TChineseCalendar +// Function: ValidDate +// Arguments: TChineseDate & +// +// Comments: This function Determines whether the given +// date is a valid chinese date +// +// Return: TBool - ETrue if date is valid, else EFalse +//------------------------------------------------------ +TBool TChineseCalendar::ValidDate(const TChineseDate &aDate) const + { + //do some trivial checks to ensure that the date is in the range of the lookup table + if (aDate.iYear==0 || aDate.iYear>KNoOfYearsInCycle) + return EFalse; + + if (aDate.iCycle < KFirstCycle) + return EFalse; + + if (aDate.iCycle==KFirstCycle && aDate.iYear < KFirstYear) + return EFalse; + + if (aDate.iCycle > KLastCycle) + return EFalse; + + if ( (aDate.iCycle==KLastCycle) && (aDate.iYear>KLastYear)) + return EFalse; + + if (aDate.iDay==0 || aDate.iDay>30) + return EFalse; + + return ETrue; + } + +TReal TChineseCalendar::JulianDate() __SOFTFP + { + return iJulianDay; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,50 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CHINESECALENDAR_H__ +#define __CHINESECALENDAR_H__ + +#include "calcondata.h" +#include + +class TCalconData + { +public: + TUint GetData(TInt aCycle, TInt aYear, TInt aMonth) const; + TUint GetNewYear(TInt aCycle, TInt aYear) const; + +private: + static const TUint16 iCalConDataMonth[KNumberOfYears]; + static const TUint32 iCalConDataYear[KNumberOfYears+1]; //marker on end of table + }; + +class TChineseCalendar + { +public: + void DateTimeToChinese(const TDateTime& aDT); + void ChineseToDateTime(TDateTime& aDT); + TInt SetDate(const TChineseDate& aDate); + TInt GetDate(TChineseDate& aDate); + TInt ChineseFromFixed(TChineseDate& aDate,const TReal& aJulianDay) const; + TReal JulianDate() __SOFTFP; + +private: + TBool ValidDate(const TChineseDate &aDate) const; + TBool ChineseToFixed(const TChineseDate& aDate, TReal& aJulianDay) const; + TReal iJulianDay; + TCalconData iData; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,53 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "chinesecalendarconverterimpl.h" +#include "gregoriancalendar.h" + +CChineseCalendarConverter* CChineseCalendarConverterImpl::NewL() + { + return new(ELeave) CChineseCalendarConverterImpl(); + } + +void CChineseCalendarConverterImpl::DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate) + { + iCalendar.DateTimeToChinese(aDateTime); + User::LeaveIfError(iCalendar.GetDate(aChineseDate)); + } + +void CChineseCalendarConverterImpl::ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime) + { + User::LeaveIfError(iCalendar.SetDate(aChineseDate)); + iCalendar.ChineseToDateTime(aDateTime); + } + +void CChineseCalendarConverterImpl::DateRange(TDateTime& aLower, TDateTime& aUpper) + { + TGregorianCalendar greg1(KFirstJulianDate); + greg1.GregorianToDateTime(aLower); + TGregorianCalendar greg2(KLastJulianDate); + greg2.GregorianToDateTime(aUpper); + } + +void CChineseCalendarConverterImpl::DateRange(TChineseDate& aLower, TChineseDate& aUpper) + { + iCalendar.ChineseFromFixed(aLower, KFirstJulianDate); + iCalendar.ChineseFromFixed(aUpper, KLastJulianDate); + } + +TReal CChineseCalendarConverterImpl::JulianDate() __SOFTFP + { + return iCalendar.JulianDate(); + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,36 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CHINESECALENDARCONVERTERIMPL_H__ +#define __CHINESECALENDARCONVERTERIMPL_H__ + +#include +#include "chinesecalendar.h" + +class CChineseCalendarConverterImpl : public CChineseCalendarConverterEcomPlugin + { +public: + static CChineseCalendarConverter* NewL(); + virtual void DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate); + virtual void ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime); + virtual void DateRange(TDateTime& aLower, TDateTime& aUpper); + virtual void DateRange(TChineseDate& aLower, TChineseDate& aUpper); + virtual TReal JulianDate() __SOFTFP; + +private: + TChineseCalendar iCalendar; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,410 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Implementation of the TGregorianCalendar class. +// + +#include +#include +#include "gregoriancalendar.h" + +// Constants +const TReal KFourYears = 4.0; +const TReal KFourHundredYears = 400; +const TReal KOneHundredYears = 100; +const TReal KGregStartEpoch = 1721424.5; +// +const TInt KDayOffsetByZero = 0; +const TInt KGregDaysInNormYear = 365; +const TInt KDaysIn400Years = 146097; +const TInt KDaysIn100Years = 36524; +const TInt KDaysIn4Years = 1461; +const TInt KGregCycle = 12; +const TInt KGregLeaps = 7; +const TInt KGregOffset = 11; +const TInt KGregStdMonth = 30; +const TInt KLastDayInDecember = 31; + + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: TGregorianCalendar +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +TGregorianCalendar::TGregorianCalendar() + { + InitMembers(); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: TGregorianCalendar +// Arguments: TReal +// +// Comments: Overloaded Constructor +// +// Return: None +//------------------------------------------------------ +TGregorianCalendar::TGregorianCalendar(TReal aJD) __SOFTFP + { + iJulianDay = aJD; + InitMembers(); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: InitMembers +// Arguments: None +// +// Comments: This function initialises the member variables +// or the class. It is called in the constructors +// +// Return: +//------------------------------------------------------ +void TGregorianCalendar::InitMembers() + { + iStartEpoch = KGregStartEpoch + KCalConvPointFive; + Floor(iDaysInNormYear,KGregDaysInNormYear); + iCycle = KGregCycle; + iLeaps = KGregLeaps; + iOffset = KGregOffset; + iStdYearMonth = KGregStdMonth; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: IsLeapYear +// Arguments: const TInt +// +// Comments: Determines whether the given year is a leap year. +// +// Return: ETrue if leap year, else EFalse +//------------------------------------------------------ +TBool TGregorianCalendar::IsLeapYear(const TInt aYear)const + { + TReal result; + TBool rtn = EFalse; + + Mod(result,aYear,KFourYears); + + if (!result) + { + rtn = ETrue; + } + + Mod(result,aYear,KOneHundredYears); + + if (!result) + { + Mod(result,aYear,KFourHundredYears); + + if (result) + { + rtn = EFalse; + } + } + return rtn; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregToJulianDay +// Arguments: const TArithmeticalDate& +// +// Comments: converts gregorian date to Julian day value +// +// Return: Julian day value for the given Gregorian date +//------------------------------------------------------ +TReal TGregorianCalendar::GregToJulianDay(const TArithmeticalDate& aDate) const __SOFTFP + { + TReal result; + TReal tempReal; + TInt tempInt; + + // days to the start of the year based on normal years + result = iStartEpoch + (iDaysInNormYear * (aDate.iYear - 1)); + + // leap year corrections + tempReal = (aDate.iYear - 1) / KFourYears; + Floor(tempInt,tempReal); + result += tempInt; + + tempReal = (aDate.iYear - 1) / KOneHundredYears; + Floor(tempInt,tempReal); + result -= tempInt; + + tempReal = (aDate.iYear - 1) / KFourHundredYears; + Floor(tempInt,tempReal); + result += tempInt; + + // days in whole months in the year in question - approx + // based on Feb having 30 days + tempInt = DaysMonthsElapsed(aDate.iMonth); + result += tempInt; + + // correction for assumption that Feb has 30 days + if (aDate.iMonth <= (EFebruary + 1)) + result += KDayOffsetByZero; + else if (aDate.iMonth > (EFebruary + 1) && IsLeapYear(aDate.iYear)) + result -= 1; + else + result -= 2; + + // days in month in question + result += aDate.iDay; + + return result; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregorianToDateTime +// Arguments: TDateTime& +// +// Comments: This gets the date from the TGregorianCalendar class +// and places in the the given TDateTime class +// +// Return: void +//------------------------------------------------------ +void TGregorianCalendar::GregorianToDateTime(TDateTime& aDT) + { + TArithmeticalDate gregDate; + GregFromJulianDay(gregDate,iJulianDay); + + aDT.Set(0,EJanuary,0,0,0,0,0); + aDT.SetMonth((TMonth)(gregDate.iMonth - 1)); + aDT.SetDay(gregDate.iDay - 1); + aDT.SetYear(gregDate.iYear); + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: CalcGregYear +// Arguments: TArithmeticalDate& +// +// Comments: Calculates the gregorian year from Julian +// day value. +// +// Return: None +//------------------------------------------------------ +void TGregorianCalendar::CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const __SOFTFP + { + TReal d0; + TReal d1; + TReal d2; + TReal d3; + TReal year; + TInt n400; + TInt n100; + TInt n4; + TInt n1; + TInt32 yearInt32; + + // determine year + // get to start of calendar ie year 1 + d0 = aJulianDay - iStartEpoch - 1; + + Mod(d1,d0,KDaysIn400Years); + + Mod(d2,d1,KDaysIn100Years); + + Mod(d3,d2,KDaysIn4Years); + + // number of 400 year blocks + d0 /= KDaysIn400Years; + Floor(n400,d0); + + // number of 100 year blocks + d1 /= KDaysIn100Years; + Floor(n100,d1); + + // number of 4 year blocks + d2 /= KDaysIn4Years; + Floor(n4,d2); + + // number of 1 year blocks + d3 /= KGregDaysInNormYear; + Floor(n1,d3); + + // calc year + year = (KFourHundredYears * n400) + (KOneHundredYears * n100) + (KFourYears * n4) + n1; + Math::Int(yearInt32,year); + + if ((n100 == (KFourHundredYears / KOneHundredYears)) || (n1 == KFourYears)) + { + aDate.iYear = yearInt32; + } + else + { + aDate.iYear = yearInt32 + 1; + } + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregDateDiff +// Arguments: const TArithmeticalDate, const TArithmeticalDate +// +// Comments: This function Determines the difference in days +// between two gregorian dates. +// +// Return: Days difference +//------------------------------------------------------ +TInt TGregorianCalendar::GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2)const + { + TInt diff; + TReal diffReal; + diffReal = GregToJulianDay(aDate2) - GregToJulianDay(aDate1); + Floor(diff,diffReal); + return diff; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: DayNumber +// Arguments: const TArithmeticalDate& +// +// Comments: this function returns the number of days that +// have elapsed in the given year +// +// Return: see comment +//------------------------------------------------------ +TInt TGregorianCalendar::DayNumber(const TArithmeticalDate& aDate)const + { + TArithmeticalDate tempDate; + TInt dayNum; + + tempDate.iDay = KLastDayInDecember; + tempDate.iMonth = EDecember + 1; + tempDate.iYear = aDate.iYear - 1; + + dayNum = GregDateDiff(tempDate,aDate); + + return dayNum; + } + +//------------------------------------------------------ +// Class: TGregorianCalendar +// Function: GregFromJulianDay +// Arguments: TArithmeticalDate& , TReal +// +// Comments: This function converts a gregorian date to +// a julian day +// +// Return: void +//------------------------------------------------------ +void TGregorianCalendar::GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const __SOFTFP + { + TReal priorDays; + TReal correction; + TReal day; + TReal month; + TInt32 dayInt32; + TInt32 monthInt32; + + CalcGregYear(aDate,aJulianDay); + + aDate.iDay = 1; + aDate.iMonth = EJanuary + 1; + + priorDays = aJulianDay - GregToJulianDay(aDate); + + aDate.iMonth = EMarch + 1; + + if (aJulianDay < GregToJulianDay(aDate)) + { + correction = KDayOffsetByZero; + } + else if ((aJulianDay >= GregToJulianDay(aDate)) && IsLeapYear(aDate.iYear)) + { + correction = 1; + } + else + { + correction = 2; + } + + month = priorDays + correction; + Math::Int(monthInt32,month); + monthInt32 = DayMonthInYear(monthInt32); + aDate.iMonth = monthInt32; + + day = aJulianDay - GregToJulianDay(aDate) + 1; + Math::Int(dayInt32,day); + aDate.iDay = dayInt32; + } + + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: DaysMonthsElapsed +// Arguments: const TInt ,const TInt ,const TInt , const TInt ,const TInt +// +// Comments: The use of this function varies between calendars +// however since the form of the equation is the same it +// is represented in this class. The equation is use to +// calculate the number of days in whole months of a particular +// year up to a particular date in the Gregorian and +// Islamic calendars. The Hebrew calendar uses this +// equation to calculate the number of whole months +// since the start of the calendar. +// +// +// Return: See comments +//------------------------------------------------------ +TInt TGregorianCalendar::DaysMonthsElapsed(const TInt aYear) const + { + TReal tempReal; + TInt result; + + tempReal = iOffset * iLeaps; + Mod(tempReal,tempReal,iCycle); + tempReal = ((iLeaps * aYear) - iLeaps + tempReal) / iCycle; + Floor(result,tempReal); + result = result + (iStdYearMonth * (aYear - KCalConvYearOffsetByOne)); + + return result; + } + +//------------------------------------------------------ +// Class: TArithmeticalCalendar +// Function: DayMonthInYear +// Arguments: None +// +// Comments: This function Determines the month based on +// the number of days into the year it is +// +// Return: TInt - Month +//------------------------------------------------------ +TInt TGregorianCalendar::DayMonthInYear(const TInt aDays) const + { + TReal tempReal; + TInt result; + + tempReal = iLeaps * iOffset; + Mod(tempReal,tempReal,iCycle); + tempReal = (iCycle * aDays) + (iCycle * iStdYearMonth) + iLeaps - KCalConvYearOffsetByOne + iCycle - tempReal; + tempReal = tempReal / ((iCycle * iStdYearMonth) + iLeaps); + Floor(result,tempReal); + + return result; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,40 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __GREGORIANCALENDAR_H__ +#define __GREGORIANCALENDAR_H__ + +#include "calendar.h" +#include "arithmeticaldate.h" + +class TGregorianCalendar : public TCalendar + { +public: + TGregorianCalendar(); + TGregorianCalendar(TReal aJulianDay); + void GregorianToDateTime(TDateTime& aDT); + void GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const; + TReal GregToJulianDay(const TArithmeticalDate& aYear) const; +private: + void InitMembers(); + TInt DayNumber(const TArithmeticalDate& aDate) const; + void CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const; + TBool IsLeapYear(const TInt aYear) const; + TInt GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2) const; + TInt DayMonthInYear(const TInt) const; + TInt DaysMonthsElapsed(const TInt) const; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,5401 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +#include "calconvusingtable.h" +const TUint16 TCalconData::iCalConDataMonth[]={ + 43856U, // 0 - 8 + 11176U, // 0 - 9 + 11104U, // 0 - 10 + 37744U, // 0 - 11 + 18808U, // 0 - 12 + 18800U, // 0 - 13 + 25776U, // 0 - 14 + 27288U, // 0 - 15 + 23200U, // 0 - 16 + 23376U, // 0 - 17 + 22224U, // 0 - 18 + 9952U, // 0 - 19 + 37616U, // 0 - 20 + 37600U, // 0 - 21 + 51552U, // 0 - 22 + 54440U, // 0 - 23 + 46368U, // 0 - 24 + 54944U, // 0 - 25 + 44448U, // 0 - 26 + 21968U, // 0 - 27 + 9960U, // 0 - 28 + 9680U, // 0 - 29 + 37584U, // 0 - 30 + 43352U, // 0 - 31 + 43344U, // 0 - 32 + 46240U, // 0 - 33 + 46480U, // 0 - 34 + 44448U, // 0 - 35 + 19888U, // 0 - 36 + 19376U, // 0 - 37 + 9648U, // 0 - 38 + 37560U, // 0 - 39 + 21168U, // 0 - 40 + 26960U, // 0 - 41 + 27304U, // 0 - 42 + 23200U, // 0 - 43 + 43872U, // 0 - 44 + 38752U, // 0 - 45 + 19312U, // 0 - 46 + 9584U, // 0 - 47 + 42336U, // 0 - 48 + 53920U, // 0 - 49 + 59728U, // 0 - 50 + 54608U, // 0 - 51 + 22176U, // 0 - 52 + 43856U, // 0 - 53 + 38608U, // 0 - 54 + 19176U, // 0 - 55 + 19168U, // 0 - 56 + 42192U, // 0 - 57 + 53928U, // 0 - 58 + 43680U, // 0 - 59 + 46416U, // 1 - 0 + 22184U, // 1 - 1 + 11680U, // 1 - 2 + 38352U, // 1 - 3 + 38320U, // 1 - 4 + 18864U, // 1 - 5 + 42200U, // 1 - 6 + 25808U, // 1 - 7 + 27296U, // 1 - 8 + 44368U, // 1 - 9 + 27472U, // 1 - 10 + 11168U, // 1 - 11 + 38320U, // 1 - 12 + 37744U, // 1 - 13 + 18808U, // 1 - 14 + 18800U, // 1 - 15 + 21680U, // 1 - 16 + 27280U, // 1 - 17 + 55968U, // 1 - 18 + 23376U, // 1 - 19 + 11112U, // 1 - 20 + 9952U, // 1 - 21 + 37616U, // 1 - 22 + 37600U, // 1 - 23 + 51552U, // 1 - 24 + 54440U, // 1 - 25 + 46240U, // 1 - 26 + 46752U, // 1 - 27 + 22224U, // 1 - 28 + 21968U, // 1 - 29 + 9696U, // 1 - 30 + 37608U, // 1 - 31 + 37584U, // 1 - 32 + 43352U, // 1 - 33 + 43344U, // 1 - 34 + 46240U, // 1 - 35 + 46480U, // 1 - 36 + 44448U, // 1 - 37 + 19888U, // 1 - 38 + 9688U, // 1 - 39 + 9648U, // 1 - 40 + 37552U, // 1 - 41 + 43352U, // 1 - 42 + 26960U, // 1 - 43 + 27304U, // 1 - 44 + 23200U, // 1 - 45 + 43872U, // 1 - 46 + 19376U, // 1 - 47 + 19296U, // 1 - 48 + 42352U, // 1 - 49 + 21168U, // 1 - 50 + 53920U, // 1 - 51 + 55632U, // 1 - 52 + 54608U, // 1 - 53 + 22176U, // 1 - 54 + 39760U, // 1 - 55 + 38608U, // 1 - 56 + 19168U, // 1 - 57 + 42216U, // 1 - 58 + 42192U, // 1 - 59 + 53864U, // 2 - 0 + 43680U, // 2 - 1 + 46416U, // 2 - 2 + 22184U, // 2 - 3 + 11680U, // 2 - 4 + 38352U, // 2 - 5 + 18904U, // 2 - 6 + 18864U, // 2 - 7 + 42192U, // 2 - 8 + 45656U, // 2 - 9 + 27280U, // 2 - 10 + 44368U, // 2 - 11 + 23376U, // 2 - 12 + 11168U, // 2 - 13 + 38320U, // 2 - 14 + 37744U, // 2 - 15 + 18800U, // 2 - 16 + 42168U, // 2 - 17 + 21680U, // 2 - 18 + 27216U, // 2 - 19 + 55968U, // 2 - 20 + 23376U, // 2 - 21 + 11112U, // 2 - 22 + 9952U, // 2 - 23 + 37616U, // 2 - 24 + 18800U, // 2 - 25 + 51552U, // 2 - 26 + 54432U, // 2 - 27 + 55888U, // 2 - 28 + 46736U, // 2 - 29 + 22224U, // 2 - 30 + 21968U, // 2 - 31 + 9696U, // 2 - 32 + 37608U, // 2 - 33 + 37584U, // 2 - 34 + 43344U, // 2 - 35 + 54440U, // 2 - 36 + 44192U, // 2 - 37 + 46416U, // 2 - 38 + 44384U, // 2 - 39 + 19888U, // 2 - 40 + 9688U, // 2 - 41 + 9648U, // 2 - 42 + 21168U, // 2 - 43 + 43352U, // 2 - 44 + 26960U, // 2 - 45 + 27296U, // 2 - 46 + 44368U, // 2 - 47 + 39760U, // 2 - 48 + 19376U, // 2 - 49 + 19296U, // 2 - 50 + 42352U, // 2 - 51 + 21168U, // 2 - 52 + 53920U, // 2 - 53 + 54608U, // 2 - 54 + 27304U, // 2 - 55 + 22176U, // 2 - 56 + 38736U, // 2 - 57 + 38608U, // 2 - 58 + 19168U, // 2 - 59 + 42216U, // 3 - 0 + 42192U, // 3 - 1 + 53856U, // 3 - 2 + 54608U, // 3 - 3 + 46416U, // 3 - 4 + 13984U, // 3 - 5 + 38608U, // 3 - 6 + 38352U, // 3 - 7 + 18904U, // 3 - 8 + 18864U, // 3 - 9 + 42192U, // 3 - 10 + 43608U, // 3 - 11 + 27280U, // 3 - 12 + 44352U, // 3 - 13 + 44456U, // 3 - 14 + 11168U, // 3 - 15 + 38320U, // 3 - 16 + 18872U, // 3 - 17 + 18800U, // 3 - 18 + 25784U, // 3 - 19 + 21680U, // 3 - 20 + 27216U, // 3 - 21 + 27464U, // 3 - 22 + 23376U, // 3 - 23 + 11104U, // 3 - 24 + 37744U, // 3 - 25 + 37616U, // 3 - 26 + 18800U, // 3 - 27 + 43360U, // 3 - 28 + 54432U, // 3 - 29 + 55888U, // 3 - 30 + 46480U, // 3 - 31 + 22224U, // 3 - 32 + 9960U, // 3 - 33 + 9696U, // 3 - 34 + 37600U, // 3 - 35 + 51560U, // 3 - 36 + 43344U, // 3 - 37 + 54440U, // 3 - 38 + 43680U, // 3 - 39 + 44368U, // 3 - 40 + 21928U, // 3 - 41 + 19376U, // 3 - 42 + 9680U, // 3 - 43 + 37592U, // 3 - 44 + 21168U, // 3 - 45 + 43352U, // 3 - 46 + 26960U, // 3 - 47 + 27296U, // 3 - 48 + 44368U, // 3 - 49 + 39760U, // 3 - 50 + 19360U, // 3 - 51 + 42352U, // 3 - 52 + 42352U, // 3 - 53 + 21104U, // 3 - 54 + 26960U, // 3 - 55 + 54608U, // 3 - 56 + 23208U, // 3 - 57 + 22176U, // 3 - 58 + 38736U, // 3 - 59 + 19304U, // 4 - 0 + 19168U, // 4 - 1 + 42208U, // 4 - 2 + 53864U, // 4 - 3 + 53856U, // 4 - 4 + 54608U, // 4 - 5 + 46416U, // 4 - 6 + 13984U, // 4 - 7 + 38608U, // 4 - 8 + 38352U, // 4 - 9 + 17872U, // 4 - 10 + 41688U, // 4 - 11 + 42160U, // 4 - 12 + 43600U, // 4 - 13 + 46376U, // 4 - 14 + 44352U, // 4 - 15 + 44456U, // 4 - 16 + 11168U, // 4 - 17 + 37808U, // 4 - 18 + 17848U, // 4 - 19 + 17776U, // 4 - 20 + 25776U, // 4 - 21 + 43608U, // 4 - 22 + 27216U, // 4 - 23 + 27464U, // 4 - 24 + 22208U, // 4 - 25 + 43872U, // 4 - 26 + 37744U, // 4 - 27 + 35568U, // 4 - 28 + 17776U, // 4 - 29 + 21680U, // 4 - 30 + 54432U, // 4 - 31 + 55888U, // 4 - 32 + 46416U, // 4 - 33 + 22208U, // 4 - 34 + 42728U, // 4 - 35 + 9680U, // 4 - 36 + 37600U, // 4 - 37 + 51560U, // 4 - 38 + 43344U, // 4 - 39 + 46240U, // 4 - 40 + 54608U, // 4 - 41 + 44368U, // 4 - 42 + 21928U, // 4 - 43 + 19360U, // 4 - 44 + 42448U, // 4 - 45 + 37592U, // 4 - 46 + 21168U, // 4 - 47 + 43344U, // 4 - 48 + 45736U, // 4 - 49 + 27296U, // 4 - 50 + 44368U, // 4 - 51 + 19880U, // 4 - 52 + 19360U, // 4 - 53 + 42352U, // 4 - 54 + 41840U, // 4 - 55 + 21104U, // 4 - 56 + 25904U, // 4 - 57 + 54608U, // 4 - 58 + 23200U, // 4 - 59 + 43856U, // 5 - 0 + 38608U, // 5 - 1 + 19176U, // 5 - 2 + 18144U, // 5 - 3 + 41696U, // 5 - 4 + 53608U, // 5 - 5 + 51808U, // 5 - 6 + 54560U, // 5 - 7 + 55968U, // 5 - 8 + 46496U, // 5 - 9 + 22224U, // 5 - 10 + 19176U, // 5 - 11 + 17872U, // 5 - 12 + 41688U, // 5 - 13 + 41648U, // 5 - 14 + 43600U, // 5 - 15 + 46376U, // 5 - 16 + 27968U, // 5 - 17 + 44448U, // 5 - 18 + 21968U, // 5 - 19 + 37808U, // 5 - 20 + 17848U, // 5 - 21 + 17776U, // 5 - 22 + 21168U, // 5 - 23 + 27224U, // 5 - 24 + 23120U, // 5 - 25 + 27456U, // 5 - 26 + 43872U, // 5 - 27 + 43872U, // 5 - 28 + 35696U, // 5 - 29 + 17776U, // 5 - 30 + 50544U, // 5 - 31 + 21168U, // 5 - 32 + 53920U, // 5 - 33 + 54608U, // 5 - 34 + 23208U, // 5 - 35 + 22208U, // 5 - 36 + 42720U, // 5 - 37 + 35560U, // 5 - 38 + 35552U, // 5 - 39 + 42344U, // 5 - 40 + 42320U, // 5 - 41 + 45728U, // 5 - 42 + 46416U, // 5 - 43 + 44368U, // 5 - 44 + 19872U, // 5 - 45 + 38352U, // 5 - 46 + 38352U, // 5 - 47 + 19152U, // 5 - 48 + 42200U, // 5 - 49 + 42320U, // 5 - 50 + 43688U, // 5 - 51 + 27296U, // 5 - 52 + 44368U, // 5 - 53 + 19880U, // 5 - 54 + 11104U, // 5 - 55 + 38256U, // 5 - 56 + 18872U, // 5 - 57 + 18800U, // 5 - 58 + 25904U, // 5 - 59 + 54608U, // 6 - 0 + 23200U, // 6 - 1 + 39760U, // 6 - 2 + 22224U, // 6 - 3 + 10976U, // 6 - 4 + 37744U, // 6 - 5 + 41696U, // 6 - 6 + 51552U, // 6 - 7 + 54448U, // 6 - 8 + 54560U, // 6 - 9 + 54944U, // 6 - 10 + 44448U, // 6 - 11 + 22224U, // 6 - 12 + 9960U, // 6 - 13 + 9680U, // 6 - 14 + 41680U, // 6 - 15 + 51544U, // 6 - 16 + 43344U, // 6 - 17 + 46376U, // 6 - 18 + 27968U, // 6 - 19 + 44448U, // 6 - 20 + 21968U, // 6 - 21 + 19376U, // 6 - 22 + 17840U, // 6 - 23 + 37560U, // 6 - 24 + 21168U, // 6 - 25 + 26960U, // 6 - 26 + 27816U, // 6 - 27 + 23328U, // 6 - 28 + 43872U, // 6 - 29 + 42848U, // 6 - 30 + 19312U, // 6 - 31 + 9584U, // 6 - 32 + 42352U, // 6 - 33 + 21168U, // 6 - 34 + 26960U, // 6 - 35 + 54608U, // 6 - 36 + 23208U, // 6 - 37 + 22176U, // 6 - 38 + 38624U, // 6 - 39 + 19176U, // 6 - 40 + 19168U, // 6 - 41 + 42336U, // 6 - 42 + 53928U, // 6 - 43 + 45728U, // 6 - 44 + 46416U, // 6 - 45 + 22184U, // 6 - 46 + 19872U, // 6 - 47 + 38352U, // 6 - 48 + 38352U, // 6 - 49 + 18864U, // 6 - 50 + 42200U, // 6 - 51 + 42320U, // 6 - 52 + 43680U, // 6 - 53 + 46416U, // 6 - 54 + 43856U, // 6 - 55 + 11176U, // 6 - 56 + 11104U, // 6 - 57 + 37744U, // 6 - 58 + 18872U, // 6 - 59 + 18800U, // 7 - 0 + 25776U, // 7 - 1 + 27288U, // 7 - 2 + 23200U, // 7 - 3 + 23376U, // 7 - 4 + 11112U, // 7 - 5 + 10976U, // 7 - 6 + 37744U, // 7 - 7 + 37600U, // 7 - 8 + 51552U, // 7 - 9 + 54448U, // 7 - 10 + 54560U, // 7 - 11 + 54944U, // 7 - 12 + 22224U, // 7 - 13 + 22224U, // 7 - 14 + 9952U, // 7 - 15 + 37608U, // 7 - 16 + 37584U, // 7 - 17 + 51544U, // 7 - 18 + 43344U, // 7 - 19 + 46240U, // 7 - 20 + 46496U, // 7 - 21 + 44448U, // 7 - 22 + 21968U, // 7 - 23 + 9688U, // 7 - 24 + 9648U, // 7 - 25 + 37560U, // 7 - 26 + 21168U, // 7 - 27 + 26960U, // 7 - 28 + 27816U, // 7 - 29 + 23200U, // 7 - 30 + 43872U, // 7 - 31 + 19376U, // 7 - 32 + 19312U, // 7 - 33 + 9584U, // 7 - 34 + 42352U, // 7 - 35 + 21168U, // 7 - 36 + 26960U, // 7 - 37 + 54608U, // 7 - 38 + 23200U, // 7 - 39 + 43856U, // 7 - 40 + 38608U, // 7 - 41 + 19168U, // 7 - 42 + 42352U, // 7 - 43 + 42320U, // 7 - 44 + 53928U, // 7 - 45 + 45728U, // 7 - 46 + 46416U, // 7 - 47 + 22184U, // 7 - 48 + 11680U, // 7 - 49 + 38352U, // 7 - 50 + 19176U, // 7 - 51 + 18864U, // 7 - 52 + 42200U, // 7 - 53 + 42192U, // 7 - 54 + 43680U, // 7 - 55 + 46416U, // 7 - 56 + 27472U, // 7 - 57 + 11168U, // 7 - 58 + 38320U, // 7 - 59 + 37744U, // 8 - 0 + 18864U, // 8 - 1 + 42168U, // 8 - 2 + 25776U, // 8 - 3 + 27288U, // 8 - 4 + 23200U, // 8 - 5 + 23376U, // 8 - 6 + 11112U, // 8 - 7 + 9952U, // 8 - 8 + 37616U, // 8 - 9 + 18800U, // 8 - 10 + 51552U, // 8 - 11 + 54440U, // 8 - 12 + 46368U, // 8 - 13 + 54944U, // 8 - 14 + 22224U, // 8 - 15 + 21968U, // 8 - 16 + 9696U, // 8 - 17 + 37608U, // 8 - 18 + 37584U, // 8 - 19 + 43344U, // 8 - 20 + 54440U, // 8 - 21 + 46240U, // 8 - 22 + 46480U, // 8 - 23 + 44448U, // 8 - 24 + 19888U, // 8 - 25 + 9688U, // 8 - 26 + 9648U, // 8 - 27 + 37552U, // 8 - 28 + 43352U, // 8 - 29 + 26960U, // 8 - 30 + 27304U, // 8 - 31 + 23200U, // 8 - 32 + 43872U, // 8 - 33 + 19376U, // 8 - 34 + 19312U, // 8 - 35 + 9584U, // 8 - 36 + 21168U, // 8 - 37 + 53920U, // 8 - 38 + 59728U, // 8 - 39 + 27304U, // 8 - 40 + 22176U, // 8 - 41 + 39760U, // 8 - 42 + 38608U, // 8 - 43 + 19168U, // 8 - 44 + 42352U, // 8 - 45 + 42192U, // 8 - 46 + 53920U, // 8 - 47 + 54608U, // 8 - 48 + 46416U, // 8 - 49 + 22176U, // 8 - 50 + 38608U, // 8 - 51 + 38352U, // 8 - 52 + 19176U, // 8 - 53 + 18864U, // 8 - 54 + 42192U, // 8 - 55 + 45656U, // 8 - 56 + 27280U, // 8 - 57 + 44368U, // 8 - 58 + 13736U, // 8 - 59 + 11168U, // 9 - 0 + 38320U, // 9 - 1 + 37744U, // 9 - 2 + 18800U, // 9 - 3 + 42168U, // 9 - 4 + 21680U, // 9 - 5 + 27280U, // 9 - 6 + 27976U, // 9 - 7 + 23376U, // 9 - 8 + 11104U, // 9 - 9 + 37744U, // 9 - 10 + 37616U, // 9 - 11 + 18800U, // 9 - 12 + 51552U, // 9 - 13 + 54432U, // 9 - 14 + 55888U, // 9 - 15 + 54928U, // 9 - 16 + 22224U, // 9 - 17 + 10984U, // 9 - 18 + 9696U, // 9 - 19 + 37608U, // 9 - 20 + 37584U, // 9 - 21 + 43344U, // 9 - 22 + 54440U, // 9 - 23 + 46240U, // 9 - 24 + 46480U, // 9 - 25 + 22224U, // 9 - 26 + 19888U, // 9 - 27 + 9680U, // 9 - 28 + 37592U, // 9 - 29 + 21168U, // 9 - 30 + 43352U, // 9 - 31 + 26960U, // 9 - 32 + 27296U, // 9 - 33 + 44368U, // 9 - 34 + 43856U, // 9 - 35 + 19376U, // 9 - 36 + 9656U, // 9 - 37 + 9584U, // 9 - 38 + 21168U, // 9 - 39 + 53920U, // 9 - 40 + 55632U, // 9 - 41 + 27304U, // 9 - 42 + 22176U, // 9 - 43 + 38736U, // 9 - 44 + 19304U, // 9 - 45 + 19168U, // 9 - 46 + 42224U, // 9 - 47 + 21096U, // 9 - 48 + 53856U, // 9 - 49 + 54608U, // 9 - 50 + 46416U, // 9 - 51 + 22176U, // 9 - 52 + 38608U, // 9 - 53 + 38352U, // 9 - 54 + 18896U, // 9 - 55 + 42200U, // 9 - 56 + 42192U, // 9 - 57 + 45656U, // 9 - 58 + 27280U, // 9 - 59 + 44368U, // 10 - 0 + 11688U, // 10 - 1 + 11168U, // 10 - 2 + 38320U, // 10 - 3 + 18872U, // 10 - 4 + 18800U, // 10 - 5 + 42160U, // 10 - 6 + 43608U, // 10 - 7 + 27216U, // 10 - 8 + 27464U, // 10 - 9 + 23376U, // 10 - 10 + 11104U, // 10 - 11 + 37744U, // 10 - 12 + 37616U, // 10 - 13 + 18800U, // 10 - 14 + 25776U, // 10 - 15 + 54432U, // 10 - 16 + 55888U, // 10 - 17 + 46480U, // 10 - 18 + 22224U, // 10 - 19 + 9960U, // 10 - 20 + 9696U, // 10 - 21 + 37600U, // 10 - 22 + 51560U, // 10 - 23 + 43344U, // 10 - 24 + 54432U, // 10 - 25 + 54864U, // 10 - 26 + 46416U, // 10 - 27 + 22184U, // 10 - 28 + 19888U, // 10 - 29 + 9680U, // 10 - 30 + 37592U, // 10 - 31 + 21168U, // 10 - 32 + 43344U, // 10 - 33 + 46248U, // 10 - 34 + 27296U, // 10 - 35 + 44368U, // 10 - 36 + 39760U, // 10 - 37 + 19360U, // 10 - 38 + 42416U, // 10 - 39 + 42352U, // 10 - 40 + 21168U, // 10 - 41 + 26960U, // 10 - 42 + 54608U, // 10 - 43 + 23200U, // 10 - 44 + 43856U, // 10 - 45 + 38736U, // 10 - 46 + 19304U, // 10 - 47 + 19168U, // 10 - 48 + 42208U, // 10 - 49 + 53864U, // 10 - 50 + 53856U, // 10 - 51 + 54608U, // 10 - 52 + 23208U, // 10 - 53 + 13984U, // 10 - 54 + 38608U, // 10 - 55 + 38352U, // 10 - 56 + 18896U, // 10 - 57 + 42200U, // 10 - 58 + 42192U, // 10 - 59 + 43600U, // 11 - 0 + 46376U, // 11 - 1 + 44352U, // 11 - 2 + 44448U, // 11 - 3 + 38352U, // 11 - 4 + 37808U, // 11 - 5 + 18872U, // 11 - 6 + 18800U, // 11 - 7 + 42160U, // 11 - 8 + 43608U, // 11 - 9 + 27216U, // 11 - 10 + 27456U, // 11 - 11 + 44392U, // 11 - 12 + 11104U, // 11 - 13 + 37744U, // 11 - 14 + 37616U, // 11 - 15 + 18800U, // 11 - 16 + 21680U, // 11 - 17 + 54432U, // 11 - 18 + 55888U, // 11 - 19 + 23208U, // 11 - 20 + 22208U, // 11 - 21 + 42720U, // 11 - 22 + 37608U, // 11 - 23 + 37600U, // 11 - 24 + 51560U, // 11 - 25 + 43344U, // 11 - 26 + 54432U, // 11 - 27 + 54608U, // 11 - 28 + 44368U, // 11 - 29 + 21920U, // 11 - 30 + 42456U, // 11 - 31 + 9680U, // 11 - 32 + 37592U, // 11 - 33 + 21168U, // 11 - 34 + 43344U, // 11 - 35 + 45736U, // 11 - 36 + 27296U, // 11 - 37 + 44368U, // 11 - 38 + 19880U, // 11 - 39 + 19360U, // 11 - 40 + 42352U, // 11 - 41 + 21176U, // 11 - 42 + 21168U, // 11 - 43 + 26928U, // 11 - 44 + 54608U, // 11 - 45 + 23200U, // 11 - 46 + 43856U, // 11 - 47 + 38736U, // 11 - 48 + 19296U, // 11 - 49 + 42352U, // 11 - 50 + 41696U, // 11 - 51 + 53608U, // 11 - 52 + 51808U, // 11 - 53 + 54560U, // 11 - 54 + 55968U, // 11 - 55 + 46752U, // 11 - 56 + 38608U, // 11 - 57 + 19176U, // 11 - 58 + 17872U, // 11 - 59 + 41680U, // 12 - 0 + 53608U, // 12 - 1 + 43600U, // 12 - 2 + 46376U, // 12 - 3 + 44352U, // 12 - 4 + 44448U, // 12 - 5 + 38352U, // 12 - 6 + 37808U, // 12 - 7 + 17840U, // 12 - 8 + 41656U, // 12 - 9 + 25264U, // 12 - 10 + 27224U, // 12 - 11 + 27216U, // 12 - 12 + 27456U, // 12 - 13 + 43872U, // 12 - 14 + 43872U, // 12 - 15 + 35696U, // 12 - 16 + 17776U, // 12 - 17 + 50544U, // 12 - 18 + 21168U, // 12 - 19 + 26960U, // 12 - 20 + 55632U, // 12 - 21 + 23208U, // 12 - 22 + 22208U, // 12 - 23 + 42720U, // 12 - 24 + 35560U, // 12 - 25 + 35552U, // 12 - 26 + 42336U, // 12 - 27 + 53928U, // 12 - 28 + 45728U, // 12 - 29 + 54608U, // 12 - 30 + 44368U, // 12 - 31 + 21920U, // 12 - 32 + 42448U, // 12 - 33 + 38352U, // 12 - 34 + 19152U, // 12 - 35 + 43352U, // 12 - 36 + 42320U, // 12 - 37 + 45728U, // 12 - 38 + 46416U, // 12 - 39 + 44368U, // 12 - 40 + 19880U, // 12 - 41 + 19360U, // 12 - 42 + 38256U, // 12 - 43 + 20920U, // 12 - 44 + 20848U, // 12 - 45 + 25904U, // 12 - 46 + 27304U, // 12 - 47 + 23200U, // 12 - 48 + 43856U, // 12 - 49 + 22352U, // 12 - 50 + 19296U, // 12 - 51 + 41840U, // 12 - 52 + 41696U, // 12 - 53 + 53600U, // 12 - 54 + 54448U, // 12 - 55 + 54560U, // 12 - 56 + 55968U, // 12 - 57 + 23248U, // 12 - 58 + 22224U, // 12 - 59 + 19176U, // 13 - 0 + 17872U, // 13 - 1 + 41680U, // 13 - 2 + 51544U, // 13 - 3 + 43344U, // 13 - 4 + 46368U, // 13 - 5 + 46752U, // 13 - 6 + 44448U, // 13 - 7 + 21968U, // 13 - 8 + 35760U, // 13 - 9 + 17840U, // 13 - 10 + 41656U, // 13 - 11 + 21168U, // 13 - 12 + 26960U, // 13 - 13 + 44200U, // 13 - 14 + 27424U, // 13 - 15 + 43872U, // 13 - 16 + 21424U, // 13 - 17 + 19312U, // 13 - 18 + 17776U, // 13 - 19 + 42352U, // 13 - 20 + 21168U, // 13 - 21 + 26960U, // 13 - 22 + 54608U, // 13 - 23 + 23200U, // 13 - 24 + 43872U, // 13 - 25 + 42720U, // 13 - 26 + 19168U, // 13 - 27 + 50544U, // 13 - 28 + 42336U, // 13 - 29 + 53928U, // 13 - 30 + 45728U, // 13 - 31 + 46416U, // 13 - 32 + 22184U, // 13 - 33 + 19872U, // 13 - 34 + 38352U, // 13 - 35 + 19176U, // 13 - 36 + 18864U, // 13 - 37 + 42200U, // 13 - 38 + 42320U, // 13 - 39 + 43680U, // 13 - 40 + 46416U, // 13 - 41 + 44368U, // 13 - 42 + 11680U, // 13 - 43 + 38352U, // 13 - 44 + 37744U, // 13 - 45 + 18872U, // 13 - 46 + 18800U, // 13 - 47 + 25776U, // 13 - 48 + 27288U, // 13 - 49 + 23200U, // 13 - 50 + 23376U, // 13 - 51 + 11112U, // 13 - 52 + 10976U, // 13 - 53 + 37744U, // 13 - 54 + 18800U, // 13 - 55 + 51552U, // 13 - 56 + 54448U, // 13 - 57 + 54560U, // 13 - 58 + 54944U, // 13 - 59 + 23248U, // 14 - 0 + 22224U, // 14 - 1 + 9952U, // 14 - 2 + 37608U, // 14 - 3 + 37584U, // 14 - 4 + 51544U, // 14 - 5 + 43344U, // 14 - 6 + 46368U, // 14 - 7 + 46752U, // 14 - 8 + 44448U, // 14 - 9 + 21968U, // 14 - 10 + 9688U, // 14 - 11 + 9648U, // 14 - 12 + 37552U, // 14 - 13 + 43352U, // 14 - 14 + 26960U, // 14 - 15 + 44200U, // 14 - 16 + 23200U, // 14 - 17 + 43872U, // 14 - 18 + 19376U, // 14 - 19 + 19312U, // 14 - 20 + 9584U, // 14 - 21 + 21176U, // 14 - 22 + 21168U, // 14 - 23 + 26960U, // 14 - 24 + 54608U, // 14 - 25 + 23200U, // 14 - 26 + 43856U, // 14 - 27 + 38624U, // 14 - 28 + 19168U, // 14 - 29 + 42352U, // 14 - 30 + 42320U, // 14 - 31 + 53920U, // 14 - 32 + 55632U, // 14 - 33 + 46416U, // 14 - 34 + 22184U, // 14 - 35 + 11680U, // 14 - 36 + 38352U, // 14 - 37 + 19176U, // 14 - 38 + 18864U, // 14 - 39 + 42192U, // 14 - 40 + 53864U, // 14 - 41 + 43680U, // 14 - 42 + 46416U, // 14 - 43 + 43856U, // 14 - 44 + 11680U, // 14 - 45 + 38320U, // 14 - 46 + 37744U, // 14 - 47 + 18864U, // 14 - 48 + 42168U, // 14 - 49 + 25776U, // 14 - 50 + 27280U, // 14 - 51 + 44368U, // 14 - 52 + 23376U, // 14 - 53 + 11112U, // 14 - 54 + 10976U, // 14 - 55 + 37616U, // 14 - 56 + 18800U, // 14 - 57 + 51552U, // 14 - 58 + 54432U, // 14 - 59 + 60048U, // 15 - 0 + 54928U, // 15 - 1 + 22224U, // 15 - 2 + 11112U, // 15 - 3 + 9952U, // 15 - 4 + 37608U, // 15 - 5 + 37584U, // 15 - 6 + 51536U, // 15 - 7 + 54440U, // 15 - 8 + 46240U, // 15 - 9 + 46480U, // 15 - 10 + 22224U, // 15 - 11 + 19888U, // 15 - 12 + 9688U, // 15 - 13 + 9648U, // 15 - 14 + 37552U, // 15 - 15 + 43352U, // 15 - 16 + 26960U, // 15 - 17 + 27808U, // 15 - 18 + 44368U, // 15 - 19 + 43872U, // 15 - 20 + 19376U, // 15 - 21 + 9656U, // 15 - 22 + 9584U, // 15 - 23 + 21168U, // 15 - 24 + 53920U, // 15 - 25 + 59728U, // 15 - 26 + 27304U, // 15 - 27 + 23200U, // 15 - 28 + 43856U, // 15 - 29 + 19304U, // 15 - 30 + 19168U, // 15 - 31 + 42352U, // 15 - 32 + 42208U, // 15 - 33 + 53920U, // 15 - 34 + 55632U, // 15 - 35 + 46416U, // 15 - 36 + 22176U, // 15 - 37 + 38608U, // 15 - 38 + 38352U, // 15 - 39 + 19168U, // 15 - 40 + 42200U, // 15 - 41 + 42192U, // 15 - 42 + 45672U, // 15 - 43 + 43664U, // 15 - 44 + 46416U, // 15 - 45 + 13736U, // 15 - 46 + 11168U, // 15 - 47 + 38320U, // 15 - 48 + 18872U, // 15 - 49 + 18800U, // 15 - 50 + 42168U, // 15 - 51 + 21680U, // 15 - 52 + 27280U, // 15 - 53 + 27976U, // 15 - 54 + 23376U, // 15 - 55 + 11104U, // 15 - 56 + 37744U, // 15 - 57 + 37616U, // 15 - 58 + 18800U, // 15 - 59 + 25776U, // 16 - 0 + 54432U, // 16 - 1 + 55888U, // 16 - 2 + 54928U, // 16 - 3 + 22224U, // 16 - 4 + 10984U, // 16 - 5 + 9952U, // 16 - 6 + 37600U, // 16 - 7 + 51560U, // 16 - 8 + 43344U, // 16 - 9 + 54440U, // 16 - 10 + 46240U, // 16 - 11 + 46480U, // 16 - 12 + 22224U, // 16 - 13 + 19888U, // 16 - 14 + 9680U, // 16 - 15 + 37592U, // 16 - 16 + 37552U, // 16 - 17 + 43344U, // 16 - 18 + 46248U, // 16 - 19 + 27296U, // 16 - 20 + 44368U, // 16 - 21 + 43856U, // 16 - 22 + 19376U, // 16 - 23 + 9656U, // 16 - 24 + 9584U, // 16 - 25 + 21168U, // 16 - 26 + 26960U, // 16 - 27 + 59728U, // 16 - 28 + 27304U, // 16 - 29 + 22176U, // 16 - 30 + 39760U, // 16 - 31 + 19304U, // 16 - 32 + 19168U, // 16 - 33 + 42352U, // 16 - 34 + 21096U, // 16 - 35 + 53856U, // 16 - 36 + 54608U, // 16 - 37 + 23208U, // 16 - 38 + 22176U, // 16 - 39 + 38608U, // 16 - 40 + 38352U, // 16 - 41 + 18896U, // 16 - 42 + 42200U, // 16 - 43 + 42192U, // 16 - 44 + 45648U, // 16 - 45 + 46408U, // 16 - 46 + 44368U, // 16 - 47 + 13736U, // 16 - 48 + 11168U, // 16 - 49 + 38320U, // 16 - 50 + 18872U, // 16 - 51 + 18800U, // 16 - 52 + 42160U, // 16 - 53 + 43608U, // 16 - 54 + 27216U, // 16 - 55 + 27968U, // 16 - 56 + 44456U, // 16 - 57 + 11104U, // 16 - 58 + 37744U, // 16 - 59 + 37616U, // 17 - 0 + 18800U, // 17 - 1 + 25776U, // 17 - 2 + 54432U, // 17 - 3 + 55888U, // 17 - 4 + 23368U, // 17 - 5 + 22224U, // 17 - 6 + 10984U, // 17 - 7 + 9696U, // 17 - 8 + 37600U, // 17 - 9 + 51560U, // 17 - 10 + 43344U, // 17 - 11 + 54432U, // 17 - 12 + 54864U, // 17 - 13 + 46416U, // 17 - 14 + 22192U, // 17 - 15 + 9944U, // 17 - 16 + 9680U, // 17 - 17 + 37592U, // 17 - 18 + 21168U, // 17 - 19 + 43344U, // 17 - 20 + 46248U, // 17 - 21 + 27296U, // 17 - 22 + 44368U, // 17 - 23 + 21928U, // 17 - 24 + 19360U, // 17 - 25 + 42416U, // 17 - 26 + 42352U, // 17 - 27 + 21168U, // 17 - 28 + 26960U, // 17 - 29 + 54608U, // 17 - 30 + 27296U, // 17 - 31 + 43856U, // 17 - 32 + 38736U, // 17 - 33 + 19296U, // 17 - 34 + 42352U, // 17 - 35 + 42208U, // 17 - 36 + 53864U, // 17 - 37 + 53856U, // 17 - 38 + 54608U, // 17 - 39 + 23208U, // 17 - 40 + 13984U, // 17 - 41 + 38608U, // 17 - 42 + 19176U, // 17 - 43 + 18896U, // 17 - 44 + 42200U, // 17 - 45 + 42192U, // 17 - 46 + 43600U, // 17 - 47 + 46376U, // 17 - 48 + 44352U, // 17 - 49 + 44448U, // 17 - 50 + 38352U, // 17 - 51 + 38320U, // 17 - 52 + 18864U, // 17 - 53 + 42168U, // 17 - 54 + 42160U, // 17 - 55 + 43608U, // 17 - 56 + 27216U, // 17 - 57 + 27456U, // 17 - 58 + 44456U, // 17 - 59 + 11104U, // 18 - 0 + 37744U, // 18 - 1 + 18808U, // 18 - 2 + 18800U, // 18 - 3 + 21680U, // 18 - 4 + 54432U, // 18 - 5 + 55888U, // 18 - 6 + 23208U, // 18 - 7 + 22224U, // 18 - 8 + 9952U, // 18 - 9 + 37616U, // 18 - 10 + 37600U, // 18 - 11 + 51552U, // 18 - 12 + 54440U, // 18 - 13 + 54432U, // 18 - 14 + 54608U, // 18 - 15 + 46416U, // 18 - 16 + 22176U, // 18 - 17 + 42712U, // 18 - 18 + 9680U, // 18 - 19 + 37584U, // 18 - 20 + 43352U, // 18 - 21 + 43344U, // 18 - 22 + 45736U, // 18 - 23 + 27296U, // 18 - 24 + 44368U, // 18 - 25 + 19880U, // 18 - 26 + 19360U, // 18 - 27 + 42416U, // 18 - 28 + 21176U, // 18 - 29 + 21104U, // 18 - 30 + 26928U, // 18 - 31 + 27304U, // 18 - 32 + 27296U, // 18 - 33 + 43856U, // 18 - 34 + 38736U, // 18 - 35 + 19296U, // 18 - 36 + 42352U, // 18 - 37 + 42208U, // 18 - 38 + 53856U, // 18 - 39 + 59696U, // 18 - 40 + 54560U, // 18 - 41 + 55968U, // 18 - 42 + 46752U, // 18 - 43 + 38608U, // 18 - 44 + 19176U, // 18 - 45 + 18896U, // 18 - 46 + 41680U, // 18 - 47 + 53864U, // 18 - 48 + 43600U, // 18 - 49 + 46368U, // 18 - 50 + 54944U, // 18 - 51 + 44448U, // 18 - 52 + 21968U, // 18 - 53 + 37808U, // 18 - 54 + 17840U, // 18 - 55 + 41656U, // 18 - 56 + 25776U, // 18 - 57 + 43600U, // 18 - 58 + 46376U, // 18 - 59 + 27456U, // 19 - 0 + 44448U, // 19 - 1 + 43872U, // 19 - 2 + 37744U, // 19 - 3 + 17784U, // 19 - 4 + 17776U, // 19 - 5 + 21680U, // 19 - 6 + 27216U, // 19 - 7 + 55632U, // 19 - 8 + 23200U, // 19 - 9 + 43872U, // 19 - 10 + 42720U, // 19 - 11 + 37608U, // 19 - 12 + 35552U, // 19 - 13 + 42336U, // 19 - 14 + 54440U, // 19 - 15 + 53920U, // 19 - 16 + 54608U, // 19 - 17 + 22184U, // 19 - 18 + 21920U, // 19 - 19 + 42448U, // 19 - 20 + 42448U, // 19 - 21 + 19152U, // 19 - 22 + 43352U, // 19 - 23 + 43344U, // 19 - 24 + 45728U, // 19 - 25 + 46416U, // 19 - 26 + 44368U, // 19 - 27 + 19872U, // 19 - 28 + 42448U, // 19 - 29 + 42416U, // 19 - 30 + 20920U, // 19 - 31 + 20848U, // 19 - 32 + 25904U, // 19 - 33 + 27304U, // 19 - 34 + 23200U, // 19 - 35 + 43856U, // 19 - 36 + 11176U, // 19 - 37 + 19296U, // 19 - 38 + 41840U, // 19 - 39 + 41696U, // 19 - 40 + 53600U, // 19 - 41 + 58672U, // 19 - 42 + 54560U, // 19 - 43 + 55968U, // 19 - 44 + 23248U, // 19 - 45 + 22224U, // 19 - 46 + 19168U, // 19 - 47 + 41704U, // 19 - 48 + 41680U, // 19 - 49 + 51544U, // 19 - 50 + 43600U, // 19 - 51 + 46368U, // 19 - 52 + 46752U, // 19 - 53 + 44448U, // 19 - 54 + 21968U, // 19 - 55 + 9688U, // 19 - 56 + 17840U, // 19 - 57 + 41656U, // 19 - 58 + 21168U, // 19 - 59 + 43344U, // 20 - 0 + 46376U, // 20 - 1 + 27424U, // 20 - 2 + 43872U, // 20 - 3 + 21936U, // 20 - 4 + 19312U, // 20 - 5 + 17776U, // 20 - 6 + 25272U, // 20 - 7 + 21168U, // 20 - 8 + 26960U, // 20 - 9 + 55632U, // 20 - 10 + 23200U, // 20 - 11 + 43872U, // 20 - 12 + 42720U, // 20 - 13 + 19168U, // 20 - 14 + 42352U, // 20 - 15 + 42336U, // 20 - 16 + 53928U, // 20 - 17 + 45728U, // 20 - 18 + 46416U, // 20 - 19 + 22184U, // 20 - 20 + 21920U, // 20 - 21 + 38352U, // 20 - 22 + 19176U, // 20 - 23 + 18896U, // 20 - 24 + 42192U, // 20 - 25 + 53928U, // 20 - 26 + 43680U, // 20 - 27 + 46416U, // 20 - 28 + 44368U, // 20 - 29 + 11680U, // 20 - 30 + 38352U, // 20 - 31 + 38256U, // 20 - 32 + 18864U, // 20 - 33 + 42168U, // 20 - 34 + 25776U, // 20 - 35 + 27288U, // 20 - 36 + 23200U, // 20 - 37 + 23376U, // 20 - 38 + 11112U, // 20 - 39 + 10976U, // 20 - 40 + 37744U, // 20 - 41 + 18800U, // 20 - 42 + 51552U, // 20 - 43 + 54448U, // 20 - 44 + 27280U, // 20 - 45 + 54944U, // 20 - 46 + 23248U, // 20 - 47 + 22224U, // 20 - 48 + 10976U, // 20 - 49 + 37608U, // 20 - 50 + 37584U, // 20 - 51 + 51536U, // 20 - 52 + 54440U, // 20 - 53 + 46368U, // 20 - 54 + 46736U, // 20 - 55 + 44448U, // 20 - 56 + 21968U, // 20 - 57 + 9688U, // 20 - 58 + 9648U, // 20 - 59 + 37552U, // 21 - 0 + 43352U, // 21 - 1 + 26960U, // 21 - 2 + 27808U, // 21 - 3 + 46416U, // 21 - 4 + 43872U, // 21 - 5 + 19888U, // 21 - 6 + 19312U, // 21 - 7 + 9584U, // 21 - 8 + 21176U, // 21 - 9 + 21168U, // 21 - 10 + 26960U, // 21 - 11 + 27304U, // 21 - 12 + 23200U, // 21 - 13 + 43856U, // 21 - 14 + 38608U, // 21 - 15 + 19168U, // 21 - 16 + 42352U, // 21 - 17 + 42208U, // 21 - 18 + 53920U, // 21 - 19 + 55632U, // 21 - 20 + 46416U, // 21 - 21 + 22176U, // 21 - 22 + 42704U, // 21 - 23 + 38352U, // 21 - 24 + 19176U, // 21 - 25 + 18864U, // 21 - 26 + 42192U, // 21 - 27 + 53864U, // 21 - 28 + 43680U, // 21 - 29 + 46416U, // 21 - 30 + 22184U, // 21 - 31 + 11680U, // 21 - 32 + 38320U, // 21 - 33 + 18872U, // 21 - 34 + 18864U, // 21 - 35 + 42168U, // 21 - 36 + 25776U, // 21 - 37 + 27280U, // 21 - 38 + 44368U, // 21 - 39 + 23376U, // 21 - 40 + 11104U, // 21 - 41 + 38256U, // 21 - 42 + 37744U, // 21 - 43 + 18800U, // 21 - 44 + 51552U, // 21 - 45 + 54432U, // 21 - 46 + 60048U, // 21 - 47 + 54928U, // 21 - 48 + 22224U, // 21 - 49 + 11112U, // 21 - 50 + 9952U, // 21 - 51 + 37600U, // 21 - 52 + 51560U, // 21 - 53 + 51536U, // 21 - 54 + 54440U, // 21 - 55 + 46240U, // 21 - 56 + 46480U, // 21 - 57 + 22224U, // 21 - 58 + 21936U, // 21 - 59 + 9680U, // 22 - 0 + 37592U, // 22 - 1 + 37552U, // 22 - 2 + 43352U, // 22 - 3 + 26960U, // 22 - 4 + 27808U, // 22 - 5 + 44368U, // 22 - 6 + 43856U, // 22 - 7 + 19376U, // 22 - 8 + 9656U, // 22 - 9 + 9584U, // 22 - 10 + 21168U, // 22 - 11 + 43352U, // 22 - 12 + 26960U, // 22 - 13 + 27304U, // 22 - 14 + 23200U, // 22 - 15 + 43856U, // 22 - 16 + 19304U, // 22 - 17 + 19168U, // 22 - 18 + 42352U, // 22 - 19 + 21096U, // 22 - 20 + 53856U, // 22 - 21 + 55632U, // 22 - 22 + 46416U, // 22 - 23 + 22176U, // 22 - 24 + 38608U, // 22 - 25 + 38352U, // 22 - 26 + 19152U, // 22 - 27 + 42200U, // 22 - 28 + 42192U, // 22 - 29 + 53848U, // 22 - 30 + 43680U, // 22 - 31 + 46416U, // 22 - 32 + 13736U, // 22 - 33 + 11168U, // 22 - 34 + 38320U, // 22 - 35 + 18872U, // 22 - 36 + 18800U, // 22 - 37 + 42160U, // 22 - 38 + 45656U, // 22 - 39 + 27216U, // 22 - 40 + 27984U, // 22 - 41 + 23376U, // 22 - 42 + 11104U, // 22 - 43 + 37744U, // 22 - 44 + 37616U, // 22 - 45 + 18800U, // 22 - 46 + 25776U, // 22 - 47 + 54432U, // 22 - 48 + 55888U, // 22 - 49 + 54928U, // 22 - 50 + 22224U, // 22 - 51 + 10984U, // 22 - 52 + 9952U, // 22 - 53 + 37600U, // 22 - 54 + 51560U, // 22 - 55 + 43344U, // 22 - 56 + 54432U, // 22 - 57 + 55888U, // 22 - 58 + 46416U, // 22 - 59 + 22224U, // 23 - 0 + 19888U, // 23 - 1 + 9680U, // 23 - 2 + 37592U, // 23 - 3 + 37552U, // 23 - 4 + 43344U, // 23 - 5 + 46248U, // 23 - 6 + 27296U, // 23 - 7 + 44368U, // 23 - 8 + 21928U, // 23 - 9 + 19376U, // 23 - 10 + 9648U, // 23 - 11 + 42352U, // 23 - 12 + 21168U, // 23 - 13 + 26960U, // 23 - 14 + 59728U, // 23 - 15 + 27296U, // 23 - 16 + 44368U, // 23 - 17 + 39760U, // 23 - 18 + 19304U, // 23 - 19 + 19168U, // 23 - 20 + 42224U, // 23 - 21 + 21096U, // 23 - 22 + 53856U, // 23 - 23 + 54608U, // 23 - 24 + 23208U, // 23 - 25 + 22176U, // 23 - 26 + 38608U, // 23 - 27 + 19176U, // 23 - 28 + 18896U, // 23 - 29 + 42200U, // 23 - 30 + 42192U, // 23 - 31 + 45648U, // 23 - 32 + 54568U, // 23 - 33 + 44368U, // 23 - 34 + 13728U, // 23 - 35 + 38352U, // 23 - 36 + 38320U, // 23 - 37 + 18872U, // 23 - 38 + 18800U, // 23 - 39 + 42160U, // 23 - 40 + 43608U, // 23 - 41 + 27216U, // 23 - 42 + 27968U, // 23 - 43 + 44456U, // 23 - 44 + 11104U, // 23 - 45 + 37744U, // 23 - 46 + 18808U, // 23 - 47 + 18800U, // 23 - 48 + 25776U, // 23 - 49 + 54432U, // 23 - 50 + 55888U, // 23 - 51 + 27464U, // 23 - 52 + 22224U, // 23 - 53 + 10976U, // 23 - 54 + 37616U, // 23 - 55 + 37600U, // 23 - 56 + 51560U, // 23 - 57 + 43344U, // 23 - 58 + 54432U, // 23 - 59 + 55888U, // 24 - 0 + 46416U, // 24 - 1 + 22176U, // 24 - 2 + 42712U, // 24 - 3 + 9680U, // 24 - 4 + 37584U, // 24 - 5 + 43352U, // 24 - 6 + 43344U, // 24 - 7 + 46248U, // 24 - 8 + 27296U, // 24 - 9 + 44368U, // 24 - 10 + 21928U, // 24 - 11 + 19360U, // 24 - 12 + 42416U, // 24 - 13 + 21176U, // 24 - 14 + 21168U, // 24 - 15 + 26960U, // 24 - 16 + 58704U, // 24 - 17 + 27296U, // 24 - 18 + 43856U, // 24 - 19 + 39760U, // 24 - 20 + 19296U, // 24 - 21 + 42352U, // 24 - 22 + 42208U, // 24 - 23 + 53856U, // 24 - 24 + 59696U, // 24 - 25 + 54608U, // 24 - 26 + 23208U, // 24 - 27 + 22176U, // 24 - 28 + 38608U, // 24 - 29 + 19176U, // 24 - 30 + 18896U, // 24 - 31 + 42192U, // 24 - 32 + 53864U, // 24 - 33 + 45648U, // 24 - 34 + 46376U, // 24 - 35 + 44352U, // 24 - 36 + 44448U, // 24 - 37 + 38352U, // 24 - 38 + 38320U, // 24 - 39 + 18864U, // 24 - 40 + 42168U, // 24 - 41 + 42160U, // 24 - 42 + 43600U, // 24 - 43 + 46376U, // 24 - 44 + 27456U, // 24 - 45 + 44456U, // 24 - 46 + 11104U, // 24 - 47 + 37744U, // 24 - 48 + 18808U, // 24 - 49 + 18800U, // 24 - 50 + 21680U, // 24 - 51 + 27216U, // 24 - 52 + 55888U, // 24 - 53 + 23208U, // 24 - 54 + 22208U, // 24 - 55 + 42720U, // 24 - 56 + 37608U, // 24 - 57 + 37600U, // 24 - 58 + 51552U, // 24 - 59 + 54440U, // 25 - 0 + 54432U, // 25 - 1 + 54608U, // 25 - 2 + 23208U, // 25 - 3 + 22176U, // 25 - 4 + 42712U, // 25 - 5 + 9680U, // 25 - 6 + 37584U, // 25 - 7 + 43352U, // 25 - 8 + 43344U, // 25 - 9 + 46240U, // 25 - 10 + 46416U, // 25 - 11 + 44368U, // 25 - 12 + 21928U, // 25 - 13 + 19360U, // 25 - 14 + 42416U, // 25 - 15 + 21176U, // 25 - 16 + 21104U, // 25 - 17 + 26928U, // 25 - 18 + 27304U, // 25 - 19 + 27296U, // 25 - 20 + 43856U, // 25 - 21 + 19368U, // 25 - 22 + 19296U, // 25 - 23 + 42352U, // 25 - 24 + 41696U, // 25 - 25 + 53856U, // 25 - 26 + 59696U, // 25 - 27 + 54560U, // 25 - 28 + 55968U, // 25 - 29 + 23376U, // 25 - 30 + 22224U, // 25 - 31 + 19168U, // 25 - 32 + 41704U, // 25 - 33 + 41680U, // 25 - 34 + 53848U, // 25 - 35 + 43600U, // 25 - 36 + 46368U, // 25 - 37 + 54944U, // 25 - 38 + 44448U, // 25 - 39 + 21968U, // 25 - 40 + 18904U, // 25 - 41 + 17840U, // 25 - 42 + 41656U, // 25 - 43 + 42160U, // 25 - 44 + 43600U, // 25 - 45 + 46376U, // 25 - 46 + 27456U, // 25 - 47 + 44384U, // 25 - 48 + 21936U, // 25 - 49 + 37744U, // 25 - 50 + 17784U, // 25 - 51 + 17776U, // 25 - 52 + 21680U, // 25 - 53 + 27216U, // 25 - 54 + 55888U, // 25 - 55 + 23200U, // 25 - 56 + 43872U, // 25 - 57 + 42720U, // 25 - 58 + 37600U, // 25 - 59 + 50544U, // 26 - 0 + 50528U, // 26 - 1 + 54440U, // 26 - 2 + 54432U, // 26 - 3 + 54608U, // 26 - 4 + 23208U, // 26 - 5 + 21920U, // 26 - 6 + 42448U, // 26 - 7 + 21224U, // 26 - 8 + 21200U, // 26 - 9 + 43352U, // 26 - 10 + 42320U, // 26 - 11 + 45728U, // 26 - 12 + 46416U, // 26 - 13 + 44368U, // 26 - 14 + 19872U, // 26 - 15 + 42448U, // 26 - 16 + 42416U, // 26 - 17 + 20912U, // 26 - 18 + 43192U, // 26 - 19 + 25904U, // 26 - 20 + 27288U, // 26 - 21 + 23200U, // 26 - 22 + 43856U, // 26 - 23 + 11112U, // 26 - 24 + 11104U, // 26 - 25 + 41840U, // 26 - 26 + 20848U, // 26 - 27 + 53600U, // 26 - 28 + 58672U, // 26 - 29 + 54560U, // 26 - 30 + 55968U, // 26 - 31 + 23376U, // 26 - 32 + 22224U, // 26 - 33 + 10976U, // 26 - 34 + 41704U, // 26 - 35 + 41680U, // 26 - 36 + 53584U, // 26 - 37 + 54568U, // 26 - 38 + 46368U, // 26 - 39 + 54928U, // 26 - 40 + 44448U, // 26 - 41 + 21968U, // 26 - 42 + 10712U, // 26 - 43 + 17840U, // 26 - 44 + 41648U, // 26 - 45 + 43352U, // 26 - 46 + 43344U, // 26 - 47 + 46376U, // 26 - 48 + 27424U, // 26 - 49 + 44384U, // 26 - 50 + 21936U, // 26 - 51 + 19312U, // 26 - 52 + 17776U, // 26 - 53 + 25272U, // 26 - 54 + 21168U, // 26 - 55 + 26960U, // 26 - 56 + 27816U, // 26 - 57 + 23200U, // 26 - 58 + 43856U, // 26 - 59 + 42720U, // 27 - 0 + 19168U, // 27 - 1 + 42352U, // 27 - 2 + 42336U, // 27 - 3 + 53920U, // 27 - 4 + 59728U, // 27 - 5 + 54608U, // 27 - 6 + 22184U, // 27 - 7 + 21920U, // 27 - 8 + 38352U, // 27 - 9 + 19176U, // 27 - 10 + 18896U, // 27 - 11 + 42192U, // 27 - 12 + 53928U, // 27 - 13 + 45728U, // 27 - 14 + 46416U, // 27 - 15 + 22184U, // 27 - 16 + 11680U, // 27 - 17 + 38320U, // 27 - 18 + 38256U, // 27 - 19 + 18864U, // 27 - 20 + 42168U, // 27 - 21 + 25776U, // 27 - 22 + 27280U, // 27 - 23 + 44368U, // 27 - 24 + 27472U, // 27 - 25 + 11104U, // 27 - 26 + 38320U, // 27 - 27 + 37744U, // 27 - 28 + 18800U, // 27 - 29 + 51552U, // 27 - 30 + 58544U, // 27 - 31 + 27280U, // 27 - 32 + 55952U, // 27 - 33 + 23248U, // 27 - 34 + 11112U, // 27 - 35 + 10976U, // 27 - 36 + 37608U, // 27 - 37 + 37584U, // 27 - 38 + 51536U, // 27 - 39 + 54440U, // 27 - 40 + 46368U, // 27 - 41 + 46736U, // 27 - 42 + 22224U, // 27 - 43 + 21936U, // 27 - 44 + 9680U, // 27 - 45 + 37592U, // 27 - 46 + 37552U, // 27 - 47 + 43352U, // 27 - 48 + 26960U, // 27 - 49 + 29856U, // 27 - 50 + 46416U, // 27 - 51 + 43872U, // 27 - 52 + 21936U, // 27 - 53 + 9656U, // 27 - 54 + 9584U, // 27 - 55 + 21176U, // 27 - 56 + 21168U, // 27 - 57 + 26960U, // 27 - 58 + 27304U, // 27 - 59 + 23200U, // 28 - 0 + 43856U, // 28 - 1 + 19304U, // 28 - 2 + 19168U, // 28 - 3 + 42352U, // 28 - 4 + 21104U, // 28 - 5 + 53920U, // 28 - 6 + 55632U, // 28 - 7 + 46416U, // 28 - 8 + 22176U, // 28 - 9 + 42704U, // 28 - 10 + 38352U, // 28 - 11 + 19168U, // 28 - 12 + 42200U, // 28 - 13 + 42192U, // 28 - 14 + 53864U, // 28 - 15 + 43680U, // 28 - 16 + 46416U, // 28 - 17 + 22184U, // 28 - 18 + 11680U, // 28 - 19 + 38320U, // 28 - 20 + 18872U, // 28 - 21 + 18864U, // 28 - 22 + 42168U, // 28 - 23 + 25776U, // 28 - 24 + 27280U, // 28 - 25 + 44368U, // 28 - 26 + 23376U, // 28 - 27 + 11104U, // 28 - 28 + 38256U, // 28 - 29 + 37744U, // 28 - 30 + 18800U, // 28 - 31 + 25776U, // 28 - 32 + 54432U, // 28 - 33 + 59984U, // 28 - 34 + 54928U, // 28 - 35 + 23248U, // 28 - 36 + 11112U, // 28 - 37 + 9952U, // 28 - 38 + 37600U, // 28 - 39 + 51560U, // 28 - 40 + 51536U, // 28 - 41 + 54440U, // 28 - 42 + 46240U, // 28 - 43 + 46480U, // 28 - 44 + 22224U, // 28 - 45 + 21936U, // 28 - 46 + 9680U, // 28 - 47 + 37592U, // 28 - 48 + 37552U, // 28 - 49 + 43344U, // 28 - 50 + 46248U, // 28 - 51 + 27808U, // 28 - 52 + 44368U, // 28 - 53 + 43856U, // 28 - 54 + 19376U, // 28 - 55 + 9656U, // 28 - 56 + 9584U, // 28 - 57 + 21168U, // 28 - 58 + 43352U, // 28 - 59 + 26960U, // 29 - 0 + 27296U, // 29 - 1 + 44368U, // 29 - 2 + 43856U, // 29 - 3 + 19304U, // 29 - 4 + 19168U, // 29 - 5 + 42352U, // 29 - 6 + 21096U, // 29 - 7 + 53856U, // 29 - 8 + 55632U, // 29 - 9 + 23208U, // 29 - 10 + 22176U, // 29 - 11 + 38608U, // 29 - 12 + 38352U, // 29 - 13 + 19168U, // 29 - 14 + 42200U, // 29 - 15 + 42192U, // 29 - 16 + 53840U, // 29 - 17 + 54600U, // 29 - 18 + 46416U, // 29 - 19 + 13728U, // 29 - 20 + 38608U, // 29 - 21 + 38320U, // 29 - 22 + 18872U, // 29 - 23 + 18864U, // 29 - 24 + 42160U, // 29 - 25 + 45656U, // 29 - 26 + 27216U, // 29 - 27 + 27968U, // 29 - 28 + 44456U, // 29 - 29 + 11104U, // 29 - 30 + 38256U, // 29 - 31 + 37616U, // 29 - 32 + 18800U, // 29 - 33 + 25776U, // 29 - 34 + 54432U, // 29 - 35 + 59984U, // 29 - 36 + 27464U, // 29 - 37 + 22224U, // 29 - 38 + 11104U, // 29 - 39 + 37744U, // 29 - 40 + 37600U, // 29 - 41 + 51560U, // 29 - 42 + 43344U, // 29 - 43 + 54432U, // 29 - 44 + 55888U, // 29 - 45 + 46416U, // 29 - 46 + 22192U, // 29 - 47 + 9944U, // 29 - 48 + 9680U, // 29 - 49 + 37592U, // 29 - 50 + 37552U, // 29 - 51 + 43344U, // 29 - 52 + 46248U, // 29 - 53 + 27296U, // 29 - 54 + 44368U, // 29 - 55 + 21928U, // 29 - 56 + 19376U, // 29 - 57 + 9648U, // 29 - 58 + 21176U, // 29 - 59 + 21168U, // 30 - 0 + 26960U, // 30 - 1 + 59728U, // 30 - 2 + 27296U, // 30 - 3 + 44368U, // 30 - 4 + 39760U, // 30 - 5 + 19296U, // 30 - 6 + 42352U, // 30 - 7 + 42224U, // 30 - 8 + 21096U, // 30 - 9 + 53856U, // 30 - 10 + 54608U, // 30 - 11 + 23208U, // 30 - 12 + 22176U, // 30 - 13 + 38608U, // 30 - 14 + 19176U, // 30 - 15 + 19152U, // 30 - 16 + 42192U, // 30 - 17 + 53864U, // 30 - 18 + 45648U, // 30 - 19 + 54568U, // 30 - 20 + 46400U, // 30 - 21 + 46496U, // 30 - 22 + 38352U, // 30 - 23 + 38320U, // 30 - 24 + 18864U, // 30 - 25 + 42168U, // 30 - 26 + 42160U, // 30 - 27 + 43608U, // 30 - 28 + 27216U, // 30 - 29 + 27968U, // 30 - 30 + 44456U, // 30 - 31 + 11104U, // 30 - 32 + 37744U, // 30 - 33 + 18808U, // 30 - 34 + 18800U, // 30 - 35 + 25776U, // 30 - 36 + 27216U, // 30 - 37 + 55888U, // 30 - 38 + 27464U, // 30 - 39 + 22208U, // 30 - 40 + 43744U, // 30 - 41 + 37616U, // 30 - 42 + 37600U, // 30 - 43 + 51552U, // 30 - 44 + 54440U, // 30 - 45 + 54432U, // 30 - 46 + 55888U, // 30 - 47 + 46416U, // 30 - 48 + 22176U, // 30 - 49 + 42712U, // 30 - 50 + 9680U, // 30 - 51 + 37584U, // 30 - 52 + 43352U, // 30 - 53 + 43344U, // 30 - 54 + 46240U, // 30 - 55 + 46416U, // 30 - 56 + 44368U, // 30 - 57 + 21928U, // 30 - 58 + 19360U, // 30 - 59 + 42416U, // 31 - 0 + 21176U, // 31 - 1 + 21104U, // 31 - 2 + 26928U, // 31 - 3 + 29864U, // 31 - 4 + 27296U, // 31 - 5 + 43856U, // 31 - 6 + 39760U, // 31 - 7 + 19296U, // 31 - 8 + 42352U, // 31 - 9 + 42224U, // 31 - 10 + 21088U, // 31 - 11 + 59696U, // 31 - 12 + 54576U, // 31 - 13 + 23200U, // 31 - 14 + 27472U, // 31 - 15 + 38608U, // 31 - 16 + 19176U, // 31 - 17 + 18896U, // 31 - 18 + 42192U, // 31 - 19 + 53848U, // 31 - 20 + 45648U, // 31 - 21 + 46368U, // 31 - 22 + 54944U, // 31 - 23 + 46496U, // 31 - 24 + 21968U, // 31 - 25 + 38320U, // 31 - 26 + 18864U, // 31 - 27 + 42168U, // 31 - 28 + 42160U, // 31 - 29 + 43600U, // 31 - 30 + 46376U, // 31 - 31 + 27968U, // 31 - 32 + 44448U, // 31 - 33 + 21936U, // 31 - 34 + 37744U, // 31 - 35 + 18808U, // 31 - 36 + 18800U, // 31 - 37 + 21680U, // 31 - 38 + 27216U, // 31 - 39 + 55888U, // 31 - 40 + 23200U, // 31 - 41 + 43872U, // 31 - 42 + 43744U, // 31 - 43 + 37608U, // 31 - 44 + 37600U, // 31 - 45 + 51552U, // 31 - 46 + 54440U, // 31 - 47 + 54432U, // 31 - 48 + 54608U, // 31 - 49 + 23208U, // 31 - 50 + 22176U, // 31 - 51 + 42704U, // 31 - 52 + 21224U, // 31 - 53 + 37584U, // 31 - 54 + 43352U, // 31 - 55 + 43344U, // 31 - 56 + 46240U, // 31 - 57 + 46416U, // 31 - 58 + 44368U, // 31 - 59 + 21920U, // 32 - 0 + 42448U, // 32 - 1 + 42416U, // 32 - 2 + 21176U, // 32 - 3 + 21104U, // 32 - 4 + 26928U, // 32 - 5 + 27288U, // 32 - 6 + 27296U, // 32 - 7 + 43856U, // 32 - 8 + 19880U, // 32 - 9 + 19296U, // 32 - 10 + 42352U, // 32 - 11 + 20848U, // 32 - 12 + 53600U, // 32 - 13 + 59696U, // 32 - 14 + 54560U, // 32 - 15 + 55968U, // 32 - 16 + 23376U, // 32 - 17 + 22224U, // 32 - 18 + 19168U, // 32 - 19 + 42216U, // 32 - 20 + 41680U, // 32 - 21 + 53592U, // 32 - 22 + 43600U, // 32 - 23 + 46368U, // 32 - 24 + 54944U, // 32 - 25 + 44448U, // 32 - 26 + 21968U, // 32 - 27 + 18904U, // 32 - 28 + 17840U, // 32 - 29 + 41648U, // 32 - 30 + 45400U, // 32 - 31 + 43600U, // 32 - 32 + 46376U, // 32 - 33 + 27424U, // 32 - 34 + 44384U, // 32 - 35 + 21936U, // 32 - 36 + 37744U, // 32 - 37 + 17776U, // 32 - 38 + 25272U, // 32 - 39 + 21168U, // 32 - 40 + 27216U, // 32 - 41 + 55888U, // 32 - 42 + 23200U, // 32 - 43 + 43856U, // 32 - 44 + 42720U, // 32 - 45 + 21216U, // 32 - 46 + 51568U, // 32 - 47 + 42336U, // 32 - 48 + 53920U, // 32 - 49 + 59728U, // 32 - 50 + 54608U, // 32 - 51 + 23208U, // 32 - 52 + 22176U, // 32 - 53 + 42704U, // 32 - 54 + 19176U, // 32 - 55 + 21200U, // 32 - 56 + 43216U, // 32 - 57 + 53928U, // 32 - 58 + 45728U, // 32 - 59 + 46416U, // 33 - 0 + 44368U, // 33 - 1 + 19872U, // 33 - 2 + 38352U, // 33 - 3 + 38256U, // 33 - 4 + 20912U, // 33 - 5 + 43192U, // 33 - 6 + 25904U, // 33 - 7 + 27280U, // 33 - 8 + 46416U, // 33 - 9 + 43856U, // 33 - 10 + 11112U, // 33 - 11 + 11104U, // 33 - 12 + 42352U, // 33 - 13 + 20848U, // 33 - 14 + 53600U, // 33 - 15 + 58544U, // 33 - 16 + 27280U, // 33 - 17 + 55968U, // 33 - 18 + 23376U, // 33 - 19 + 22224U, // 33 - 20 + 10976U, // 33 - 21 + 41704U, // 33 - 22 + 41680U, // 33 - 23 + 53584U, // 33 - 24 + 54440U, // 33 - 25 + 46368U, // 33 - 26 + 54928U, // 33 - 27 + 22224U, // 33 - 28 + 21968U, // 33 - 29 + 9688U, // 33 - 30 + 17840U, // 33 - 31 + 41648U, // 33 - 32 + 43352U, // 33 - 33 + 43344U, // 33 - 34 + 46240U, // 33 - 35 + 46480U, // 33 - 36 + 44384U, // 33 - 37 + 21936U, // 33 - 38 + 9656U, // 33 - 39 + 17776U, // 33 - 40 + 21176U, // 33 - 41 + 21168U, // 33 - 42 + 26960U, // 33 - 43 + 27816U, // 33 - 44 + 23200U, // 33 - 45 + 43856U, // 33 - 46 + 21352U, // 33 - 47 + 19168U, // 33 - 48 + 42352U, // 33 - 49 + 42336U, // 33 - 50 + 53920U, // 33 - 51 + 59728U, // 33 - 52 + 54608U, // 33 - 53 + 22176U, // 33 - 54 + 43728U, // 33 - 55 + 38352U, // 33 - 56 + 19168U, // 33 - 57 + 42328U, // 33 - 58 + 42192U, // 33 - 59 + 53864U, // 34 - 0 + 45728U, // 34 - 1 + 46416U, // 34 - 2 + 22184U, // 34 - 3 + 11680U, // 34 - 4 + 38320U, // 34 - 5 + 19128U, // 34 - 6 + 18864U, // 34 - 7 + 42168U, // 34 - 8 + 25776U, // 34 - 9 + 27280U, // 34 - 10 + 44368U, // 34 - 11 + 27472U, // 34 - 12 + 11104U, // 34 - 13 + 38320U, // 34 - 14 + 37744U, // 34 - 15 + 18800U, // 34 - 16 + 25776U, // 34 - 17 + 54448U, // 34 - 18 + 27280U, // 34 - 19 + 55952U, // 34 - 20 + 23248U, // 34 - 21 + 11112U, // 34 - 22 + 10976U, // 34 - 23 + 37600U, // 34 - 24 + 51560U, // 34 - 25 + 51536U, // 34 - 26 + 54440U, // 34 - 27 + 46240U, // 34 - 28 + 46736U, // 34 - 29 + 22224U, // 34 - 30 + 21936U, // 34 - 31 + 9680U, // 34 - 32 + 37592U, // 34 - 33 + 37552U, // 34 - 34 + 43352U, // 34 - 35 + 26960U, // 34 - 36 + 46240U, // 34 - 37 + 46416U, // 34 - 38 + 43856U, // 34 - 39 + 21936U, // 34 - 40 + 9656U, // 34 - 41 + 9584U, // 34 - 42 + 21168U, // 34 - 43 + 43352U, // 34 - 44 + 26960U, // 34 - 45 + 27304U, // 34 - 46 + 23200U, // 34 - 47 + 43856U, // 34 - 48 + 19304U, // 34 - 49 + 19168U, // 34 - 50 + 42352U, // 34 - 51 + 21096U, // 34 - 52 + 53856U, // 34 - 53 + 55632U, // 34 - 54 + 46416U, // 34 - 55 + 22176U, // 34 - 56 + 39632U, // 34 - 57 + 38352U, // 34 - 58 + 19168U, // 34 - 59 + 42200U, // 35 - 0 + 42192U, // 35 - 1 + 53840U, // 35 - 2 + 54600U, // 35 - 3 + 46416U, // 35 - 4 + 22184U, // 35 - 5 + 11680U, // 35 - 6 + 38320U, // 35 - 7 + 18872U, // 35 - 8 + 18864U, // 35 - 9 + 42160U, // 35 - 10 + 45656U, // 35 - 11 + 27216U, // 35 - 12 + 44360U, // 35 - 13 + 23376U, // 35 - 14 + 11104U, // 35 - 15 + 38256U, // 35 - 16 + 37744U, // 35 - 17 + 18800U, // 35 - 18 + 25776U, // 35 - 19 + 54432U, // 35 - 20 + 59984U, // 35 - 21 + 27464U, // 35 - 22 + 23248U, // 35 - 23 + 11112U, // 35 - 24 + 9952U, // 35 - 25 + 37600U, // 35 - 26 + 51560U, // 35 - 27 + 51536U, // 35 - 28 + 54432U, // 35 - 29 + 55888U, // 35 - 30 + 46416U, // 35 - 31 + 22192U, // 35 - 32 + 10968U, // 35 - 33 + 9680U, // 35 - 34 + 37592U, // 35 - 35 + 37552U, // 35 - 36 + 43344U, // 35 - 37 + 46248U, // 35 - 38 + 27808U, // 35 - 39 + 44368U, // 35 - 40 + 21928U, // 35 - 41 + 19376U, // 35 - 42 + 9648U, // 35 - 43 + 42352U, // 35 - 44 + 21168U, // 35 - 45 + 43344U, // 35 - 46 + 59728U, // 35 - 47 + 27296U, // 35 - 48 + 44368U, // 35 - 49 + 43856U, // 35 - 50 + 19296U, // 35 - 51 + 42352U, // 35 - 52 + 42352U, // 35 - 53 + 21096U, // 35 - 54 + 53856U, // 35 - 55 + 55632U, // 35 - 56 + 23208U, // 35 - 57 + 22176U, // 35 - 58 + 38608U, // 35 - 59 + 19176U, // 36 - 0 + 19168U, // 36 - 1 + 42200U, // 36 - 2 + 42192U, // 36 - 3 + 53840U, // 36 - 4 + 54568U, // 36 - 5 + 46400U, // 36 - 6 + 46752U, // 36 - 7 + 38608U, // 36 - 8 + 38320U, // 36 - 9 + 18864U, // 36 - 10 + 42168U, // 36 - 11 + 42160U, // 36 - 12 + 45656U, // 36 - 13 + 27216U, // 36 - 14 + 27968U, // 36 - 15 + 44456U, // 36 - 16 + 11104U, // 36 - 17 + 38256U, // 36 - 18 + 18808U, // 36 - 19 + 18800U, // 36 - 20 + 25776U, // 36 - 21 + 54432U, // 36 - 22 + 59984U, // 36 - 23 + 27464U, // 36 - 24 + 22224U, // 36 - 25 + 11104U, // 36 - 26 + 37744U, // 36 - 27 + 37600U, // 36 - 28 + 51552U, // 36 - 29 + 54440U, // 36 - 30 + 54432U, // 36 - 31 + 55888U, // 36 - 32 + 46416U, // 36 - 33 + 22176U, // 36 - 34 + 42712U, // 36 - 35 + 9680U, // 36 - 36 + 37584U, // 36 - 37 + 51544U, // 36 - 38 + 43344U, // 36 - 39 + 46248U, // 36 - 40 + 27296U, // 36 - 41 + 44368U, // 36 - 42 + 21928U, // 36 - 43 + 19360U, // 36 - 44 + 42416U, // 36 - 45 + 21176U, // 36 - 46 + 21168U, // 36 - 47 + 26928U, // 36 - 48 + 29864U, // 36 - 49 + 27296U, // 36 - 50 + 44368U, // 36 - 51 + 39760U, // 36 - 52 + 19296U, // 36 - 53 + 42352U, // 36 - 54 + 42224U, // 36 - 55 + 21088U, // 36 - 56 + 59696U, // 36 - 57 + 54576U, // 36 - 58 + 23208U, // 36 - 59 + 22176U, // 37 - 0 + 38608U, // 37 - 1 + 19176U, // 37 - 2 + 19152U, // 37 - 3 + 42192U, // 37 - 4 + 53864U, // 37 - 5 + 45648U, // 37 - 6 + 54560U, // 37 - 7 + 55968U, // 37 - 8 + 46496U, // 37 - 9 + 38352U, // 37 - 10 + 38320U, // 37 - 11 + 18864U, // 37 - 12 + 42168U, // 37 - 13 + 42160U, // 37 - 14 + 43600U, // 37 - 15 + 46376U, // 37 - 16 + 27968U, // 37 - 17 + 44448U, // 37 - 18 + 43872U, // 37 - 19 + 37744U, // 37 - 20 + 18808U, // 37 - 21 + 18800U, // 37 - 22 + 25776U, // 37 - 23 + 27216U, // 37 - 24 + 55888U, // 37 - 25 + 27424U, // 37 - 26 + 43872U, // 37 - 27 + 43744U, // 37 - 28 + 37608U, // 37 - 29 + 37600U, // 37 - 30 + 51552U, // 37 - 31 + 54440U, // 37 - 32 + 54432U, // 37 - 33 + 55888U, // 37 - 34 + 23208U, // 37 - 35 + 22176U, // 37 - 36 + 42704U, // 37 - 37 + 42448U, // 37 - 38 + 37584U, // 37 - 39 + 43352U, // 37 - 40 + 43344U, // 37 - 41 + 46240U, // 37 - 42 + 46416U, // 37 - 43 + 44368U, // 37 - 44 + 21920U, // 37 - 45 + 42448U, // 37 - 46 + 42416U, // 37 - 47 + 21176U, // 37 - 48 + 21104U, // 37 - 49 + 26928U, // 37 - 50 + 29864U, // 37 - 51 + 27296U, // 37 - 52 + 44368U, // 37 - 53 + 19880U, // 37 - 54 + 19296U, // 37 - 55 + 42352U, // 37 - 56 + 42208U, // 37 - 57 + 53856U, // 37 - 58 + 59696U, // 37 - 59 + 54560U, // 38 - 0 + 55968U, // 38 - 1 + 23376U, // 38 - 2 + 22224U, // 38 - 3 + 19168U, // 38 - 4 + 42216U, // 38 - 5 + 42192U, // 38 - 6 + 53848U, // 38 - 7 + 43600U, // 38 - 8 + 46368U, // 38 - 9 + 54944U, // 38 - 10 + 46496U, // 38 - 11 + 21968U, // 38 - 12 + 19160U, // 38 - 13 + 18864U, // 38 - 14 + 42168U, // 38 - 15 + 42160U, // 38 - 16 + 43600U, // 38 - 17 + 46376U, // 38 - 18 + 27936U, // 38 - 19 + 44384U, // 38 - 20 + 21936U, // 38 - 21 + 37744U, // 38 - 22 + 18800U, // 38 - 23 + 42168U, // 38 - 24 + 25776U, // 38 - 25 + 27216U, // 38 - 26 + 55888U, // 38 - 27 + 23200U, // 38 - 28 + 43856U, // 38 - 29 + 43744U, // 38 - 30 + 21216U, // 38 - 31 + 51568U, // 38 - 32 + 51552U, // 38 - 33 + 54440U, // 38 - 34 + 54432U, // 38 - 35 + 54608U, // 38 - 36 + 23208U, // 38 - 37 + 22176U, // 38 - 38 + 42704U, // 38 - 39 + 21224U, // 38 - 40 + 21200U, // 38 - 41 + 43344U, // 38 - 42 + 54440U, // 38 - 43 + 45728U, // 38 - 44 + 46416U, // 38 - 45 + 44368U, // 38 - 46 + 19872U, // 38 - 47 + 42448U, // 38 - 48 + 42416U, // 38 - 49 + 21168U, // 38 - 50 + 43192U, // 38 - 51 + 26928U, // 38 - 52 + 27288U, // 38 - 53 + 27296U, // 38 - 54 + 43856U, // 38 - 55 + 19880U, // 38 - 56 + 19296U, // 38 - 57 + 42352U, // 38 - 58 + 20848U, // 38 - 59 + 53600U, // 39 - 0 + 59696U, // 39 - 1 + 27280U, // 39 - 2 + 55968U, // 39 - 3 + 23376U, // 39 - 4 + 22224U, // 39 - 5 + 19168U, // 39 - 6 + 42216U, // 39 - 7 + 41680U, // 39 - 8 + 53584U, // 39 - 9 + 54440U, // 39 - 10 + 46368U, // 39 - 11 + 54928U, // 39 - 12 + 44448U, // 39 - 13 + 21968U, // 39 - 14 + 10968U, // 39 - 15 + 17840U, // 39 - 16 + 41648U, // 39 - 17 + 45400U, // 39 - 18 + 43344U, // 39 - 19 + 46368U, // 39 - 20 + 46480U, // 39 - 21 + 44384U, // 39 - 22 + 21936U, // 39 - 23 + 21360U, // 39 - 24 + 17776U, // 39 - 25 + 25272U, // 39 - 26 + 21168U, // 39 - 27 + 26960U, // 39 - 28 + 27816U, // 39 - 29 + 23200U, // 39 - 30 + 43856U, // 39 - 31 + 42704U, // 39 - 32 + 19168U, // 39 - 33 + 42352U, // 39 - 34 + 42336U, // 39 - 35 + 53920U, // 39 - 36 + 59728U, // 39 - 37 + 54608U, // 39 - 38 + 23200U, // 39 - 39 + 43856U, // 39 - 40 + 42704U, // 39 - 41 + 19176U, // 39 - 42 + 19120U, // 39 - 43 + 43216U, // 39 - 44 + 53864U, // 39 - 45 + 45728U, // 39 - 46 + 46416U, // 39 - 47 + 22184U, // 39 - 48 + 19872U, // 39 - 49 + 38320U, // 39 - 50 + 19128U, // 39 - 51 + 18864U, // 39 - 52 + 43192U, // 39 - 53 + 25776U, // 39 - 54 + 27280U, // 39 - 55 + 46416U, // 39 - 56 + 27472U, // 39 - 57 + 11168U, // 39 - 58 + 38320U, // 39 - 59 + 37744U, // 40 - 0 + 20848U, // 40 - 1 + 53600U, // 40 - 2 + 58544U, // 40 - 3 + 27280U, // 40 - 4 + 55952U, // 40 - 5 + 23376U, // 40 - 6 + 11112U, // 40 - 7 + 10976U, // 40 - 8 + 37600U, // 40 - 9 + 53608U, // 40 - 10 + 51536U, // 40 - 11 + 54440U, // 40 - 12 + 46240U, // 40 - 13 + 46736U, // 40 - 14 + 22224U, // 40 - 15 + 21936U, // 40 - 16 + 9680U, // 40 - 17 + 41688U, // 40 - 18 + 37552U, // 40 - 19 + 43352U, // 40 - 20 + 43344U, // 40 - 21 + 46240U, // 40 - 22 + 46416U, // 40 - 23 + 44368U, // 40 - 24 + 21936U, // 40 - 25 + 9656U, // 40 - 26 + 9584U, // 40 - 27 + 21176U, // 40 - 28 + 21168U, // 40 - 29 + 26960U, // 40 - 30 + 27816U, // 40 - 31 + 23200U, // 40 - 32 + 43856U, // 40 - 33 + 21352U, // 40 - 34 + 19168U, // 40 - 35 + 42352U, // 40 - 36 + 21168U, // 40 - 37 + 53856U, // 40 - 38 + 59728U, // 40 - 39 + 54608U, // 40 - 40 + 23200U, // 40 - 41 + 43728U, // 40 - 42 + 38352U, // 40 - 43 + 19168U, // 40 - 44 + 42200U, // 40 - 45 + 42192U, // 40 - 46 + 53848U, // 40 - 47 + 45712U, // 40 - 48 + 46416U, // 40 - 49 + 22184U, // 40 - 50 + 11680U, // 40 - 51 + 38320U, // 40 - 52 + 19128U, // 40 - 53 + 18864U, // 40 - 54 + 42160U, // 40 - 55 + 45656U, // 40 - 56 + 27216U, // 40 - 57 + 44360U, // 40 - 58 + 27472U, // 40 - 59 + 11104U, // 41 - 0 + 38320U, // 41 - 1 + 37744U, // 41 - 2 + 18800U, // 41 - 3 + 25776U, // 41 - 4 + 54432U, // 41 - 5 + 59984U, // 41 - 6 + 55952U, // 41 - 7 + 23248U, // 41 - 8 + 11112U, // 41 - 9 + 10976U, // 41 - 10 + 37600U, // 41 - 11 + 51560U, // 41 - 12 + 51536U, // 41 - 13 + 54432U, // 41 - 14 + 55888U, // 41 - 15 + 46672U, // 41 - 16 + 22224U, // 41 - 17 + 21936U, // 41 - 18 + 9680U, // 41 - 19 + 37592U, // 41 - 20 + 37552U, // 41 - 21 + 43344U, // 41 - 22 + 46248U, // 41 - 23 + 46240U, // 41 - 24 + 46416U, // 41 - 25 + 22184U, // 41 - 26 + 21936U, // 41 - 27 + 9656U, // 41 - 28 + 9584U, // 41 - 29 + 21168U, // 41 - 30 + 43344U, // 41 - 31 + 59728U, // 41 - 32 + 27296U, // 41 - 33 + 44368U, // 41 - 34 + 43856U, // 41 - 35 + 19304U, // 41 - 36 + 19168U, // 41 - 37 + 42352U, // 41 - 38 + 21096U, // 41 - 39 + 53856U, // 41 - 40 + 55632U, // 41 - 41 + 23208U, // 41 - 42 + 22176U, // 41 - 43 + 39632U, // 41 - 44 + 19176U, // 41 - 45 + 19168U, // 41 - 46 + 42200U, // 41 - 47 + 42192U, // 41 - 48 + 53840U, // 41 - 49 + 54568U, // 41 - 50 + 46400U, // 41 - 51 + 54944U, // 41 - 52 + 38608U, // 41 - 53 + 38320U, // 41 - 54 + 18872U, // 41 - 55 + 18800U, // 41 - 56 + 42160U, // 41 - 57 + 45656U, // 41 - 58 + 27216U, // 41 - 59 + 27968U, // 42 - 0 + 44456U, // 42 - 1 + 11104U, // 42 - 2 + 38256U, // 42 - 3 + 18808U, // 42 - 4 + 18800U, // 42 - 5 + 25776U, // 42 - 6 + 54432U, // 42 - 7 + 59984U, // 42 - 8 + 27976U, // 42 - 9 + 23248U, // 42 - 10 + 11104U, // 42 - 11 + 37744U, // 42 - 12 + 37600U, // 42 - 13 + 51560U, // 42 - 14 + 51536U, // 42 - 15 + 54432U, // 42 - 16 + 55888U, // 42 - 17 + 46416U, // 42 - 18 + 22176U, // 42 - 19 + 43736U, // 42 - 20 + 9680U, // 42 - 21 + 37584U, // 42 - 22 + 51544U, // 42 - 23 + 43344U, // 42 - 24 + 46248U, // 42 - 25 + 27808U, // 42 - 26 + 46416U, // 42 - 27 + 21928U, // 42 - 28 + 19872U, // 42 - 29 + 42416U, // 42 - 30 + 21176U, // 42 - 31 + 21168U, // 42 - 32 + 43344U, // 42 - 33 + 59728U, // 42 - 34 + 27296U, // 42 - 35 + 44368U, // 42 - 36 + 43856U, // 42 - 37 + 19296U, // 42 - 38 + 42352U, // 42 - 39 + 42352U, // 42 - 40 + 21088U, // 42 - 41 + 59696U, // 42 - 42 + 55632U, // 42 - 43 + 23208U, // 42 - 44 + 22176U, // 42 - 45 + 38608U, // 42 - 46 + 19176U, // 42 - 47 + 19152U, // 42 - 48 + 42192U, // 42 - 49 + 53864U, // 42 - 50 + 53840U, // 42 - 51 + 54568U, // 42 - 52 + 46400U, // 42 - 53 + 46752U, // 42 - 54 + 38608U, // 42 - 55 + 38320U, // 42 - 56 + 18864U, // 42 - 57 + 42168U, // 42 - 58 + 42160U, // 42 - 59 + 45656U, // 43 - 0 + 27216U, // 43 - 1 + 27968U, // 43 - 2 + 44448U, // 43 - 3 + 43872U, // 43 - 4 + 38256U, // 43 - 5 + 18808U, // 43 - 6 + 18800U, // 43 - 7 + 25776U, // 43 - 8 + 27216U, // 43 - 9 + 59984U, // 43 - 10 + 27432U, // 43 - 11 + 23232U, // 43 - 12 + 43872U, // 43 - 13 + 37736U, // 43 - 14 + 37600U, // 43 - 15 + 51552U, // 43 - 16 + 54440U, // 43 - 17 + 54432U, // 43 - 18 + 55888U, // 43 - 19 + 23208U, // 43 - 20 + 22176U, // 43 - 21 + 43736U, // 43 - 22 + 9680U, // 43 - 23 + 37584U, // 43 - 24 + 51544U, // 43 - 25 + 43344U, // 43 - 26 + 46240U, // 43 - 27 + 46416U, // 43 - 28 + 44368U, // 43 - 29 + 21928U, // 43 - 30 + 19360U, // 43 - 31 + 42416U, // 43 - 32 + 21176U, // 43 - 33 + 21168U, // 43 - 34 + 43312U, // 43 - 35 + 29864U, // 43 - 36 + 27296U, // 43 - 37 + 44368U, // 43 - 38 + 19880U, // 43 - 39 + 19296U, // 43 - 40 + 42352U, // 43 - 41 + 42208U, // 43 - 42 + 53856U, // 43 - 43 + 59696U, // 43 - 44 + 54576U, // 43 - 45 + 23200U, // 43 - 46 + 27472U, // 43 - 47 + 38608U, // 43 - 48 + 19176U, // 43 - 49 + 19152U, // 43 - 50 + 42192U, // 43 - 51 + 53848U, // 43 - 52 + 53840U, // 43 - 53 + 54560U, // 43 - 54 + 55968U, // 43 - 55 + 46496U, // 43 - 56 + 22224U, // 43 - 57 + 19160U, // 43 - 58 + 18864U, // 43 - 59 + 42168U, // 44 - 0 + 42160U, // 44 - 1 + 43600U, // 44 - 2 + 46376U, // 44 - 3 + 27936U, // 44 - 4 + 44448U, // 44 - 5 + 21936U, // 44 - 6 + 37744U, // 44 - 7 + 18808U, // 44 - 8 + 18800U, // 44 - 9 + 25776U, // 44 - 10 + 27216U, // 44 - 11 + 59984U, // 44 - 12 + 27296U, // 44 - 13 + 43872U, // 44 - 14 + 43744U, // 44 - 15 + 37600U, // 44 - 16 + 51568U, // 44 - 17 + 51552U, // 44 - 18 + 54440U, // 44 - 19 + 54432U, // 44 - 20 + 55888U, // 44 - 21 + 23208U, // 44 - 22 + 22176U, // 44 - 23 + 42704U, // 44 - 24 + 21224U, // 44 - 25 + 21200U, // 44 - 26 + 43352U, // 44 - 27 + 43344U, // 44 - 28 + 46240U, // 44 - 29 + 46416U, // 44 - 30 + 44368U, // 44 - 31 + 21920U, // 44 - 32 + 42448U, // 44 - 33 + 42416U, // 44 - 34 + 21168U, // 44 - 35 + 43320U, // 44 - 36 + 26928U, // 44 - 37 + 29336U, // 44 - 38 + 27296U, // 44 - 39 + 44368U, // 44 - 40 + 19880U, // 44 - 41 + 19296U, // 44 - 42 + 42352U, // 44 - 43 + 21104U, // 44 - 44 + 53600U, // 44 - 45 + 59696U, // 44 - 46 + 54560U, // 44 - 47 + 55968U, // 44 - 48 + 27472U, // 44 - 49 + 22224U, // 44 - 50 + 19168U, // 44 - 51 + 42216U, // 44 - 52 + 41680U, // 44 - 53 + 53584U, // 44 - 54 + 55592U, // 44 - 55 +}; +const TUint32 TCalconData::iCalConDataYear[]={ + 1506335U, // 0 - 8 + 1612119426U, // 0 - 9 + 1507074U, // 0 - 10 + 1507428U, // 0 - 11 + 1075249607U, // 0 - 12 + 1508167U, // 0 - 13 + 1508521U, // 0 - 14 + 538379787U, // 0 - 15 + 1509259U, // 0 - 16 + 1612122349U, // 0 - 17 + 1509997U, // 0 - 18 + 1510352U, // 0 - 19 + 1343687986U, // 0 - 20 + 1511090U, // 0 - 21 + 1511444U, // 0 - 22 + 806818166U, // 0 - 23 + 1512182U, // 0 - 24 + 3222738008U, // 0 - 25 + 1512920U, // 0 - 26 + 1513275U, // 0 - 27 + 1343690910U, // 0 - 28 + 1514014U, // 0 - 29 + 1514368U, // 0 - 30 + 1075256546U, // 0 - 31 + 1515106U, // 0 - 32 + 1515460U, // 0 - 33 + 538386726U, // 0 - 34 + 1516198U, // 0 - 35 + 1880564745U, // 0 - 36 + 1516937U, // 0 - 37 + 1517292U, // 0 - 38 + 1343694926U, // 0 - 39 + 1518030U, // 0 - 40 + 1518384U, // 0 - 41 + 1075260562U, // 0 - 42 + 1519122U, // 0 - 43 + 3491180404U, // 0 - 44 + 1519860U, // 0 - 45 + 1520215U, // 0 - 46 + 1343697850U, // 0 - 47 + 1520953U, // 0 - 48 + 1521307U, // 0 - 49 + 1075263485U, // 0 - 50 + 1522045U, // 0 - 51 + 1522400U, // 0 - 52 + 538393666U, // 0 - 53 + 1523138U, // 0 - 54 + 1612136229U, // 0 - 55 + 1523877U, // 0 - 56 + 1524231U, // 0 - 57 + 1343701865U, // 0 - 58 + 1524969U, // 0 - 59 + 1525323U, // 1 - 0 + 806832046U, // 1 - 1 + 1526062U, // 1 - 2 + 3491187344U, // 1 - 3 + 1526800U, // 1 - 4 + 1527155U, // 1 - 5 + 1612140245U, // 1 - 6 + 1527893U, // 1 - 7 + 1528247U, // 1 - 8 + 1075270425U, // 1 - 9 + 1528985U, // 1 - 10 + 1529340U, // 1 - 11 + 538400606U, // 1 - 12 + 1530078U, // 1 - 13 + 1880578625U, // 1 - 14 + 1530817U, // 1 - 15 + 1531171U, // 1 - 16 + 1343708805U, // 1 - 17 + 1531908U, // 1 - 18 + 1532263U, // 1 - 19 + 806838986U, // 1 - 20 + 1533002U, // 1 - 21 + 3491194284U, // 1 - 22 + 1533740U, // 1 - 23 + 1534094U, // 1 - 24 + 1612147184U, // 1 - 25 + 1534832U, // 1 - 26 + 1535186U, // 1 - 27 + 1075277365U, // 1 - 28 + 1535925U, // 1 - 29 + 1536280U, // 1 - 30 + 806843002U, // 1 - 31 + 1537018U, // 1 - 32 + 1880585564U, // 1 - 33 + 1537756U, // 1 - 34 + 1538110U, // 1 - 35 + 1343715744U, // 1 - 36 + 1538848U, // 1 - 37 + 1539203U, // 1 - 38 + 1075281382U, // 1 - 39 + 1539942U, // 1 - 40 + 1540296U, // 1 - 41 + 538411562U, // 1 - 42 + 1541034U, // 1 - 43 + 1612154124U, // 1 - 44 + 1541772U, // 1 - 45 + 1542126U, // 1 - 46 + 1075284305U, // 1 - 47 + 1542865U, // 1 - 48 + 1543219U, // 1 - 49 + 806849942U, // 1 - 50 + 1543957U, // 1 - 51 + 1880592503U, // 1 - 52 + 1544695U, // 1 - 53 + 1545050U, // 1 - 54 + 1343722684U, // 1 - 55 + 1545788U, // 1 - 56 + 1546143U, // 1 - 57 + 1075288321U, // 1 - 58 + 1546881U, // 1 - 59 + 3222772707U, // 2 - 0 + 1547619U, // 2 - 1 + 1547973U, // 2 - 2 + 1612161064U, // 2 - 3 + 1548712U, // 2 - 4 + 1549066U, // 2 - 5 + 1075291245U, // 2 - 6 + 1549805U, // 2 - 7 + 1550159U, // 2 - 8 + 806856881U, // 2 - 9 + 1550897U, // 2 - 10 + 1880599443U, // 2 - 11 + 1551635U, // 2 - 12 + 1551990U, // 2 - 13 + 1343729624U, // 2 - 14 + 1552728U, // 2 - 15 + 1553083U, // 2 - 16 + 1075295261U, // 2 - 17 + 1553821U, // 2 - 18 + 2417473279U, // 2 - 19 + 1554558U, // 2 - 20 + 1554913U, // 2 - 21 + 1612168004U, // 2 - 22 + 1555652U, // 2 - 23 + 1556006U, // 2 - 24 + 1075298185U, // 2 - 25 + 1556744U, // 2 - 26 + 1557098U, // 2 - 27 + 806863820U, // 2 - 28 + 1557836U, // 2 - 29 + 2149041839U, // 2 - 30 + 1558575U, // 2 - 31 + 1558930U, // 2 - 32 + 1343736564U, // 2 - 33 + 1559668U, // 2 - 34 + 1560022U, // 2 - 35 + 1075302200U, // 2 - 36 + 1560760U, // 2 - 37 + 3491222042U, // 2 - 38 + 1561498U, // 2 - 39 + 1561853U, // 2 - 40 + 1612174944U, // 2 - 41 + 1562592U, // 2 - 42 + 1562946U, // 2 - 43 + 1343740580U, // 2 - 44 + 1563684U, // 2 - 45 + 1564038U, // 2 - 46 + 538435304U, // 2 - 47 + 1564776U, // 2 - 48 + 1880613323U, // 2 - 49 + 1565515U, // 2 - 50 + 1565869U, // 2 - 51 + 1343743504U, // 2 - 52 + 1566607U, // 2 - 53 + 1566961U, // 2 - 54 + 1075309140U, // 2 - 55 + 1567700U, // 2 - 56 + 3491228982U, // 2 - 57 + 1568438U, // 2 - 58 + 1568793U, // 2 - 59 + 1612181883U, // 3 - 0 + 1569531U, // 3 - 1 + 1569885U, // 3 - 2 + 1343747519U, // 3 - 3 + 1570623U, // 3 - 4 + 1570978U, // 3 - 5 + 806877700U, // 3 - 6 + 1571716U, // 3 - 7 + 1880620263U, // 3 - 8 + 1572455U, // 3 - 9 + 1572809U, // 3 - 10 + 1612185899U, // 3 - 11 + 1573547U, // 3 - 12 + 1573901U, // 3 - 13 + 1075316079U, // 3 - 14 + 1574640U, // 3 - 15 + 1574994U, // 3 - 16 + 538446261U, // 3 - 17 + 1575733U, // 3 - 18 + 1612188823U, // 3 - 19 + 1576471U, // 3 - 20 + 1576825U, // 3 - 21 + 1075319003U, // 3 - 22 + 1577563U, // 3 - 23 + 1577918U, // 3 - 24 + 806884640U, // 3 - 25 + 1578656U, // 3 - 26 + 1880627203U, // 3 - 27 + 1579394U, // 3 - 28 + 1579748U, // 3 - 29 + 1612192838U, // 3 - 30 + 1580486U, // 3 - 31 + 1580841U, // 3 - 32 + 1075323020U, // 3 - 33 + 1581580U, // 3 - 34 + 1581934U, // 3 - 35 + 806888656U, // 3 - 36 + 1582672U, // 3 - 37 + 1880631218U, // 3 - 38 + 1583410U, // 3 - 39 + 1583764U, // 3 - 40 + 1343761399U, // 3 - 41 + 1584503U, // 3 - 42 + 1584858U, // 3 - 43 + 806891580U, // 3 - 44 + 1585596U, // 3 - 45 + 1880634142U, // 3 - 46 + 1586334U, // 3 - 47 + 1586688U, // 3 - 48 + 1343764322U, // 3 - 49 + 1587426U, // 3 - 50 + 1587781U, // 3 - 51 + 1075329959U, // 3 - 52 + 1588519U, // 3 - 53 + 1588874U, // 3 - 54 + 538460140U, // 3 - 55 + 1589611U, // 3 - 56 + 1612202702U, // 3 - 57 + 1590350U, // 3 - 58 + 1590704U, // 3 - 59 + 1075332883U, // 4 - 0 + 1591443U, // 4 - 1 + 1591797U, // 4 - 2 + 806898519U, // 4 - 3 + 1592535U, // 4 - 4 + 1880641081U, // 4 - 5 + 1593273U, // 4 - 6 + 1593628U, // 4 - 7 + 1343771262U, // 4 - 8 + 1594366U, // 4 - 9 + 1594721U, // 4 - 10 + 1075336899U, // 4 - 11 + 1595459U, // 4 - 12 + 1595813U, // 4 - 13 + 538467079U, // 4 - 14 + 1596551U, // 4 - 15 + 1880645097U, // 4 - 16 + 1597290U, // 4 - 17 + 1597644U, // 4 - 18 + 1343775279U, // 4 - 19 + 1598383U, // 4 - 20 + 1598737U, // 4 - 21 + 806905459U, // 4 - 22 + 1599475U, // 4 - 23 + 2417518933U, // 4 - 24 + 1600213U, // 4 - 25 + 1600567U, // 4 - 26 + 1343778202U, // 4 - 27 + 1601306U, // 4 - 28 + 1601661U, // 4 - 29 + 1075343839U, // 4 - 30 + 1602398U, // 4 - 31 + 3491263680U, // 4 - 32 + 1603136U, // 4 - 33 + 1603491U, // 4 - 34 + 1612216581U, // 4 - 35 + 1604230U, // 4 - 36 + 1604584U, // 4 - 37 + 1343782218U, // 4 - 38 + 1605322U, // 4 - 39 + 1605676U, // 4 - 40 + 806912398U, // 4 - 41 + 1606414U, // 4 - 42 + 1880654961U, // 4 - 43 + 1607153U, // 4 - 44 + 1607507U, // 4 - 45 + 1612220598U, // 4 - 46 + 1608246U, // 4 - 47 + 1608600U, // 4 - 48 + 1075350778U, // 4 - 49 + 1609338U, // 4 - 50 + 1609692U, // 4 - 51 + 538480959U, // 4 - 52 + 1610431U, // 4 - 53 + 1612223521U, // 4 - 54 + 1611169U, // 4 - 55 + 1611524U, // 4 - 56 + 1343789158U, // 4 - 57 + 1612261U, // 4 - 58 + 1612616U, // 4 - 59 + 806919338U, // 5 - 0 + 1613354U, // 5 - 1 + 3222839181U, // 5 - 2 + 1614093U, // 5 - 3 + 1614447U, // 5 - 4 + 1612227537U, // 5 - 5 + 1615185U, // 5 - 6 + 1615539U, // 5 - 7 + 1075357717U, // 5 - 8 + 1616277U, // 5 - 9 + 1616632U, // 5 - 10 + 806923355U, // 5 - 11 + 1617371U, // 5 - 12 + 1612230461U, // 5 - 13 + 1618109U, // 5 - 14 + 1618463U, // 5 - 15 + 1343796097U, // 5 - 16 + 1619201U, // 5 - 17 + 1619555U, // 5 - 18 + 806926278U, // 5 - 19 + 1620294U, // 5 - 20 + 1880668841U, // 5 - 21 + 1621033U, // 5 - 22 + 1621387U, // 5 - 23 + 1612234477U, // 5 - 24 + 1622125U, // 5 - 25 + 1622479U, // 5 - 26 + 1075364657U, // 5 - 27 + 1623217U, // 5 - 28 + 1623572U, // 5 - 29 + 806930295U, // 5 - 30 + 1624310U, // 5 - 31 + 1612237401U, // 5 - 32 + 1625048U, // 5 - 33 + 1625402U, // 5 - 34 + 1343803037U, // 5 - 35 + 1626141U, // 5 - 36 + 1626495U, // 5 - 37 + 806933218U, // 5 - 38 + 1627234U, // 5 - 39 + 3222853060U, // 5 - 40 + 1627972U, // 5 - 41 + 1628326U, // 5 - 42 + 1612241416U, // 5 - 43 + 1629064U, // 5 - 44 + 1629419U, // 5 - 45 + 1075371597U, // 5 - 46 + 1630157U, // 5 - 47 + 1630512U, // 5 - 48 + 538501778U, // 5 - 49 + 1631250U, // 5 - 50 + 1880679796U, // 5 - 51 + 1631988U, // 5 - 52 + 1632342U, // 5 - 53 + 1343809977U, // 5 - 54 + 1633081U, // 5 - 55 + 1633435U, // 5 - 56 + 806940158U, // 5 - 57 + 1634174U, // 5 - 58 + 2417553632U, // 5 - 59 + 1634911U, // 6 - 0 + 1635266U, // 6 - 1 + 1612248356U, // 6 - 2 + 1636004U, // 6 - 3 + 1636359U, // 6 - 4 + 1075378537U, // 6 - 5 + 1637097U, // 6 - 6 + 1637451U, // 6 - 7 + 806944173U, // 6 - 8 + 1638189U, // 6 - 9 + 1880686735U, // 6 - 10 + 1638927U, // 6 - 11 + 1639282U, // 6 - 12 + 1343816917U, // 6 - 13 + 1640021U, // 6 - 14 + 1640375U, // 6 - 15 + 1075382553U, // 6 - 16 + 1641113U, // 6 - 17 + 2417560571U, // 6 - 18 + 1641851U, // 6 - 19 + 1642205U, // 6 - 20 + 1612255296U, // 6 - 21 + 1642944U, // 6 - 22 + 1643299U, // 6 - 23 + 1075385477U, // 6 - 24 + 1644037U, // 6 - 25 + 1644391U, // 6 - 26 + 538515657U, // 6 - 27 + 1645129U, // 6 - 28 + 1612258219U, // 6 - 29 + 1645867U, // 6 - 30 + 1646222U, // 6 - 31 + 1343823857U, // 6 - 32 + 1646960U, // 6 - 33 + 1647315U, // 6 - 34 + 1075389493U, // 6 - 35 + 1648052U, // 6 - 36 + 3222873879U, // 6 - 37 + 1648791U, // 6 - 38 + 1649145U, // 6 - 39 + 1612262236U, // 6 - 40 + 1649884U, // 6 - 41 + 1650238U, // 6 - 42 + 1343827872U, // 6 - 43 + 1650976U, // 6 - 44 + 1651330U, // 6 - 45 + 806958053U, // 6 - 46 + 1652069U, // 6 - 47 + 1880700615U, // 6 - 48 + 1652807U, // 6 - 49 + 1653162U, // 6 - 50 + 1343830796U, // 6 - 51 + 1653900U, // 6 - 52 + 1654254U, // 6 - 53 + 806960976U, // 6 - 54 + 1654992U, // 6 - 55 + 3491316275U, // 6 - 56 + 1655731U, // 6 - 57 + 1656085U, // 6 - 58 + 1612269176U, // 6 - 59 + 1656824U, // 7 - 0 + 1657178U, // 7 - 1 + 1075399356U, // 7 - 2 + 1657916U, // 7 - 3 + 1658270U, // 7 - 4 + 538529537U, // 7 - 5 + 1659009U, // 7 - 6 + 1612272099U, // 7 - 7 + 1659747U, // 7 - 8 + 1660101U, // 7 - 9 + 1343837735U, // 7 - 10 + 1660839U, // 7 - 11 + 1661193U, // 7 - 12 + 806967916U, // 7 - 13 + 1661932U, // 7 - 14 + 1662287U, // 7 - 15 + 538533553U, // 7 - 16 + 1663025U, // 7 - 17 + 1612276115U, // 7 - 18 + 1663763U, // 7 - 19 + 1664117U, // 7 - 20 + 1343841751U, // 7 - 21 + 1664855U, // 7 - 22 + 1665210U, // 7 - 23 + 538536477U, // 7 - 24 + 1665949U, // 7 - 25 + 1880714495U, // 7 - 26 + 1666687U, // 7 - 27 + 1667041U, // 7 - 28 + 1343844675U, // 7 - 29 + 1667779U, // 7 - 30 + 1668133U, // 7 - 31 + 806974856U, // 7 - 32 + 1668872U, // 7 - 33 + 3491330155U, // 7 - 34 + 1669610U, // 7 - 35 + 1669965U, // 7 - 36 + 1612283055U, // 7 - 37 + 1670702U, // 7 - 38 + 1671057U, // 7 - 39 + 1075413235U, // 7 - 40 + 1671795U, // 7 - 41 + 1672150U, // 7 - 42 + 806978872U, // 7 - 43 + 1672888U, // 7 - 44 + 1880721434U, // 7 - 45 + 1673626U, // 7 - 46 + 1673980U, // 7 - 47 + 1343851615U, // 7 - 48 + 1674719U, // 7 - 49 + 1675073U, // 7 - 50 + 1075417252U, // 7 - 51 + 1675812U, // 7 - 52 + 2149159814U, // 7 - 53 + 1676550U, // 7 - 54 + 1676904U, // 7 - 55 + 1612289994U, // 7 - 56 + 1677642U, // 7 - 57 + 1677997U, // 7 - 58 + 1075420175U, // 7 - 59 + 1678735U, // 8 - 0 + 1679090U, // 8 - 1 + 806985812U, // 8 - 2 + 1679828U, // 8 - 3 + 2149163830U, // 8 - 4 + 1680566U, // 8 - 5 + 1680920U, // 8 - 6 + 1343858555U, // 8 - 7 + 1681659U, // 8 - 8 + 1682013U, // 8 - 9 + 1075424192U, // 8 - 10 + 1682751U, // 8 - 11 + 3222908577U, // 8 - 12 + 1683489U, // 8 - 13 + 1683843U, // 8 - 14 + 1612296934U, // 8 - 15 + 1684582U, // 8 - 16 + 1684937U, // 8 - 17 + 1343862571U, // 8 - 18 + 1685675U, // 8 - 19 + 1686029U, // 8 - 20 + 806992751U, // 8 - 21 + 1686767U, // 8 - 22 + 1880735313U, // 8 - 23 + 1687505U, // 8 - 24 + 1687860U, // 8 - 25 + 1343865495U, // 8 - 26 + 1688599U, // 8 - 27 + 1688953U, // 8 - 28 + 1075431131U, // 8 - 29 + 1689691U, // 8 - 30 + 3222915517U, // 8 - 31 + 1690429U, // 8 - 32 + 1690783U, // 8 - 33 + 1612303874U, // 8 - 34 + 1691522U, // 8 - 35 + 1691877U, // 8 - 36 + 1343869511U, // 8 - 37 + 1692614U, // 8 - 38 + 1692968U, // 8 - 39 + 806999691U, // 8 - 40 + 1693707U, // 8 - 41 + 1880742253U, // 8 - 42 + 1694445U, // 8 - 43 + 1694800U, // 8 - 44 + 1343872434U, // 8 - 45 + 1695538U, // 8 - 46 + 1695892U, // 8 - 47 + 1075438070U, // 8 - 48 + 1696630U, // 8 - 49 + 1696985U, // 8 - 50 + 538568251U, // 8 - 51 + 1697723U, // 8 - 52 + 1612310814U, // 8 - 53 + 1698462U, // 8 - 54 + 1698816U, // 8 - 55 + 1343876450U, // 8 - 56 + 1699554U, // 8 - 57 + 1699908U, // 8 - 58 + 538571175U, // 8 - 59 + 1700647U, // 9 - 0 + 1880749193U, // 9 - 1 + 1701385U, // 9 - 2 + 1701740U, // 9 - 3 + 1343879374U, // 9 - 4 + 1702478U, // 9 - 5 + 1702832U, // 9 - 6 + 1075445010U, // 9 - 7 + 1703570U, // 9 - 8 + 1703925U, // 9 - 9 + 538575191U, // 9 - 10 + 1704663U, // 9 - 11 + 1612317754U, // 9 - 12 + 1705401U, // 9 - 13 + 1705755U, // 9 - 14 + 1343883389U, // 9 - 15 + 1706493U, // 9 - 16 + 1706848U, // 9 - 17 + 807013571U, // 9 - 18 + 1707587U, // 9 - 19 + 1880756133U, // 9 - 20 + 1708325U, // 9 - 21 + 1708679U, // 9 - 22 + 1612321769U, // 9 - 23 + 1709417U, // 9 - 24 + 1709771U, // 9 - 25 + 1075451950U, // 9 - 26 + 1710510U, // 9 - 27 + 1710865U, // 9 - 28 + 538582131U, // 9 - 29 + 1711603U, // 9 - 30 + 1612324693U, // 9 - 31 + 1712341U, // 9 - 32 + 1712695U, // 9 - 33 + 1075454873U, // 9 - 34 + 1713433U, // 9 - 35 + 1713788U, // 9 - 36 + 807020511U, // 9 - 37 + 1714527U, // 9 - 38 + 2149198529U, // 9 - 39 + 1715264U, // 9 - 40 + 1715618U, // 9 - 41 + 1612328709U, // 9 - 42 + 1716357U, // 9 - 43 + 1716711U, // 9 - 44 + 1075458890U, // 9 - 45 + 1717450U, // 9 - 46 + 1717804U, // 9 - 47 + 538589071U, // 9 - 48 + 1718542U, // 9 - 49 + 1880767088U, // 9 - 50 + 1719280U, // 9 - 51 + 1719635U, // 9 - 52 + 1343897269U, // 9 - 53 + 1720373U, // 9 - 54 + 1720728U, // 9 - 55 + 807027450U, // 9 - 56 + 1721466U, // 9 - 57 + 2149205468U, // 9 - 58 + 1722204U, // 9 - 59 + 1722558U, // 10 - 0 + 1343900193U, // 10 - 1 + 1723297U, // 10 - 2 + 1723651U, // 10 - 3 + 1075465830U, // 10 - 4 + 1724390U, // 10 - 5 + 1724744U, // 10 - 6 + 538596010U, // 10 - 7 + 1725482U, // 10 - 8 + 1612338572U, // 10 - 9 + 1726220U, // 10 - 10 + 1726575U, // 10 - 11 + 1343904209U, // 10 - 12 + 1727313U, // 10 - 13 + 1727668U, // 10 - 14 + 1075469846U, // 10 - 15 + 1728405U, // 10 - 16 + 2149212407U, // 10 - 17 + 1729143U, // 10 - 18 + 1729498U, // 10 - 19 + 1343907133U, // 10 - 20 + 1730237U, // 10 - 21 + 1730591U, // 10 - 22 + 1075472769U, // 10 - 23 + 1731329U, // 10 - 24 + 1731683U, // 10 - 25 + 538602949U, // 10 - 26 + 1732421U, // 10 - 27 + 1880780968U, // 10 - 28 + 1733160U, // 10 - 29 + 1733515U, // 10 - 30 + 1343911149U, // 10 - 31 + 1734253U, // 10 - 32 + 1734607U, // 10 - 33 + 807041329U, // 10 - 34 + 1735345U, // 10 - 35 + 2149219347U, // 10 - 36 + 1736083U, // 10 - 37 + 1736438U, // 10 - 38 + 1343914072U, // 10 - 39 + 1737176U, // 10 - 40 + 1737531U, // 10 - 41 + 1075479709U, // 10 - 42 + 1738268U, // 10 - 43 + 1738623U, // 10 - 44 + 538609889U, // 10 - 45 + 1739361U, // 10 - 46 + 1612352452U, // 10 - 47 + 1740100U, // 10 - 48 + 1740454U, // 10 - 49 + 1343918088U, // 10 - 50 + 1741192U, // 10 - 51 + 1741546U, // 10 - 52 + 807048269U, // 10 - 53 + 1742285U, // 10 - 54 + 2149226287U, // 10 - 55 + 1743023U, // 10 - 56 + 1743378U, // 10 - 57 + 1612356468U, // 10 - 58 + 1744116U, // 10 - 59 + 1744470U, // 11 - 0 + 1075486648U, // 11 - 1 + 1745208U, // 11 - 2 + 1745562U, // 11 - 3 + 538616829U, // 11 - 4 + 1746301U, // 11 - 5 + 1612359392U, // 11 - 6 + 1747040U, // 11 - 7 + 1747394U, // 11 - 8 + 1343925028U, // 11 - 9 + 1748132U, // 11 - 10 + 1748486U, // 11 - 11 + 807055208U, // 11 - 12 + 1749225U, // 11 - 13 + 2149233227U, // 11 - 14 + 1749963U, // 11 - 15 + 1750318U, // 11 - 16 + 1612363408U, // 11 - 17 + 1751055U, // 11 - 18 + 1751409U, // 11 - 19 + 1075493588U, // 11 - 20 + 1752148U, // 11 - 21 + 1752502U, // 11 - 22 + 538623769U, // 11 - 23 + 1753241U, // 11 - 24 + 1880801787U, // 11 - 25 + 1753979U, // 11 - 26 + 1754333U, // 11 - 27 + 1343931967U, // 11 - 28 + 1755071U, // 11 - 29 + 1755426U, // 11 - 30 + 807062148U, // 11 - 31 + 1756165U, // 11 - 32 + 2149240167U, // 11 - 33 + 1756903U, // 11 - 34 + 1757257U, // 11 - 35 + 1612370347U, // 11 - 36 + 1757995U, // 11 - 37 + 1758349U, // 11 - 38 + 1075500528U, // 11 - 39 + 1759088U, // 11 - 40 + 1759442U, // 11 - 41 + 807066165U, // 11 - 42 + 1760181U, // 11 - 43 + 1880808727U, // 11 - 44 + 1760918U, // 11 - 45 + 1761273U, // 11 - 46 + 1343938907U, // 11 - 47 + 1762011U, // 11 - 48 + 1762366U, // 11 - 49 + 1075504544U, // 11 - 50 + 1763104U, // 11 - 51 + 1880811650U, // 11 - 52 + 1763842U, // 11 - 53 + 1764196U, // 11 - 54 + 1612377286U, // 11 - 55 + 1764934U, // 11 - 56 + 1765289U, // 11 - 57 + 1075507468U, // 11 - 58 + 1766028U, // 11 - 59 + 1766382U, // 12 - 0 + 807073104U, // 12 - 1 + 1767120U, // 12 - 2 + 1880815666U, // 12 - 3 + 1767858U, // 12 - 4 + 1768212U, // 12 - 5 + 1343945847U, // 12 - 6 + 1768951U, // 12 - 7 + 1769306U, // 12 - 8 + 1075511484U, // 12 - 9 + 1770044U, // 12 - 10 + 2149254046U, // 12 - 11 + 1770782U, // 12 - 12 + 1771136U, // 12 - 13 + 1612384226U, // 12 - 14 + 1771874U, // 12 - 15 + 1772229U, // 12 - 16 + 1075514408U, // 12 - 17 + 1772967U, // 12 - 18 + 1773322U, // 12 - 19 + 807080044U, // 12 - 20 + 1774059U, // 12 - 21 + 1880822606U, // 12 - 22 + 1774798U, // 12 - 23 + 1775152U, // 12 - 24 + 1343952787U, // 12 - 25 + 1775891U, // 12 - 26 + 1776245U, // 12 - 27 + 1075518423U, // 12 - 28 + 1776983U, // 12 - 29 + 2417696441U, // 12 - 30 + 1777721U, // 12 - 31 + 1778076U, // 12 - 32 + 1612391166U, // 12 - 33 + 1778814U, // 12 - 34 + 1779169U, // 12 - 35 + 1075521347U, // 12 - 36 + 1779907U, // 12 - 37 + 1780261U, // 12 - 38 + 538651527U, // 12 - 39 + 1780999U, // 12 - 40 + 1880829546U, // 12 - 41 + 1781738U, // 12 - 42 + 1782092U, // 12 - 43 + 1343959727U, // 12 - 44 + 1782831U, // 12 - 45 + 1783185U, // 12 - 46 + 1075525363U, // 12 - 47 + 1783923U, // 12 - 48 + 2417703381U, // 12 - 49 + 1784661U, // 12 - 50 + 1785016U, // 12 - 51 + 1612398106U, // 12 - 52 + 1785754U, // 12 - 53 + 1786108U, // 12 - 54 + 1343963742U, // 12 - 55 + 1786846U, // 12 - 56 + 1787200U, // 12 - 57 + 538658467U, // 12 - 58 + 1787939U, // 12 - 59 + 1880836486U, // 13 - 0 + 1788678U, // 13 - 1 + 1789032U, // 13 - 2 + 1343966666U, // 13 - 3 + 1789770U, // 13 - 4 + 1790124U, // 13 - 5 + 807096846U, // 13 - 6 + 1790862U, // 13 - 7 + 3491452145U, // 13 - 8 + 1791601U, // 13 - 9 + 1791956U, // 13 - 10 + 1612405046U, // 13 - 11 + 1792694U, // 13 - 12 + 1793048U, // 13 - 13 + 1075535226U, // 13 - 14 + 1793786U, // 13 - 15 + 1794140U, // 13 - 16 + 807100863U, // 13 - 17 + 1794879U, // 13 - 18 + 1880843426U, // 13 - 19 + 1795617U, // 13 - 20 + 1795972U, // 13 - 21 + 1612409062U, // 13 - 22 + 1796709U, // 13 - 23 + 1797064U, // 13 - 24 + 1075539242U, // 13 - 25 + 1797802U, // 13 - 26 + 1798157U, // 13 - 27 + 538669423U, // 13 - 28 + 1798895U, // 13 - 29 + 1612411985U, // 13 - 30 + 1799633U, // 13 - 31 + 1799987U, // 13 - 32 + 1343977622U, // 13 - 33 + 1800726U, // 13 - 34 + 1801080U, // 13 - 35 + 807107803U, // 13 - 36 + 1801819U, // 13 - 37 + 1880850365U, // 13 - 38 + 1802557U, // 13 - 39 + 1802911U, // 13 - 40 + 1343980545U, // 13 - 41 + 1803649U, // 13 - 42 + 1804004U, // 13 - 43 + 807110726U, // 13 - 44 + 1804742U, // 13 - 45 + 2149288745U, // 13 - 46 + 1805481U, // 13 - 47 + 1805835U, // 13 - 48 + 1612418925U, // 13 - 49 + 1806573U, // 13 - 50 + 1806927U, // 13 - 51 + 1075549106U, // 13 - 52 + 1807666U, // 13 - 53 + 1808020U, // 13 - 54 + 807114743U, // 13 - 55 + 1808758U, // 13 - 56 + 1880857304U, // 13 - 57 + 1809496U, // 13 - 58 + 1809850U, // 13 - 59 + 1612422941U, // 14 - 0 + 1810589U, // 14 - 1 + 1810944U, // 14 - 2 + 1075553122U, // 14 - 3 + 1811682U, // 14 - 4 + 2417731140U, // 14 - 5 + 1812420U, // 14 - 6 + 1812774U, // 14 - 7 + 1612425864U, // 14 - 8 + 1813512U, // 14 - 9 + 1813867U, // 14 - 10 + 1075556046U, // 14 - 11 + 1814606U, // 14 - 12 + 1814960U, // 14 - 13 + 807121682U, // 14 - 14 + 1815698U, // 14 - 15 + 1880864244U, // 14 - 16 + 1816436U, // 14 - 17 + 1816790U, // 14 - 18 + 1343994425U, // 14 - 19 + 1817529U, // 14 - 20 + 1817884U, // 14 - 21 + 1075560062U, // 14 - 22 + 1818622U, // 14 - 23 + 2417738080U, // 14 - 24 + 1819359U, // 14 - 25 + 1819714U, // 14 - 26 + 1612432804U, // 14 - 27 + 1820452U, // 14 - 28 + 1820807U, // 14 - 29 + 1343998441U, // 14 - 30 + 1821545U, // 14 - 31 + 1821899U, // 14 - 32 + 807128621U, // 14 - 33 + 1822637U, // 14 - 34 + 2149306640U, // 14 - 35 + 1823376U, // 14 - 36 + 1823730U, // 14 - 37 + 1344001365U, // 14 - 38 + 1824469U, // 14 - 39 + 1824823U, // 14 - 40 + 1075567001U, // 14 - 41 + 1825561U, // 14 - 42 + 3491486843U, // 14 - 43 + 1826299U, // 14 - 44 + 1826654U, // 14 - 45 + 1612439744U, // 14 - 46 + 1827392U, // 14 - 47 + 1827747U, // 14 - 48 + 1344005381U, // 14 - 49 + 1828485U, // 14 - 50 + 1828839U, // 14 - 51 + 807135561U, // 14 - 52 + 1829577U, // 14 - 53 + 1880878124U, // 14 - 54 + 1830316U, // 14 - 55 + 1830670U, // 14 - 56 + 1612443761U, // 14 - 57 + 1831408U, // 14 - 58 + 1831762U, // 14 - 59 + 1075573940U, // 15 - 0 + 1832500U, // 15 - 1 + 1832855U, // 15 - 2 + 538704122U, // 15 - 3 + 1833594U, // 15 - 4 + 1612446684U, // 15 - 5 + 1834332U, // 15 - 6 + 1834686U, // 15 - 7 + 1344012320U, // 15 - 8 + 1835424U, // 15 - 9 + 1835778U, // 15 - 10 + 807142501U, // 15 - 11 + 1836517U, // 15 - 12 + 1880885064U, // 15 - 13 + 1837256U, // 15 - 14 + 1837610U, // 15 - 15 + 1612450700U, // 15 - 16 + 1838348U, // 15 - 17 + 1838702U, // 15 - 18 + 1075580880U, // 15 - 19 + 1839440U, // 15 - 20 + 1839795U, // 15 - 21 + 538711062U, // 15 - 22 + 1840534U, // 15 - 23 + 1612453624U, // 15 - 24 + 1841271U, // 15 - 25 + 1841625U, // 15 - 26 + 1344019260U, // 15 - 27 + 1842364U, // 15 - 28 + 1842718U, // 15 - 29 + 807149441U, // 15 - 30 + 1843457U, // 15 - 31 + 1880892003U, // 15 - 32 + 1844195U, // 15 - 33 + 1844549U, // 15 - 34 + 1612457639U, // 15 - 35 + 1845287U, // 15 - 36 + 1845642U, // 15 - 37 + 1075587820U, // 15 - 38 + 1846380U, // 15 - 39 + 1846735U, // 15 - 40 + 538718001U, // 15 - 41 + 1847473U, // 15 - 42 + 1612460563U, // 15 - 43 + 1848211U, // 15 - 44 + 1848565U, // 15 - 45 + 1344026200U, // 15 - 46 + 1849304U, // 15 - 47 + 1849658U, // 15 - 48 + 807156381U, // 15 - 49 + 1850397U, // 15 - 50 + 1880898943U, // 15 - 51 + 1851135U, // 15 - 52 + 1851489U, // 15 - 53 + 1612464579U, // 15 - 54 + 1852227U, // 15 - 55 + 1852582U, // 15 - 56 + 1075594760U, // 15 - 57 + 1853320U, // 15 - 58 + 1853675U, // 15 - 59 + 538724941U, // 16 - 0 + 1854412U, // 16 - 1 + 1880902958U, // 16 - 2 + 1855150U, // 16 - 3 + 1855505U, // 16 - 4 + 1344033140U, // 16 - 5 + 1856244U, // 16 - 6 + 1856598U, // 16 - 7 + 807163320U, // 16 - 8 + 1857336U, // 16 - 9 + 2149341338U, // 16 - 10 + 1858074U, // 16 - 11 + 1858428U, // 16 - 12 + 1344036063U, // 16 - 13 + 1859167U, // 16 - 14 + 1859522U, // 16 - 15 + 1075601700U, // 16 - 16 + 1860260U, // 16 - 17 + 1860614U, // 16 - 18 + 538731880U, // 16 - 19 + 1861352U, // 16 - 20 + 1880909898U, // 16 - 21 + 1862090U, // 16 - 22 + 1862445U, // 16 - 23 + 1344040080U, // 16 - 24 + 1863184U, // 16 - 25 + 1863538U, // 16 - 26 + 1075605716U, // 16 - 27 + 1864275U, // 16 - 28 + 2149348278U, // 16 - 29 + 1865014U, // 16 - 30 + 1865368U, // 16 - 31 + 1612478459U, // 16 - 32 + 1866107U, // 16 - 33 + 1866461U, // 16 - 34 + 1344044096U, // 16 - 35 + 1867199U, // 16 - 36 + 1867553U, // 16 - 37 + 538738820U, // 16 - 38 + 1868292U, // 16 - 39 + 1612481382U, // 16 - 40 + 1869030U, // 16 - 41 + 1869385U, // 16 - 42 + 1344047019U, // 16 - 43 + 1870123U, // 16 - 44 + 1870477U, // 16 - 45 + 807177199U, // 16 - 46 + 1871215U, // 16 - 47 + 2149355218U, // 16 - 48 + 1871954U, // 16 - 49 + 1872308U, // 16 - 50 + 1612485399U, // 16 - 51 + 1873047U, // 16 - 52 + 1873401U, // 16 - 53 + 1075615579U, // 16 - 54 + 1874139U, // 16 - 55 + 1874493U, // 16 - 56 + 538745759U, // 16 - 57 + 1875232U, // 16 - 58 + 1612488322U, // 16 - 59 + 1875970U, // 17 - 0 + 1876325U, // 17 - 1 + 1344053959U, // 17 - 2 + 1877062U, // 17 - 3 + 1877416U, // 17 - 4 + 807184139U, // 17 - 5 + 1878155U, // 17 - 6 + 3223103982U, // 17 - 7 + 1878894U, // 17 - 8 + 1879248U, // 17 - 9 + 1612492338U, // 17 - 10 + 1879986U, // 17 - 11 + 1880340U, // 17 - 12 + 1075622518U, // 17 - 13 + 1881078U, // 17 - 14 + 1881433U, // 17 - 15 + 538752700U, // 17 - 16 + 1882172U, // 17 - 17 + 1612495262U, // 17 - 18 + 1882910U, // 17 - 19 + 1883264U, // 17 - 20 + 1344060898U, // 17 - 21 + 1884002U, // 17 - 22 + 1884356U, // 17 - 23 + 807191079U, // 17 - 24 + 1885095U, // 17 - 25 + 1880933641U, // 17 - 26 + 1885833U, // 17 - 27 + 1886188U, // 17 - 28 + 1612499278U, // 17 - 29 + 1886925U, // 17 - 30 + 1887280U, // 17 - 31 + 1075629458U, // 17 - 32 + 1888018U, // 17 - 33 + 1888373U, // 17 - 34 + 538759639U, // 17 - 35 + 1889111U, // 17 - 36 + 1880937657U, // 17 - 37 + 1889849U, // 17 - 38 + 1890203U, // 17 - 39 + 1344067838U, // 17 - 40 + 1890942U, // 17 - 41 + 1891296U, // 17 - 42 + 807198019U, // 17 - 43 + 1892035U, // 17 - 44 + 2149376037U, // 17 - 45 + 1892773U, // 17 - 46 + 1893127U, // 17 - 47 + 1612506217U, // 17 - 48 + 1893865U, // 17 - 49 + 1894219U, // 17 - 50 + 1075636398U, // 17 - 51 + 1894958U, // 17 - 52 + 1895313U, // 17 - 53 + 807202035U, // 17 - 54 + 1896051U, // 17 - 55 + 1880944597U, // 17 - 56 + 1896789U, // 17 - 57 + 1897143U, // 17 - 58 + 1344074777U, // 17 - 59 + 1897882U, // 18 - 0 + 1898236U, // 18 - 1 + 1075640415U, // 18 - 2 + 1898975U, // 18 - 3 + 2149382977U, // 18 - 4 + 1899712U, // 18 - 5 + 1900066U, // 18 - 6 + 1612513157U, // 18 - 7 + 1900805U, // 18 - 8 + 1901160U, // 18 - 9 + 1344078794U, // 18 - 10 + 1901898U, // 18 - 11 + 1902252U, // 18 - 12 + 807208974U, // 18 - 13 + 1902990U, // 18 - 14 + 1880951536U, // 18 - 15 + 1903728U, // 18 - 16 + 1904083U, // 18 - 17 + 1344081717U, // 18 - 18 + 1904822U, // 18 - 19 + 1905176U, // 18 - 20 + 1075647354U, // 18 - 21 + 1905914U, // 18 - 22 + 2149389916U, // 18 - 23 + 1906652U, // 18 - 24 + 1907006U, // 18 - 25 + 1612520097U, // 18 - 26 + 1907745U, // 18 - 27 + 1908099U, // 18 - 28 + 1344085734U, // 18 - 29 + 1908838U, // 18 - 30 + 1909192U, // 18 - 31 + 538780458U, // 18 - 32 + 1909930U, // 18 - 33 + 1880958476U, // 18 - 34 + 1910668U, // 18 - 35 + 1911023U, // 18 - 36 + 1344088657U, // 18 - 37 + 1911761U, // 18 - 38 + 1912115U, // 18 - 39 + 1075654293U, // 18 - 40 + 1912853U, // 18 - 41 + 3223138679U, // 18 - 42 + 1913591U, // 18 - 43 + 1913946U, // 18 - 44 + 1612527037U, // 18 - 45 + 1914685U, // 18 - 46 + 1915039U, // 18 - 47 + 1344092673U, // 18 - 48 + 1915777U, // 18 - 49 + 1916131U, // 18 - 50 + 807222853U, // 18 - 51 + 1916869U, // 18 - 52 + 1880965416U, // 18 - 53 + 1917608U, // 18 - 54 + 1917963U, // 18 - 55 + 1344095597U, // 18 - 56 + 1918701U, // 18 - 57 + 1919055U, // 18 - 58 + 1075661233U, // 18 - 59 + 1919793U, // 19 - 0 + 3223145619U, // 19 - 1 + 1920531U, // 19 - 2 + 1920886U, // 19 - 3 + 1612533977U, // 19 - 4 + 1921625U, // 19 - 5 + 1921979U, // 19 - 6 + 1344099613U, // 19 - 7 + 1922716U, // 19 - 8 + 1923071U, // 19 - 9 + 538794337U, // 19 - 10 + 1923809U, // 19 - 11 + 1880972356U, // 19 - 12 + 1924548U, // 19 - 13 + 1924902U, // 19 - 14 + 1344102536U, // 19 - 15 + 1925640U, // 19 - 16 + 1925994U, // 19 - 17 + 807232717U, // 19 - 18 + 1926733U, // 19 - 19 + 2149410735U, // 19 - 20 + 1927471U, // 19 - 21 + 1927826U, // 19 - 22 + 1612540916U, // 19 - 23 + 1928564U, // 19 - 24 + 1928918U, // 19 - 25 + 1344106552U, // 19 - 26 + 1929656U, // 19 - 27 + 1930011U, // 19 - 28 + 807236733U, // 19 - 29 + 1930749U, // 19 - 30 + 1880979296U, // 19 - 31 + 1931488U, // 19 - 32 + 1931842U, // 19 - 33 + 1612544932U, // 19 - 34 + 1932580U, // 19 - 35 + 1932934U, // 19 - 36 + 1075675113U, // 19 - 37 + 1933673U, // 19 - 38 + 3491594955U, // 19 - 39 + 1934411U, // 19 - 40 + 1934765U, // 19 - 41 + 1612547855U, // 19 - 42 + 1935503U, // 19 - 43 + 1935857U, // 19 - 44 + 1344113492U, // 19 - 45 + 1936596U, // 19 - 46 + 1936951U, // 19 - 47 + 807243673U, // 19 - 48 + 1937689U, // 19 - 49 + 1880986235U, // 19 - 50 + 1938427U, // 19 - 51 + 1938781U, // 19 - 52 + 1344116415U, // 19 - 53 + 1939519U, // 19 - 54 + 1939874U, // 19 - 55 + 1075682053U, // 19 - 56 + 1940613U, // 19 - 57 + 2149424615U, // 19 - 58 + 1941351U, // 19 - 59 + 1941705U, // 20 - 0 + 1880990251U, // 20 - 1 + 1942443U, // 20 - 2 + 1942797U, // 20 - 3 + 1344120432U, // 20 - 4 + 1943536U, // 20 - 5 + 1943891U, // 20 - 6 + 1075686069U, // 20 - 7 + 1944629U, // 20 - 8 + 1880993175U, // 20 - 9 + 1945366U, // 20 - 10 + 1945721U, // 20 - 11 + 1612558811U, // 20 - 12 + 1946459U, // 20 - 13 + 1946814U, // 20 - 14 + 1075688992U, // 20 - 15 + 1947552U, // 20 - 16 + 3223173378U, // 20 - 17 + 1948290U, // 20 - 18 + 1948644U, // 20 - 19 + 1612561735U, // 20 - 20 + 1949383U, // 20 - 21 + 1949737U, // 20 - 22 + 1075691916U, // 20 - 23 + 1950476U, // 20 - 24 + 1950830U, // 20 - 25 + 807257552U, // 20 - 26 + 1951568U, // 20 - 27 + 1881000114U, // 20 - 28 + 1952306U, // 20 - 29 + 1952661U, // 20 - 30 + 1344130295U, // 20 - 31 + 1953399U, // 20 - 32 + 1953754U, // 20 - 33 + 1075695932U, // 20 - 34 + 1954492U, // 20 - 35 + 2686309406U, // 20 - 36 + 1955230U, // 20 - 37 + 1955584U, // 20 - 38 + 1612568675U, // 20 - 39 + 1956323U, // 20 - 40 + 1956677U, // 20 - 41 + 1344134312U, // 20 - 42 + 1957415U, // 20 - 43 + 1957769U, // 20 - 44 + 807264492U, // 20 - 45 + 1958507U, // 20 - 46 + 2149442510U, // 20 - 47 + 1959246U, // 20 - 48 + 1959601U, // 20 - 49 + 1344137235U, // 20 - 50 + 1960339U, // 20 - 51 + 1960693U, // 20 - 52 + 1075702871U, // 20 - 53 + 1961431U, // 20 - 54 + 2954751801U, // 20 - 55 + 1962169U, // 20 - 56 + 1962524U, // 20 - 57 + 1612575615U, // 20 - 58 + 1963263U, // 20 - 59 + 1963617U, // 21 - 0 + 1344141251U, // 21 - 1 + 1964355U, // 21 - 2 + 1964709U, // 21 - 3 + 807271431U, // 21 - 4 + 1965447U, // 21 - 5 + 1881013994U, // 21 - 6 + 1966186U, // 21 - 7 + 1966541U, // 21 - 8 + 1612579631U, // 21 - 9 + 1967279U, // 21 - 10 + 1967633U, // 21 - 11 + 1075709811U, // 21 - 12 + 1968371U, // 21 - 13 + 3491629653U, // 21 - 14 + 1969109U, // 21 - 15 + 1969464U, // 21 - 16 + 1612582554U, // 21 - 17 + 1970202U, // 21 - 18 + 1970556U, // 21 - 19 + 1344148190U, // 21 - 20 + 1971294U, // 21 - 21 + 1971649U, // 21 - 22 + 807278371U, // 21 - 23 + 1972387U, // 21 - 24 + 2149456390U, // 21 - 25 + 1973126U, // 21 - 26 + 1973480U, // 21 - 27 + 1612586570U, // 21 - 28 + 1974218U, // 21 - 29 + 1974572U, // 21 - 30 + 1075716751U, // 21 - 31 + 1975311U, // 21 - 32 + 1975665U, // 21 - 33 + 538846932U, // 21 - 34 + 1976404U, // 21 - 35 + 1881024950U, // 21 - 36 + 1977142U, // 21 - 37 + 1977496U, // 21 - 38 + 1344155130U, // 21 - 39 + 1978234U, // 21 - 40 + 1978589U, // 21 - 41 + 807285311U, // 21 - 42 + 1979327U, // 21 - 43 + 1881027874U, // 21 - 44 + 1980065U, // 21 - 45 + 1980419U, // 21 - 46 + 1612593509U, // 21 - 47 + 1981157U, // 21 - 48 + 1981512U, // 21 - 49 + 1075723691U, // 21 - 50 + 1982251U, // 21 - 51 + 1982605U, // 21 - 52 + 807289327U, // 21 - 53 + 1983343U, // 21 - 54 + 1881031889U, // 21 - 55 + 1984081U, // 21 - 56 + 1984435U, // 21 - 57 + 1344162070U, // 21 - 58 + 1985174U, // 21 - 59 + 1985529U, // 22 - 0 + 807292251U, // 22 - 1 + 1986267U, // 22 - 2 + 1881034813U, // 22 - 3 + 1987005U, // 22 - 4 + 1987359U, // 22 - 5 + 1612600449U, // 22 - 6 + 1988097U, // 22 - 7 + 1988452U, // 22 - 8 + 1075730631U, // 22 - 9 + 1989191U, // 22 - 10 + 1989545U, // 22 - 11 + 538860811U, // 22 - 12 + 1990283U, // 22 - 13 + 1881038829U, // 22 - 14 + 1991021U, // 22 - 15 + 1991375U, // 22 - 16 + 1344169010U, // 22 - 17 + 1992114U, // 22 - 18 + 1992468U, // 22 - 19 + 807299191U, // 22 - 20 + 1993206U, // 22 - 21 + 2149477208U, // 22 - 22 + 1993944U, // 22 - 23 + 1994299U, // 22 - 24 + 1344171933U, // 22 - 25 + 1995037U, // 22 - 26 + 1995392U, // 22 - 27 + 1075737570U, // 22 - 28 + 1996130U, // 22 - 29 + 2417915588U, // 22 - 30 + 1996868U, // 22 - 31 + 1997222U, // 22 - 32 + 1881045769U, // 22 - 33 + 1997961U, // 22 - 34 + 1998315U, // 22 - 35 + 1344175950U, // 22 - 36 + 1999054U, // 22 - 37 + 1999408U, // 22 - 38 + 1075741586U, // 22 - 39 + 2000146U, // 22 - 40 + 2417919604U, // 22 - 41 + 2000884U, // 22 - 42 + 2001239U, // 22 - 43 + 1612614329U, // 22 - 44 + 2001977U, // 22 - 45 + 2002332U, // 22 - 46 + 1344179966U, // 22 - 47 + 2003069U, // 22 - 48 + 3491664351U, // 22 - 49 + 2003807U, // 22 - 50 + 2004162U, // 22 - 51 + 1881052709U, // 22 - 52 + 2004901U, // 22 - 53 + 2005255U, // 22 - 54 + 1344182889U, // 22 - 55 + 2005993U, // 22 - 56 + 2006347U, // 22 - 57 + 807313069U, // 22 - 58 + 2007085U, // 22 - 59 + 2149491088U, // 23 - 0 + 2007824U, // 23 - 1 + 2008179U, // 23 - 2 + 1612621269U, // 23 - 3 + 2008917U, // 23 - 4 + 2009271U, // 23 - 5 + 1344186905U, // 23 - 6 + 2010009U, // 23 - 7 + 2010363U, // 23 - 8 + 538881630U, // 23 - 9 + 2011102U, // 23 - 10 + 1881059649U, // 23 - 11 + 2011840U, // 23 - 12 + 2012195U, // 23 - 13 + 1612625285U, // 23 - 14 + 2012932U, // 23 - 15 + 2013287U, // 23 - 16 + 1075755465U, // 23 - 17 + 2014025U, // 23 - 18 + 2149498028U, // 23 - 19 + 2014764U, // 23 - 20 + 2015118U, // 23 - 21 + 1612628209U, // 23 - 22 + 2015856U, // 23 - 23 + 2016210U, // 23 - 24 + 1075758389U, // 23 - 25 + 2016949U, // 23 - 26 + 2017303U, // 23 - 27 + 807324026U, // 23 - 28 + 2018042U, // 23 - 29 + 1881066588U, // 23 - 30 + 2018780U, // 23 - 31 + 2019134U, // 23 - 32 + 1344196768U, // 23 - 33 + 2019872U, // 23 - 34 + 2020227U, // 23 - 35 + 807326949U, // 23 - 36 + 2020965U, // 23 - 37 + 1881069512U, // 23 - 38 + 2021704U, // 23 - 39 + 2022058U, // 23 - 40 + 1612635148U, // 23 - 41 + 2022796U, // 23 - 42 + 2023150U, // 23 - 43 + 1075765328U, // 23 - 44 + 2023889U, // 23 - 45 + 2024243U, // 23 - 46 + 807330966U, // 23 - 47 + 2024982U, // 23 - 48 + 1881073528U, // 23 - 49 + 2025719U, // 23 - 50 + 2026073U, // 23 - 51 + 1344203708U, // 23 - 52 + 2026812U, // 23 - 53 + 2027167U, // 23 - 54 + 807333889U, // 23 - 55 + 2027905U, // 23 - 56 + 2149511907U, // 23 - 57 + 2028643U, // 23 - 58 + 2028997U, // 23 - 59 + 1612642087U, // 24 - 0 + 2029735U, // 24 - 1 + 2030090U, // 24 - 2 + 1075772268U, // 24 - 3 + 2030829U, // 24 - 4 + 2031183U, // 24 - 5 + 807337905U, // 24 - 6 + 2031921U, // 24 - 7 + 1881080467U, // 24 - 8 + 2032659U, // 24 - 9 + 2033013U, // 24 - 10 + 1344210648U, // 24 - 11 + 2033752U, // 24 - 12 + 2034106U, // 24 - 13 + 1075776285U, // 24 - 14 + 2034845U, // 24 - 15 + 2417954303U, // 24 - 16 + 2035582U, // 24 - 17 + 2035937U, // 24 - 18 + 1612649027U, // 24 - 19 + 2036675U, // 24 - 20 + 2037030U, // 24 - 21 + 1344214664U, // 24 - 22 + 2037768U, // 24 - 23 + 2038122U, // 24 - 24 + 807344844U, // 24 - 25 + 2038860U, // 24 - 26 + 1881087407U, // 24 - 27 + 2039599U, // 24 - 28 + 2039953U, // 24 - 29 + 1344217588U, // 24 - 30 + 2040692U, // 24 - 31 + 2041046U, // 24 - 32 + 1075783224U, // 24 - 33 + 2041784U, // 24 - 34 + 2417961242U, // 24 - 35 + 2042522U, // 24 - 36 + 2042876U, // 24 - 37 + 1612655967U, // 24 - 38 + 2043615U, // 24 - 39 + 2043970U, // 24 - 40 + 1344221604U, // 24 - 41 + 2044708U, // 24 - 42 + 2045062U, // 24 - 43 + 538916328U, // 24 - 44 + 2045800U, // 24 - 45 + 1881094346U, // 24 - 46 + 2046539U, // 24 - 47 + 2046893U, // 24 - 48 + 1612659984U, // 24 - 49 + 2047632U, // 24 - 50 + 2047986U, // 24 - 51 + 1075790164U, // 24 - 52 + 2048723U, // 24 - 53 + 2149532726U, // 24 - 54 + 2049462U, // 24 - 55 + 2049816U, // 24 - 56 + 1612662907U, // 24 - 57 + 2050555U, // 24 - 58 + 2050909U, // 24 - 59 + 1344228543U, // 25 - 0 + 2051647U, // 25 - 1 + 2052001U, // 25 - 2 + 807358724U, // 25 - 3 + 2052740U, // 25 - 4 + 1881101286U, // 25 - 5 + 2053479U, // 25 - 6 + 2053833U, // 25 - 7 + 1612666923U, // 25 - 8 + 2054571U, // 25 - 9 + 2054925U, // 25 - 10 + 1075797103U, // 25 - 11 + 2055663U, // 25 - 12 + 3223281490U, // 25 - 13 + 2056402U, // 25 - 14 + 2056756U, // 25 - 15 + 1612669847U, // 25 - 16 + 2057495U, // 25 - 17 + 2057849U, // 25 - 18 + 1344235483U, // 25 - 19 + 2058587U, // 25 - 20 + 2058941U, // 25 - 21 + 807365664U, // 25 - 22 + 2059680U, // 25 - 23 + 1881108226U, // 25 - 24 + 2060418U, // 25 - 25 + 2060772U, // 25 - 26 + 1612673862U, // 25 - 27 + 2061510U, // 25 - 28 + 2061864U, // 25 - 29 + 807368587U, // 25 - 30 + 2062603U, // 25 - 31 + 2062958U, // 25 - 32 + 538934224U, // 25 - 33 + 2063696U, // 25 - 34 + 1612676786U, // 25 - 35 + 2064434U, // 25 - 36 + 2064788U, // 25 - 37 + 1344242422U, // 25 - 38 + 2065526U, // 25 - 39 + 2065881U, // 25 - 40 + 807372604U, // 25 - 41 + 2066620U, // 25 - 42 + 1881115166U, // 25 - 43 + 2067358U, // 25 - 44 + 2067712U, // 25 - 45 + 1612680802U, // 25 - 46 + 2068450U, // 25 - 47 + 2068804U, // 25 - 48 + 1075810983U, // 25 - 49 + 2069543U, // 25 - 50 + 2417989002U, // 25 - 51 + 2070282U, // 25 - 52 + 2070636U, // 25 - 53 + 1612683726U, // 25 - 54 + 2071373U, // 25 - 55 + 2071728U, // 25 - 56 + 1344249362U, // 25 - 57 + 2072466U, // 25 - 58 + 2072821U, // 25 - 59 + 807379543U, // 26 - 0 + 2073559U, // 26 - 1 + 1881122105U, // 26 - 2 + 2074297U, // 26 - 3 + 2074651U, // 26 - 4 + 1612687742U, // 26 - 5 + 2075390U, // 26 - 6 + 2075744U, // 26 - 7 + 1075817923U, // 26 - 8 + 2076483U, // 26 - 9 + 2417995941U, // 26 - 10 + 2077221U, // 26 - 11 + 2077575U, // 26 - 12 + 1881126121U, // 26 - 13 + 2078313U, // 26 - 14 + 2078668U, // 26 - 15 + 1344256302U, // 26 - 16 + 2079406U, // 26 - 17 + 2079761U, // 26 - 18 + 1075821939U, // 26 - 19 + 2080499U, // 26 - 20 + 2149564501U, // 26 - 21 + 2081237U, // 26 - 22 + 2081591U, // 26 - 23 + 1612694682U, // 26 - 24 + 2082330U, // 26 - 25 + 2082684U, // 26 - 26 + 1075824863U, // 26 - 27 + 2083422U, // 26 - 28 + 2418002880U, // 26 - 29 + 2084160U, // 26 - 30 + 2084514U, // 26 - 31 + 1612697605U, // 26 - 32 + 2085253U, // 26 - 33 + 2085608U, // 26 - 34 + 1344263242U, // 26 - 35 + 2086346U, // 26 - 36 + 2086700U, // 26 - 37 + 807393422U, // 26 - 38 + 2087438U, // 26 - 39 + 2149571440U, // 26 - 40 + 2088176U, // 26 - 41 + 2088531U, // 26 - 42 + 1612701622U, // 26 - 43 + 2089270U, // 26 - 44 + 2089624U, // 26 - 45 + 1075831802U, // 26 - 46 + 2090362U, // 26 - 47 + 3223316188U, // 26 - 48 + 2091100U, // 26 - 49 + 2091454U, // 26 - 50 + 1881140001U, // 26 - 51 + 2092193U, // 26 - 52 + 2092548U, // 26 - 53 + 1344270182U, // 26 - 54 + 2093286U, // 26 - 55 + 2093640U, // 26 - 56 + 807400362U, // 26 - 57 + 2094378U, // 26 - 58 + 2149578380U, // 26 - 59 + 2095116U, // 27 - 0 + 2095471U, // 27 - 1 + 1344273105U, // 27 - 2 + 2096209U, // 27 - 3 + 2096563U, // 27 - 4 + 1075838741U, // 27 - 5 + 2097301U, // 27 - 6 + 3223323128U, // 27 - 7 + 2098040U, // 27 - 8 + 2098394U, // 27 - 9 + 1612711485U, // 27 - 10 + 2099133U, // 27 - 11 + 2099487U, // 27 - 12 + 1344277121U, // 27 - 13 + 2100225U, // 27 - 14 + 2100579U, // 27 - 15 + 807407302U, // 27 - 16 + 2101318U, // 27 - 17 + 1881149864U, // 27 - 18 + 2102056U, // 27 - 19 + 2102411U, // 27 - 20 + 1612715501U, // 27 - 21 + 2103149U, // 27 - 22 + 2103503U, // 27 - 23 + 1075845681U, // 27 - 24 + 2104241U, // 27 - 25 + 2104596U, // 27 - 26 + 538975862U, // 27 - 27 + 2105334U, // 27 - 28 + 1881153881U, // 27 - 29 + 2106072U, // 27 - 30 + 2106426U, // 27 - 31 + 1344284061U, // 27 - 32 + 2107164U, // 27 - 33 + 2107519U, // 27 - 34 + 807414242U, // 27 - 35 + 2108258U, // 27 - 36 + 1881156804U, // 27 - 37 + 2108996U, // 27 - 38 + 2109350U, // 27 - 39 + 1612722440U, // 27 - 40 + 2110088U, // 27 - 41 + 2110442U, // 27 - 42 + 1075852621U, // 27 - 43 + 2111181U, // 27 - 44 + 2111536U, // 27 - 45 + 538982802U, // 27 - 46 + 2112274U, // 27 - 47 + 1881160820U, // 27 - 48 + 2113012U, // 27 - 49 + 2113366U, // 27 - 50 + 1344291000U, // 27 - 51 + 2114104U, // 27 - 52 + 2114459U, // 27 - 53 + 1075856638U, // 27 - 54 + 2115198U, // 27 - 55 + 2149599200U, // 27 - 56 + 2115936U, // 27 - 57 + 2116290U, // 27 - 58 + 1612729380U, // 27 - 59 + 2117028U, // 28 - 0 + 2117382U, // 28 - 1 + 1075859561U, // 28 - 2 + 2118121U, // 28 - 3 + 2118475U, // 28 - 4 + 807425198U, // 28 - 5 + 2119213U, // 28 - 6 + 1881167759U, // 28 - 7 + 2119951U, // 28 - 8 + 2120306U, // 28 - 9 + 1344297940U, // 28 - 10 + 2121044U, // 28 - 11 + 2121399U, // 28 - 12 + 1075863577U, // 28 - 13 + 2122137U, // 28 - 14 + 2149606139U, // 28 - 15 + 2122875U, // 28 - 16 + 2123229U, // 28 - 17 + 1612736320U, // 28 - 18 + 2123968U, // 28 - 19 + 2124322U, // 28 - 20 + 1075866501U, // 28 - 21 + 2125061U, // 28 - 22 + 2686479975U, // 28 - 23 + 2125799U, // 28 - 24 + 2126153U, // 28 - 25 + 1881174699U, // 28 - 26 + 2126891U, // 28 - 27 + 2127246U, // 28 - 28 + 1344304880U, // 28 - 29 + 2127984U, // 28 - 30 + 2128339U, // 28 - 31 + 1075870517U, // 28 - 32 + 2129076U, // 28 - 33 + 2149613078U, // 28 - 34 + 2129814U, // 28 - 35 + 2130169U, // 28 - 36 + 1612743260U, // 28 - 37 + 2130908U, // 28 - 38 + 2131262U, // 28 - 39 + 1075873440U, // 28 - 40 + 2132000U, // 28 - 41 + 3223357826U, // 28 - 42 + 2132738U, // 28 - 43 + 2133092U, // 28 - 44 + 1881181639U, // 28 - 45 + 2133831U, // 28 - 46 + 2134186U, // 28 - 47 + 1344311820U, // 28 - 48 + 2134924U, // 28 - 49 + 2135278U, // 28 - 50 + 1075877456U, // 28 - 51 + 2136016U, // 28 - 52 + 2149620018U, // 28 - 53 + 2136754U, // 28 - 54 + 2137109U, // 28 - 55 + 1612750200U, // 28 - 56 + 2137848U, // 28 - 57 + 2138202U, // 28 - 58 + 1344315836U, // 28 - 59 + 2138940U, // 29 - 0 + 2139294U, // 29 - 1 + 539010560U, // 29 - 2 + 2140032U, // 29 - 3 + 1881188579U, // 29 - 4 + 2140771U, // 29 - 5 + 2141125U, // 29 - 6 + 1344318760U, // 29 - 7 + 2141863U, // 29 - 8 + 2142217U, // 29 - 9 + 807448940U, // 29 - 10 + 2142956U, // 29 - 11 + 2149626958U, // 29 - 12 + 2143694U, // 29 - 13 + 2144049U, // 29 - 14 + 1612757139U, // 29 - 15 + 2144787U, // 29 - 16 + 2145141U, // 29 - 17 + 1344322775U, // 29 - 18 + 2145879U, // 29 - 19 + 2146234U, // 29 - 20 + 539017500U, // 29 - 21 + 2146972U, // 29 - 22 + 1881195519U, // 29 - 23 + 2147711U, // 29 - 24 + 2148065U, // 29 - 25 + 1612761155U, // 29 - 26 + 2148803U, // 29 - 27 + 2149157U, // 29 - 28 + 1075891335U, // 29 - 29 + 2149896U, // 29 - 30 + 2149633898U, // 29 - 31 + 2150634U, // 29 - 32 + 2150989U, // 29 - 33 + 1612764079U, // 29 - 34 + 2151726U, // 29 - 35 + 2152080U, // 29 - 36 + 1075894259U, // 29 - 37 + 2152819U, // 29 - 38 + 2153174U, // 29 - 39 + 807459896U, // 29 - 40 + 2153912U, // 29 - 41 + 1881202458U, // 29 - 42 + 2154650U, // 29 - 43 + 2155004U, // 29 - 44 + 1612768094U, // 29 - 45 + 2155742U, // 29 - 46 + 2156097U, // 29 - 47 + 1075898276U, // 29 - 48 + 2156836U, // 29 - 49 + 2149640838U, // 29 - 50 + 2157574U, // 29 - 51 + 2157928U, // 29 - 52 + 1881206474U, // 29 - 53 + 2158666U, // 29 - 54 + 2159020U, // 29 - 55 + 1344336655U, // 29 - 56 + 2159759U, // 29 - 57 + 2160114U, // 29 - 58 + 807466836U, // 29 - 59 + 2160852U, // 30 - 0 + 1881209398U, // 30 - 1 + 2161589U, // 30 - 2 + 2161944U, // 30 - 3 + 1344339578U, // 30 - 4 + 2162682U, // 30 - 5 + 2163037U, // 30 - 6 + 1075905215U, // 30 - 7 + 2163775U, // 30 - 8 + 2149647778U, // 30 - 9 + 2164513U, // 30 - 10 + 2164867U, // 30 - 11 + 1612777958U, // 30 - 12 + 2165606U, // 30 - 13 + 2165960U, // 30 - 14 + 1075908139U, // 30 - 15 + 2166699U, // 30 - 16 + 2167053U, // 30 - 17 + 807473775U, // 30 - 18 + 2167791U, // 30 - 19 + 1881216337U, // 30 - 20 + 2168529U, // 30 - 21 + 2168883U, // 30 - 22 + 1344346518U, // 30 - 23 + 2169622U, // 30 - 24 + 2169977U, // 30 - 25 + 1075912155U, // 30 - 26 + 2170715U, // 30 - 27 + 2149654717U, // 30 - 28 + 2171453U, // 30 - 29 + 2171807U, // 30 - 30 + 1881220353U, // 30 - 31 + 2172546U, // 30 - 32 + 2172900U, // 30 - 33 + 1344350535U, // 30 - 34 + 2173639U, // 30 - 35 + 2173993U, // 30 - 36 + 807480715U, // 30 - 37 + 2174730U, // 30 - 38 + 1881223277U, // 30 - 39 + 2175469U, // 30 - 40 + 2175823U, // 30 - 41 + 1344353458U, // 30 - 42 + 2176562U, // 30 - 43 + 2176916U, // 30 - 44 + 1075919094U, // 30 - 45 + 2177654U, // 30 - 46 + 2418097112U, // 30 - 47 + 2178392U, // 30 - 48 + 2178747U, // 30 - 49 + 1612791837U, // 30 - 50 + 2179486U, // 30 - 51 + 2179840U, // 30 - 52 + 1344357474U, // 30 - 53 + 2180578U, // 30 - 54 + 2180932U, // 30 - 55 + 539052198U, // 30 - 56 + 2181670U, // 30 - 57 + 1881230217U, // 30 - 58 + 2182409U, // 30 - 59 + 2182763U, // 31 - 0 + 1612795854U, // 31 - 1 + 2183502U, // 31 - 2 + 2183856U, // 31 - 3 + 1075926034U, // 31 - 4 + 2184594U, // 31 - 5 + 2418104052U, // 31 - 6 + 2185332U, // 31 - 7 + 2185687U, // 31 - 8 + 1612798777U, // 31 - 9 + 2186425U, // 31 - 10 + 2186780U, // 31 - 11 + 1344364413U, // 31 - 12 + 2187517U, // 31 - 13 + 2187872U, // 31 - 14 + 807494594U, // 31 - 15 + 2188610U, // 31 - 16 + 1881237157U, // 31 - 17 + 2189349U, // 31 - 18 + 2189703U, // 31 - 19 + 1612802793U, // 31 - 20 + 2190441U, // 31 - 21 + 2190795U, // 31 - 22 + 1075932973U, // 31 - 23 + 2191533U, // 31 - 24 + 2418110992U, // 31 - 25 + 2192272U, // 31 - 26 + 2192627U, // 31 - 27 + 1881241173U, // 31 - 28 + 2193365U, // 31 - 29 + 2193719U, // 31 - 30 + 1344371353U, // 31 - 31 + 2194457U, // 31 - 32 + 2194811U, // 31 - 33 + 807501534U, // 31 - 34 + 2195550U, // 31 - 35 + 1881244097U, // 31 - 36 + 2196289U, // 31 - 37 + 2196643U, // 31 - 38 + 1612809733U, // 31 - 39 + 2197380U, // 31 - 40 + 2197735U, // 31 - 41 + 1075939913U, // 31 - 42 + 2198473U, // 31 - 43 + 3223424300U, // 31 - 44 + 2199212U, // 31 - 45 + 2199566U, // 31 - 46 + 1881248112U, // 31 - 47 + 2200304U, // 31 - 48 + 2200658U, // 31 - 49 + 1344378293U, // 31 - 50 + 2201397U, // 31 - 51 + 2201751U, // 31 - 52 + 807508474U, // 31 - 53 + 2202490U, // 31 - 54 + 1881251036U, // 31 - 55 + 2203228U, // 31 - 56 + 2203582U, // 31 - 57 + 1612816672U, // 31 - 58 + 2204320U, // 31 - 59 + 2204675U, // 32 - 0 + 1075946853U, // 32 - 1 + 2205413U, // 32 - 2 + 2149689416U, // 32 - 3 + 2206152U, // 32 - 4 + 2206506U, // 32 - 5 + 1881255052U, // 32 - 6 + 2207244U, // 32 - 7 + 2207598U, // 32 - 8 + 1344385233U, // 32 - 9 + 2208337U, // 32 - 10 + 2208691U, // 32 - 11 + 807515414U, // 32 - 12 + 2209429U, // 32 - 13 + 1881257975U, // 32 - 14 + 2210167U, // 32 - 15 + 2210521U, // 32 - 16 + 1612823612U, // 32 - 17 + 2211260U, // 32 - 18 + 2211615U, // 32 - 19 + 1075953793U, // 32 - 20 + 2212353U, // 32 - 21 + 2418131811U, // 32 - 22 + 2213091U, // 32 - 23 + 2213445U, // 32 - 24 + 1881261991U, // 32 - 25 + 2214183U, // 32 - 26 + 2214538U, // 32 - 27 + 1344392173U, // 32 - 28 + 2215277U, // 32 - 29 + 2215631U, // 32 - 30 + 1075957809U, // 32 - 31 + 2216369U, // 32 - 32 + 2149700371U, // 32 - 33 + 2217107U, // 32 - 34 + 2217461U, // 32 - 35 + 1612830552U, // 32 - 36 + 2218200U, // 32 - 37 + 2218555U, // 32 - 38 + 1075960733U, // 32 - 39 + 2219293U, // 32 - 40 + 2418138751U, // 32 - 41 + 2220030U, // 32 - 42 + 2220385U, // 32 - 43 + 1612833475U, // 32 - 44 + 2221123U, // 32 - 45 + 2221478U, // 32 - 46 + 1344399112U, // 32 - 47 + 2222216U, // 32 - 48 + 2222570U, // 32 - 49 + 1075964748U, // 32 - 50 + 2223308U, // 32 - 51 + 2149707311U, // 32 - 52 + 2224047U, // 32 - 53 + 2224401U, // 32 - 54 + 1612837492U, // 32 - 55 + 2225140U, // 32 - 56 + 2225494U, // 32 - 57 + 1344403128U, // 32 - 58 + 2226232U, // 32 - 59 + 2418145690U, // 33 - 0 + 2226970U, // 33 - 1 + 2227325U, // 33 - 2 + 1881275871U, // 33 - 3 + 2228063U, // 33 - 4 + 2228418U, // 33 - 5 + 1612841508U, // 33 - 6 + 2229156U, // 33 - 7 + 2229510U, // 33 - 8 + 807536232U, // 33 - 9 + 2230248U, // 33 - 10 + 2149714251U, // 33 - 11 + 2230987U, // 33 - 12 + 2231341U, // 33 - 13 + 1612844432U, // 33 - 14 + 2232079U, // 33 - 15 + 2232433U, // 33 - 16 + 1075974612U, // 33 - 17 + 2233171U, // 33 - 18 + 3491894454U, // 33 - 19 + 2233910U, // 33 - 20 + 2234265U, // 33 - 21 + 1612847355U, // 33 - 22 + 2235003U, // 33 - 23 + 2235357U, // 33 - 24 + 1344412991U, // 33 - 25 + 2236095U, // 33 - 26 + 2236449U, // 33 - 27 + 807543172U, // 33 - 28 + 2237188U, // 33 - 29 + 1881285735U, // 33 - 30 + 2237927U, // 33 - 31 + 2238281U, // 33 - 32 + 1612851371U, // 33 - 33 + 2239019U, // 33 - 34 + 2239373U, // 33 - 35 + 1344417007U, // 33 - 36 + 2240111U, // 33 - 37 + 2240466U, // 33 - 38 + 539111733U, // 33 - 39 + 2241205U, // 33 - 40 + 1881289751U, // 33 - 41 + 2241943U, // 33 - 42 + 2242297U, // 33 - 43 + 1344419931U, // 33 - 44 + 2243035U, // 33 - 45 + 2243389U, // 33 - 46 + 807550112U, // 33 - 47 + 2244128U, // 33 - 48 + 1881292674U, // 33 - 49 + 2244866U, // 33 - 50 + 2245220U, // 33 - 51 + 1612858310U, // 33 - 52 + 2245958U, // 33 - 53 + 2246313U, // 33 - 54 + 1075988491U, // 33 - 55 + 2247051U, // 33 - 56 + 2247406U, // 33 - 57 + 539118672U, // 33 - 58 + 2248144U, // 33 - 59 + 1881296690U, // 34 - 0 + 2248882U, // 34 - 1 + 2249236U, // 34 - 2 + 1344426871U, // 34 - 3 + 2249975U, // 34 - 4 + 2250329U, // 34 - 5 + 1075992508U, // 34 - 6 + 2251068U, // 34 - 7 + 2149735070U, // 34 - 8 + 2251806U, // 34 - 9 + 2252160U, // 34 - 10 + 1612865250U, // 34 - 11 + 2252898U, // 34 - 12 + 2253253U, // 34 - 13 + 1075995431U, // 34 - 14 + 2253991U, // 34 - 15 + 2254346U, // 34 - 16 + 539125612U, // 34 - 17 + 2255083U, // 34 - 18 + 1881303630U, // 34 - 19 + 2255821U, // 34 - 20 + 2256176U, // 34 - 21 + 1344433811U, // 34 - 22 + 2256915U, // 34 - 23 + 2257269U, // 34 - 24 + 1075999447U, // 34 - 25 + 2258007U, // 34 - 26 + 2149742009U, // 34 - 27 + 2258745U, // 34 - 28 + 2259099U, // 34 - 29 + 1612872190U, // 34 - 30 + 2259838U, // 34 - 31 + 2260193U, // 34 - 32 + 1344437827U, // 34 - 33 + 2260931U, // 34 - 34 + 2418180389U, // 34 - 35 + 2261669U, // 34 - 36 + 2262023U, // 34 - 37 + 1881310569U, // 34 - 38 + 2262761U, // 34 - 39 + 2263116U, // 34 - 40 + 1344440751U, // 34 - 41 + 2263855U, // 34 - 42 + 2264209U, // 34 - 43 + 1076006387U, // 34 - 44 + 2264947U, // 34 - 45 + 2149748949U, // 34 - 46 + 2265685U, // 34 - 47 + 2266039U, // 34 - 48 + 1612879130U, // 34 - 49 + 2266778U, // 34 - 50 + 2267132U, // 34 - 51 + 1344444767U, // 34 - 52 + 2267870U, // 34 - 53 + 2955058240U, // 34 - 54 + 2268608U, // 34 - 55 + 2268963U, // 34 - 56 + 1881317509U, // 34 - 57 + 2269701U, // 34 - 58 + 2270056U, // 34 - 59 + 1344447690U, // 35 - 0 + 2270794U, // 35 - 1 + 2271148U, // 35 - 2 + 1076013326U, // 35 - 3 + 2271886U, // 35 - 4 + 2149755889U, // 35 - 5 + 2272625U, // 35 - 6 + 2272979U, // 35 - 7 + 1612886070U, // 35 - 8 + 2273718U, // 35 - 9 + 2274072U, // 35 - 10 + 1344451706U, // 35 - 11 + 2274810U, // 35 - 12 + 3223500636U, // 35 - 13 + 2275548U, // 35 - 14 + 2275903U, // 35 - 15 + 1881324449U, // 35 - 16 + 2276641U, // 35 - 17 + 2276996U, // 35 - 18 + 1344454630U, // 35 - 19 + 2277733U, // 35 - 20 + 2278087U, // 35 - 21 + 1076020266U, // 35 - 22 + 2278826U, // 35 - 23 + 2418198285U, // 35 - 24 + 2279565U, // 35 - 25 + 2279919U, // 35 - 26 + 1612893009U, // 35 - 27 + 2280657U, // 35 - 28 + 2281011U, // 35 - 29 + 1344458645U, // 35 - 30 + 2281749U, // 35 - 31 + 2282104U, // 35 - 32 + 539153371U, // 35 - 33 + 2282843U, // 35 - 34 + 1881331389U, // 35 - 35 + 2283581U, // 35 - 36 + 2283935U, // 35 - 37 + 1612897025U, // 35 - 38 + 2284673U, // 35 - 39 + 2285027U, // 35 - 40 + 1076027206U, // 35 - 41 + 2285766U, // 35 - 42 + 2149769769U, // 35 - 43 + 2286504U, // 35 - 44 + 2286859U, // 35 - 45 + 1612899949U, // 35 - 46 + 2287596U, // 35 - 47 + 2287951U, // 35 - 48 + 1344465585U, // 35 - 49 + 2288689U, // 35 - 50 + 2289044U, // 35 - 51 + 539160310U, // 35 - 52 + 2289782U, // 35 - 53 + 1881338329U, // 35 - 54 + 2290520U, // 35 - 55 + 2290874U, // 35 - 56 + 1612903965U, // 35 - 57 + 2291613U, // 35 - 58 + 2291967U, // 35 - 59 + 1076034146U, // 36 - 0 + 2292706U, // 36 - 1 + 2149776708U, // 36 - 2 + 2293444U, // 36 - 3 + 2293798U, // 36 - 4 + 1881342344U, // 36 - 5 + 2294536U, // 36 - 6 + 2294890U, // 36 - 7 + 1344472525U, // 36 - 8 + 2295629U, // 36 - 9 + 2295984U, // 36 - 10 + 807602706U, // 36 - 11 + 2296722U, // 36 - 12 + 2149780724U, // 36 - 13 + 2297460U, // 36 - 14 + 2297814U, // 36 - 15 + 1612910904U, // 36 - 16 + 2298553U, // 36 - 17 + 2298907U, // 36 - 18 + 1076041086U, // 36 - 19 + 2299646U, // 36 - 20 + 2149783648U, // 36 - 21 + 2300383U, // 36 - 22 + 2300737U, // 36 - 23 + 1612913828U, // 36 - 24 + 2301476U, // 36 - 25 + 2301831U, // 36 - 26 + 1344479465U, // 36 - 27 + 2302569U, // 36 - 28 + 2302923U, // 36 - 29 + 807609645U, // 36 - 30 + 2303661U, // 36 - 31 + 2149787663U, // 36 - 32 + 2304399U, // 36 - 33 + 2304754U, // 36 - 34 + 1344482388U, // 36 - 35 + 2305493U, // 36 - 36 + 2305847U, // 36 - 37 + 1076048025U, // 36 - 38 + 2306585U, // 36 - 39 + 2149790587U, // 36 - 40 + 2307323U, // 36 - 41 + 2307677U, // 36 - 42 + 1881356224U, // 36 - 43 + 2308416U, // 36 - 44 + 2308770U, // 36 - 45 + 1344486405U, // 36 - 46 + 2309509U, // 36 - 47 + 2309863U, // 36 - 48 + 807616585U, // 36 - 49 + 2310601U, // 36 - 50 + 1881359147U, // 36 - 51 + 2311339U, // 36 - 52 + 2311694U, // 36 - 53 + 1344489328U, // 36 - 54 + 2312432U, // 36 - 55 + 2312787U, // 36 - 56 + 1076054964U, // 36 - 57 + 2313524U, // 36 - 58 + 2418232983U, // 36 - 59 + 2314263U, // 37 - 0 + 2314617U, // 37 - 1 + 1612927708U, // 37 - 2 + 2315356U, // 37 - 3 + 2315710U, // 37 - 4 + 1344493344U, // 37 - 5 + 2316448U, // 37 - 6 + 2316802U, // 37 - 7 + 807623524U, // 37 - 8 + 2317540U, // 37 - 9 + 1881366087U, // 37 - 10 + 2318279U, // 37 - 11 + 2318634U, // 37 - 12 + 1612931724U, // 37 - 13 + 2319372U, // 37 - 14 + 2319726U, // 37 - 15 + 1076061904U, // 37 - 16 + 2320464U, // 37 - 17 + 3223546290U, // 37 - 18 + 2321202U, // 37 - 19 + 2321557U, // 37 - 20 + 1612934648U, // 37 - 21 + 2322296U, // 37 - 22 + 2322650U, // 37 - 23 + 1344500284U, // 37 - 24 + 2323387U, // 37 - 25 + 2323742U, // 37 - 26 + 539195008U, // 37 - 27 + 2324480U, // 37 - 28 + 1881373027U, // 37 - 29 + 2325219U, // 37 - 30 + 2325573U, // 37 - 31 + 1612938663U, // 37 - 32 + 2326311U, // 37 - 33 + 2326665U, // 37 - 34 + 1076068844U, // 37 - 35 + 2327404U, // 37 - 36 + 2418246862U, // 37 - 37 + 2328142U, // 37 - 38 + 2328497U, // 37 - 39 + 1881377043U, // 37 - 40 + 2329235U, // 37 - 41 + 2329589U, // 37 - 42 + 1344507223U, // 37 - 43 + 2330327U, // 37 - 44 + 2330682U, // 37 - 45 + 807637404U, // 37 - 46 + 2331420U, // 37 - 47 + 2149815423U, // 37 - 48 + 2332159U, // 37 - 49 + 2332513U, // 37 - 50 + 1612945603U, // 37 - 51 + 2333251U, // 37 - 52 + 2333605U, // 37 - 53 + 1076075784U, // 37 - 54 + 2334344U, // 37 - 55 + 2418253802U, // 37 - 56 + 2335082U, // 37 - 57 + 2335436U, // 37 - 58 + 1881383982U, // 37 - 59 + 2336174U, // 38 - 0 + 2336528U, // 38 - 1 + 1344514163U, // 38 - 2 + 2337267U, // 38 - 3 + 2337622U, // 38 - 4 + 1076079800U, // 38 - 5 + 2338360U, // 38 - 6 + 2149822362U, // 38 - 7 + 2339098U, // 38 - 8 + 2339452U, // 38 - 9 + 1612952542U, // 38 - 10 + 2340190U, // 38 - 11 + 2340545U, // 38 - 12 + 1076082724U, // 38 - 13 + 2341284U, // 38 - 14 + 2149825286U, // 38 - 15 + 2342022U, // 38 - 16 + 2342376U, // 38 - 17 + 1881390922U, // 38 - 18 + 2343114U, // 38 - 19 + 2343468U, // 38 - 20 + 1344521103U, // 38 - 21 + 2344207U, // 38 - 22 + 2344562U, // 38 - 23 + 1076086740U, // 38 - 24 + 2345300U, // 38 - 25 + 2149829302U, // 38 - 26 + 2346037U, // 38 - 27 + 2346392U, // 38 - 28 + 1612959482U, // 38 - 29 + 2347130U, // 38 - 30 + 2347485U, // 38 - 31 + 1076089663U, // 38 - 32 + 2348223U, // 38 - 33 + 2418267681U, // 38 - 34 + 2348961U, // 38 - 35 + 2349315U, // 38 - 36 + 1881397862U, // 38 - 37 + 2350054U, // 38 - 38 + 2350408U, // 38 - 39 + 1344528043U, // 38 - 40 + 2351147U, // 38 - 41 + 2351501U, // 38 - 42 + 807658223U, // 38 - 43 + 2352239U, // 38 - 44 + 2149836241U, // 38 - 45 + 2352977U, // 38 - 46 + 2353332U, // 38 - 47 + 1612966422U, // 38 - 48 + 2354070U, // 38 - 49 + 2354425U, // 38 - 50 + 1344532059U, // 38 - 51 + 2355163U, // 38 - 52 + 2686710077U, // 38 - 53 + 2355901U, // 38 - 54 + 2356255U, // 38 - 55 + 1881404802U, // 38 - 56 + 2356994U, // 38 - 57 + 2357348U, // 38 - 58 + 1344534983U, // 38 - 59 + 2358086U, // 39 - 0 + 2358440U, // 39 - 1 + 1076100619U, // 39 - 2 + 2359178U, // 39 - 3 + 2149843181U, // 39 - 4 + 2359917U, // 39 - 5 + 2360272U, // 39 - 6 + 1612973362U, // 39 - 7 + 2361010U, // 39 - 8 + 2361364U, // 39 - 9 + 1344538998U, // 39 - 10 + 2362102U, // 39 - 11 + 2686717016U, // 39 - 12 + 2362840U, // 39 - 13 + 2363195U, // 39 - 14 + 1881411742U, // 39 - 15 + 2363934U, // 39 - 16 + 2364288U, // 39 - 17 + 1612977378U, // 39 - 18 + 2365026U, // 39 - 19 + 2365380U, // 39 - 20 + 807672102U, // 39 - 21 + 2366118U, // 39 - 22 + 2149850121U, // 39 - 23 + 2366857U, // 39 - 24 + 2367212U, // 39 - 25 + 1612980302U, // 39 - 26 + 2367950U, // 39 - 27 + 2368304U, // 39 - 28 + 1076110482U, // 39 - 29 + 2369042U, // 39 - 30 + 2955159412U, // 39 - 31 + 2369780U, // 39 - 32 + 2370135U, // 39 - 33 + 1881418681U, // 39 - 34 + 2370873U, // 39 - 35 + 2371227U, // 39 - 36 + 1612984317U, // 39 - 37 + 2371965U, // 39 - 38 + 2372320U, // 39 - 39 + 1076114498U, // 39 - 40 + 2373058U, // 39 - 41 + 2149857061U, // 39 - 42 + 2373797U, // 39 - 43 + 2374151U, // 39 - 44 + 1612987241U, // 39 - 45 + 2374889U, // 39 - 46 + 2375243U, // 39 - 47 + 1344552878U, // 39 - 48 + 2375982U, // 39 - 49 + 2376336U, // 39 - 50 + 807683059U, // 39 - 51 + 2377075U, // 39 - 52 + 1881425621U, // 39 - 53 + 2377813U, // 39 - 54 + 2378167U, // 39 - 55 + 1344555801U, // 39 - 56 + 2378905U, // 39 - 57 + 2379260U, // 39 - 58 + 807685982U, // 39 - 59 + 2379998U, // 40 - 0 + 2149864001U, // 40 - 1 + 2380736U, // 40 - 2 + 2381090U, // 40 - 3 + 1612994181U, // 40 - 4 + 2381828U, // 40 - 5 + 2382183U, // 40 - 6 + 1076124362U, // 40 - 7 + 2382922U, // 40 - 8 + 2383276U, // 40 - 9 + 807689998U, // 40 - 10 + 2384014U, // 40 - 11 + 1881432560U, // 40 - 12 + 2384752U, // 40 - 13 + 2385106U, // 40 - 14 + 1344562741U, // 40 - 15 + 2385845U, // 40 - 16 + 2386200U, // 40 - 17 + 1076128378U, // 40 - 18 + 2386938U, // 40 - 19 + 2149870940U, // 40 - 20 + 2387676U, // 40 - 21 + 2388030U, // 40 - 22 + 1613001120U, // 40 - 23 + 2388768U, // 40 - 24 + 2389123U, // 40 - 25 + 1344566758U, // 40 - 26 + 2389862U, // 40 - 27 + 2686744776U, // 40 - 28 + 2390600U, // 40 - 29 + 2390954U, // 40 - 30 + 1881439500U, // 40 - 31 + 2391692U, // 40 - 32 + 2392046U, // 40 - 33 + 1344569681U, // 40 - 34 + 2392785U, // 40 - 35 + 2393139U, // 40 - 36 + 1076135318U, // 40 - 37 + 2393877U, // 40 - 38 + 2149877879U, // 40 - 39 + 2394615U, // 40 - 40 + 2394970U, // 40 - 41 + 1613008060U, // 40 - 42 + 2395708U, // 40 - 43 + 2396063U, // 40 - 44 + 1344573697U, // 40 - 45 + 2396801U, // 40 - 46 + 2418316259U, // 40 - 47 + 2397539U, // 40 - 48 + 2397893U, // 40 - 49 + 2149881896U, // 40 - 50 + 2398632U, // 40 - 51 + 2398986U, // 40 - 52 + 1613012077U, // 40 - 53 + 2399725U, // 40 - 54 + 2400079U, // 40 - 55 + 1076142257U, // 40 - 56 + 2400817U, // 40 - 57 + 2418320275U, // 40 - 58 + 2401555U, // 40 - 59 + 2401910U, // 41 - 0 + 1613015000U, // 41 - 1 + 2402648U, // 41 - 2 + 2403003U, // 41 - 3 + 1344580637U, // 41 - 4 + 2403740U, // 41 - 5 + 2955194110U, // 41 - 6 + 2404478U, // 41 - 7 + 2404833U, // 41 - 8 + 1881453380U, // 41 - 9 + 2405572U, // 41 - 10 + 2405926U, // 41 - 11 + 1613019016U, // 41 - 12 + 2406664U, // 41 - 13 + 2407018U, // 41 - 14 + 1076149196U, // 41 - 15 + 2407756U, // 41 - 16 + 2149891759U, // 41 - 17 + 2408495U, // 41 - 18 + 2408850U, // 41 - 19 + 1613021940U, // 41 - 20 + 2409588U, // 41 - 21 + 2409942U, // 41 - 22 + 1344587576U, // 41 - 23 + 2410680U, // 41 - 24 + 2411034U, // 41 - 25 + 807717757U, // 41 - 26 + 2411773U, // 41 - 27 + 1881460320U, // 41 - 28 + 2412512U, // 41 - 29 + 2412866U, // 41 - 30 + 1613025956U, // 41 - 31 + 2413603U, // 41 - 32 + 2413958U, // 41 - 33 + 1076156136U, // 41 - 34 + 2414696U, // 41 - 35 + 2418334155U, // 41 - 36 + 2415435U, // 41 - 37 + 2415789U, // 41 - 38 + 1613028880U, // 41 - 39 + 2416527U, // 41 - 40 + 2416881U, // 41 - 41 + 1344594516U, // 41 - 42 + 2417620U, // 41 - 43 + 2417974U, // 41 - 44 + 807724697U, // 41 - 45 + 2418713U, // 41 - 46 + 1881467259U, // 41 - 47 + 2419451U, // 41 - 48 + 2419805U, // 41 - 49 + 1613032895U, // 41 - 50 + 2420543U, // 41 - 51 + 2420897U, // 41 - 52 + 807727620U, // 41 - 53 + 2421636U, // 41 - 54 + 2149905639U, // 41 - 55 + 2422375U, // 41 - 56 + 2422729U, // 41 - 57 + 1613035819U, // 41 - 58 + 2423467U, // 41 - 59 + 2423821U, // 42 - 0 + 1344601455U, // 42 - 1 + 2424560U, // 42 - 2 + 2424914U, // 42 - 3 + 807731637U, // 42 - 4 + 2425653U, // 42 - 5 + 1881474199U, // 42 - 6 + 2426390U, // 42 - 7 + 2426744U, // 42 - 8 + 1613039835U, // 42 - 9 + 2427483U, // 42 - 10 + 2427838U, // 42 - 11 + 1076170016U, // 42 - 12 + 2428576U, // 42 - 13 + 2149912578U, // 42 - 14 + 2429314U, // 42 - 15 + 2429668U, // 42 - 16 + 1881478214U, // 42 - 17 + 2430406U, // 42 - 18 + 2430761U, // 42 - 19 + 1344608395U, // 42 - 20 + 2431500U, // 42 - 21 + 2431854U, // 42 - 22 + 807738576U, // 42 - 23 + 2432592U, // 42 - 24 + 2149916594U, // 42 - 25 + 2433330U, // 42 - 26 + 2433684U, // 42 - 27 + 1613046775U, // 42 - 28 + 2434423U, // 42 - 29 + 2434777U, // 42 - 30 + 1076176956U, // 42 - 31 + 2435516U, // 42 - 32 + 2418354974U, // 42 - 33 + 2436253U, // 42 - 34 + 2436608U, // 42 - 35 + 1881485154U, // 42 - 36 + 2437346U, // 42 - 37 + 2437701U, // 42 - 38 + 1344615335U, // 42 - 39 + 2438439U, // 42 - 40 + 2438794U, // 42 - 41 + 1076180971U, // 42 - 42 + 2439531U, // 42 - 43 + 2149923534U, // 42 - 44 + 2440270U, // 42 - 45 + 2440624U, // 42 - 46 + 1613053715U, // 42 - 47 + 2441363U, // 42 - 48 + 2441717U, // 42 - 49 + 1344619351U, // 42 - 50 + 2442455U, // 42 - 51 + 2418361913U, // 42 - 52 + 2443193U, // 42 - 53 + 2443547U, // 42 - 54 + 1881492094U, // 42 - 55 + 2444286U, // 42 - 56 + 2444641U, // 42 - 57 + 1344622275U, // 42 - 58 + 2445379U, // 42 - 59 + 2955235749U, // 43 - 0 + 2446117U, // 43 - 1 + 2446471U, // 43 - 2 + 1881495017U, // 43 - 3 + 2447209U, // 43 - 4 + 2447564U, // 43 - 5 + 1613060655U, // 43 - 6 + 2448303U, // 43 - 7 + 2448657U, // 43 - 8 + 1076190835U, // 43 - 9 + 2449394U, // 43 - 10 + 2418368853U, // 43 - 11 + 2450133U, // 43 - 12 + 2450487U, // 43 - 13 + 1613063578U, // 43 - 14 + 2451226U, // 43 - 15 + 2451580U, // 43 - 16 + 1344629214U, // 43 - 17 + 2452318U, // 43 - 18 + 2452672U, // 43 - 19 + 807759395U, // 43 - 20 + 2453411U, // 43 - 21 + 2149937413U, // 43 - 22 + 2454150U, // 43 - 23 + 2454504U, // 43 - 24 + 1613067594U, // 43 - 25 + 2455242U, // 43 - 26 + 2455596U, // 43 - 27 + 1344633230U, // 43 - 28 + 2456334U, // 43 - 29 + 2686811249U, // 43 - 30 + 2457073U, // 43 - 31 + 2457427U, // 43 - 32 + 1881505974U, // 43 - 33 + 2458166U, // 43 - 34 + 2458520U, // 43 - 35 + 1344636154U, // 43 - 36 + 2459258U, // 43 - 37 + 2459612U, // 43 - 38 + 807766335U, // 43 - 39 + 2460351U, // 43 - 40 + 1881508897U, // 43 - 41 + 2461089U, // 43 - 42 + 2461443U, // 43 - 43 + 1613074533U, // 43 - 44 + 2462181U, // 43 - 45 + 2462536U, // 43 - 46 + 1076204714U, // 43 - 47 + 2463274U, // 43 - 48 + 3223689101U, // 43 - 49 + 2464013U, // 43 - 50 + 2464367U, // 43 - 51 + 1881512913U, // 43 - 52 + 2465105U, // 43 - 53 + 2465459U, // 43 - 54 + 1613078549U, // 43 - 55 + 2466197U, // 43 - 56 + 2466552U, // 43 - 57 + 807773275U, // 43 - 58 + 2467291U, // 43 - 59 + 2149951293U, // 44 - 0 + 2468029U, // 44 - 1 + 2468383U, // 44 - 2 + 1613081473U, // 44 - 3 + 2469121U, // 44 - 4 + 2469475U, // 44 - 5 + 1076211654U, // 44 - 6 + 2470214U, // 44 - 7 + 2418389673U, // 44 - 8 + 2470953U, // 44 - 9 + 2471307U, // 44 - 10 + 1881519853U, // 44 - 11 + 2472044U, // 44 - 12 + 2472399U, // 44 - 13 + 1344650033U, // 44 - 14 + 2473137U, // 44 - 15 + 2473492U, // 44 - 16 + 1076215670U, // 44 - 17 + 2474230U, // 44 - 18 + 2149958232U, // 44 - 19 + 2474968U, // 44 - 20 + 2475322U, // 44 - 21 + 1613088413U, // 44 - 22 + 2476061U, // 44 - 23 + 2476415U, // 44 - 24 + 1344654050U, // 44 - 25 + 2477154U, // 44 - 26 + 2418396612U, // 44 - 27 + 2477892U, // 44 - 28 + 2478246U, // 44 - 29 + 1881526792U, // 44 - 30 + 2478984U, // 44 - 31 + 2479339U, // 44 - 32 + 1344656973U, // 44 - 33 + 2480077U, // 44 - 34 + 2480432U, // 44 - 35 + 1076222610U, // 44 - 36 + 2481170U, // 44 - 37 + 2149965172U, // 44 - 38 + 2481908U, // 44 - 39 + 2482262U, // 44 - 40 + 1613095353U, // 44 - 41 + 2483001U, // 44 - 42 + 2483355U, // 44 - 43 + 1344660990U, // 44 - 44 + 2484093U, // 44 - 45 + 2418403551U, // 44 - 46 + 2484831U, // 44 - 47 + 2485185U, // 44 - 48 + 1881533732U, // 44 - 49 + 2485924U, // 44 - 50 + 2486279U, // 44 - 51 + 1344663913U, // 44 - 52 + 2487017U, // 44 - 53 + 2487371U, // 44 - 54 + 807794093U, // 44 - 55 + 2488109U, // 44 - 56 +0xffffffff +}; + +//Took 20975 seconds to create diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,23 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +const TInt KFirstCycle=35;//1..n +const TInt KFirstJulianDate=1506663; +const TInt KLastJulianDate=2488434; +const TInt KFirstYear=9; //1..60 +const TInt KLastCycle=79;//1..n +const TInt KLastYear=57;//1..60 +const TInt KNumberOfYears=2689; diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,427 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +#include "calconvusingtable.h" +const TUint16 TCalconData::iCalConDataMonth[]={ + 43856U, // 0 - 35 + 19304U, // 0 - 36 + 19168U, // 0 - 37 + 42352U, // 0 - 38 + 21096U, // 0 - 39 + 53856U, // 0 - 40 + 55632U, // 0 - 41 + 23208U, // 0 - 42 + 22176U, // 0 - 43 + 39632U, // 0 - 44 + 19176U, // 0 - 45 + 19168U, // 0 - 46 + 42200U, // 0 - 47 + 42192U, // 0 - 48 + 53840U, // 0 - 49 + 54568U, // 0 - 50 + 46400U, // 0 - 51 + 54944U, // 0 - 52 + 38608U, // 0 - 53 + 38320U, // 0 - 54 + 18872U, // 0 - 55 + 18800U, // 0 - 56 + 42160U, // 0 - 57 + 45656U, // 0 - 58 + 27216U, // 0 - 59 + 27968U, // 1 - 0 + 44456U, // 1 - 1 + 11104U, // 1 - 2 + 38256U, // 1 - 3 + 18808U, // 1 - 4 + 18800U, // 1 - 5 + 25776U, // 1 - 6 + 54432U, // 1 - 7 + 59984U, // 1 - 8 + 27976U, // 1 - 9 + 23248U, // 1 - 10 + 11104U, // 1 - 11 + 37744U, // 1 - 12 + 37600U, // 1 - 13 + 51560U, // 1 - 14 + 51536U, // 1 - 15 + 54432U, // 1 - 16 + 55888U, // 1 - 17 + 46416U, // 1 - 18 + 22176U, // 1 - 19 + 43736U, // 1 - 20 + 9680U, // 1 - 21 + 37584U, // 1 - 22 + 51544U, // 1 - 23 + 43344U, // 1 - 24 + 46248U, // 1 - 25 + 27808U, // 1 - 26 + 46416U, // 1 - 27 + 21928U, // 1 - 28 + 19872U, // 1 - 29 + 42416U, // 1 - 30 + 21176U, // 1 - 31 + 21168U, // 1 - 32 + 43344U, // 1 - 33 + 59728U, // 1 - 34 + 27296U, // 1 - 35 + 44368U, // 1 - 36 + 43856U, // 1 - 37 + 19296U, // 1 - 38 + 42352U, // 1 - 39 + 42352U, // 1 - 40 + 21088U, // 1 - 41 + 59696U, // 1 - 42 + 55632U, // 1 - 43 + 23208U, // 1 - 44 + 22176U, // 1 - 45 + 38608U, // 1 - 46 + 19176U, // 1 - 47 + 19152U, // 1 - 48 + 42192U, // 1 - 49 + 53864U, // 1 - 50 + 53840U, // 1 - 51 + 54568U, // 1 - 52 + 46400U, // 1 - 53 + 46752U, // 1 - 54 + 38608U, // 1 - 55 + 38320U, // 1 - 56 + 18864U, // 1 - 57 + 42168U, // 1 - 58 + 42160U, // 1 - 59 + 45656U, // 2 - 0 + 27216U, // 2 - 1 + 27968U, // 2 - 2 + 44448U, // 2 - 3 + 43872U, // 2 - 4 + 38256U, // 2 - 5 + 18808U, // 2 - 6 + 18800U, // 2 - 7 + 25776U, // 2 - 8 + 27216U, // 2 - 9 + 59984U, // 2 - 10 + 27432U, // 2 - 11 + 23232U, // 2 - 12 + 43872U, // 2 - 13 + 37736U, // 2 - 14 + 37600U, // 2 - 15 + 51552U, // 2 - 16 + 54440U, // 2 - 17 + 54432U, // 2 - 18 + 55888U, // 2 - 19 + 23208U, // 2 - 20 + 22176U, // 2 - 21 + 43736U, // 2 - 22 + 9680U, // 2 - 23 + 37584U, // 2 - 24 + 51544U, // 2 - 25 + 43344U, // 2 - 26 + 46240U, // 2 - 27 + 46416U, // 2 - 28 + 44368U, // 2 - 29 + 21928U, // 2 - 30 + 19360U, // 2 - 31 + 42416U, // 2 - 32 + 21176U, // 2 - 33 + 21168U, // 2 - 34 + 43312U, // 2 - 35 + 29864U, // 2 - 36 + 27296U, // 2 - 37 + 44368U, // 2 - 38 + 19880U, // 2 - 39 + 19296U, // 2 - 40 + 42352U, // 2 - 41 + 42208U, // 2 - 42 + 53856U, // 2 - 43 + 59696U, // 2 - 44 + 54576U, // 2 - 45 + 23200U, // 2 - 46 + 27472U, // 2 - 47 + 38608U, // 2 - 48 + 19176U, // 2 - 49 + 19152U, // 2 - 50 + 42192U, // 2 - 51 + 53848U, // 2 - 52 + 53840U, // 2 - 53 + 54560U, // 2 - 54 + 55968U, // 2 - 55 + 46496U, // 2 - 56 + 22224U, // 2 - 57 + 19160U, // 2 - 58 + 18864U, // 2 - 59 + 42168U, // 3 - 0 + 42160U, // 3 - 1 + 43600U, // 3 - 2 + 46376U, // 3 - 3 + 27936U, // 3 - 4 + 44448U, // 3 - 5 + 21936U, // 3 - 6 + 37744U, // 3 - 7 + 18808U, // 3 - 8 + 18800U, // 3 - 9 + 25776U, // 3 - 10 + 27216U, // 3 - 11 + 59984U, // 3 - 12 + 27296U, // 3 - 13 + 43872U, // 3 - 14 + 43744U, // 3 - 15 + 37600U, // 3 - 16 + 51568U, // 3 - 17 + 51552U, // 3 - 18 + 54440U, // 3 - 19 + 54432U, // 3 - 20 + 55888U, // 3 - 21 + 23208U, // 3 - 22 + 22176U, // 3 - 23 + 42704U, // 3 - 24 + 21224U, // 3 - 25 + 21200U, // 3 - 26 + 43352U, // 3 - 27 + 43344U, // 3 - 28 + 46240U, // 3 - 29 + 46416U, // 3 - 30 + 44368U, // 3 - 31 + 21920U, // 3 - 32 + 42448U, // 3 - 33 + 42416U, // 3 - 34 + 21168U, // 3 - 35 + 43320U, // 3 - 36 + 26928U, // 3 - 37 + 29336U, // 3 - 38 + 27296U, // 3 - 39 + 44368U, // 3 - 40 + 19880U, // 3 - 41 + 19296U, // 3 - 42 + 42352U, // 3 - 43 + 21104U, // 3 - 44 + 53600U, // 3 - 45 + 59696U, // 3 - 46 + 54560U, // 3 - 47 + 55968U, // 3 - 48 + 27472U, // 3 - 49 + 22224U, // 3 - 50 + 19168U, // 3 - 51 + 42216U, // 3 - 52 + 41680U, // 3 - 53 + 53584U, // 3 - 54 + 55592U, // 3 - 55 +}; +const TUint32 TCalconData::iCalConDataYear[]={ + 2414696, // 0 - 35 + 2418334155, // 0 - 36 + 2415435, // 0 - 37 + 2415789, // 0 - 38 + 1613028880, // 0 - 39 + 2416527, // 0 - 40 + 2416881, // 0 - 41 + 1344594516, // 0 - 42 + 2417620, // 0 - 43 + 2417974, // 0 - 44 + 807724697, // 0 - 45 + 2418713, // 0 - 46 + 1881467259, // 0 - 47 + 2419451, // 0 - 48 + 2419805, // 0 - 49 + 1613032895, // 0 - 50 + 2420543, // 0 - 51 + 2420897, // 0 - 52 + 807727620, // 0 - 53 + 2421636, // 0 - 54 + 2149905639, // 0 - 55 + 2422375, // 0 - 56 + 2422729, // 0 - 57 + 1613035819, // 0 - 58 + 2423467, // 0 - 59 + 2423821, // 1 - 0 + 1344601455, // 1 - 1 + 2424560, // 1 - 2 + 2424914, // 1 - 3 + 807731637, // 1 - 4 + 2425653, // 1 - 5 + 1881474199, // 1 - 6 + 2426390, // 1 - 7 + 2426744, // 1 - 8 + 1613039835, // 1 - 9 + 2427483, // 1 - 10 + 2427838, // 1 - 11 + 1076170016, // 1 - 12 + 2428576, // 1 - 13 + 2149912578, // 1 - 14 + 2429314, // 1 - 15 + 2429668, // 1 - 16 + 1881478214, // 1 - 17 + 2430406, // 1 - 18 + 2430761, // 1 - 19 + 1344608395, // 1 - 20 + 2431500, // 1 - 21 + 2431854, // 1 - 22 + 807738576, // 1 - 23 + 2432592, // 1 - 24 + 2149916594, // 1 - 25 + 2433330, // 1 - 26 + 2433684, // 1 - 27 + 1613046775, // 1 - 28 + 2434423, // 1 - 29 + 2434777, // 1 - 30 + 1076176956, // 1 - 31 + 2435516, // 1 - 32 + 2418354974, // 1 - 33 + 2436253, // 1 - 34 + 2436608, // 1 - 35 + 1881485154, // 1 - 36 + 2437346, // 1 - 37 + 2437701, // 1 - 38 + 1344615335, // 1 - 39 + 2438439, // 1 - 40 + 2438794, // 1 - 41 + 1076180971, // 1 - 42 + 2439531, // 1 - 43 + 2149923534, // 1 - 44 + 2440270, // 1 - 45 + 2440624, // 1 - 46 + 1613053715, // 1 - 47 + 2441363, // 1 - 48 + 2441717, // 1 - 49 + 1344619351, // 1 - 50 + 2442455, // 1 - 51 + 2418361913, // 1 - 52 + 2443193, // 1 - 53 + 2443547, // 1 - 54 + 1881492094, // 1 - 55 + 2444286, // 1 - 56 + 2444641, // 1 - 57 + 1344622275, // 1 - 58 + 2445379, // 1 - 59 + 2955235749, // 2 - 0 + 2446117, // 2 - 1 + 2446471, // 2 - 2 + 1881495017, // 2 - 3 + 2447209, // 2 - 4 + 2447564, // 2 - 5 + 1613060655, // 2 - 6 + 2448303, // 2 - 7 + 2448657, // 2 - 8 + 1076190835, // 2 - 9 + 2449394, // 2 - 10 + 2418368853, // 2 - 11 + 2450133, // 2 - 12 + 2450487, // 2 - 13 + 1613063578, // 2 - 14 + 2451226, // 2 - 15 + 2451580, // 2 - 16 + 1344629214, // 2 - 17 + 2452318, // 2 - 18 + 2452672, // 2 - 19 + 807759395, // 2 - 20 + 2453411, // 2 - 21 + 2149937413, // 2 - 22 + 2454150, // 2 - 23 + 2454504, // 2 - 24 + 1613067594, // 2 - 25 + 2455242, // 2 - 26 + 2455596, // 2 - 27 + 1344633230, // 2 - 28 + 2456334, // 2 - 29 + 2686811249, // 2 - 30 + 2457073, // 2 - 31 + 2457427, // 2 - 32 + 1881505974, // 2 - 33 + 2458166, // 2 - 34 + 2458520, // 2 - 35 + 1344636154, // 2 - 36 + 2459258, // 2 - 37 + 2459612, // 2 - 38 + 807766335, // 2 - 39 + 2460351, // 2 - 40 + 1881508897, // 2 - 41 + 2461089, // 2 - 42 + 2461443, // 2 - 43 + 1613074533, // 2 - 44 + 2462181, // 2 - 45 + 2462536, // 2 - 46 + 1076204714, // 2 - 47 + 2463274, // 2 - 48 + 3223689101, // 2 - 49 + 2464013, // 2 - 50 + 2464367, // 2 - 51 + 1881512913, // 2 - 52 + 2465105, // 2 - 53 + 2465459, // 2 - 54 + 1613078549, // 2 - 55 + 2466197, // 2 - 56 + 2466552, // 2 - 57 + 807773275, // 2 - 58 + 2467291, // 2 - 59 + 2149951293, // 3 - 0 + 2468029, // 3 - 1 + 2468383, // 3 - 2 + 1613081473, // 3 - 3 + 2469121, // 3 - 4 + 2469475, // 3 - 5 + 1076211654, // 3 - 6 + 2470214, // 3 - 7 + 2418389673, // 3 - 8 + 2470953, // 3 - 9 + 2471307, // 3 - 10 + 1881519853, // 3 - 11 + 2472044, // 3 - 12 + 2472399, // 3 - 13 + 1344650033, // 3 - 14 + 2473137, // 3 - 15 + 2473492, // 3 - 16 + 1076215670, // 3 - 17 + 2474230, // 3 - 18 + 2149958232, // 3 - 19 + 2474968, // 3 - 20 + 2475322, // 3 - 21 + 1613088413, // 3 - 22 + 2476061, // 3 - 23 + 2476415, // 3 - 24 + 1344654050, // 3 - 25 + 2477154, // 3 - 26 + 2418396612, // 3 - 27 + 2477892, // 3 - 28 + 2478246, // 3 - 29 + 1881526792, // 3 - 30 + 2478984, // 3 - 31 + 2479339, // 3 - 32 + 1344656973, // 3 - 33 + 2480077, // 3 - 34 + 2480432, // 3 - 35 + 1076222610, // 3 - 36 + 2481170, // 3 - 37 + 2149965172, // 3 - 38 + 2481908, // 3 - 39 + 2482262, // 3 - 40 + 1613095353, // 3 - 41 + 2483001, // 3 - 42 + 2483355, // 3 - 43 + 1344660990, // 3 - 44 + 2484093, // 3 - 45 + 2418403551, // 3 - 46 + 2484831, // 3 - 47 + 2485185, // 3 - 48 + 1881533732, // 3 - 49 + 2485924, // 3 - 50 + 2486279, // 3 - 51 + 1344663913, // 3 - 52 + 2487017, // 3 - 53 + 2487371, // 3 - 54 + 807794093, // 3 - 55 + 2488109, // 3 - 56 +0xffffffff +}; + +//Took 260 seconds to create diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,23 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +const TInt KFirstCycle=76;//1..n +const TInt KFirstJulianDate=2415021; +const TInt KLastJulianDate=2488434; +const TInt KFirstYear=36; //1..60 +const TInt KLastCycle=79;//1..n +const TInt KLastYear=57;//1..60 +const TInt KNumberOfYears=202; diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,267 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +#include "calconvusingtable.h" +const TUint16 TCalconData::iCalConDataMonth[]={ + 38608U, // 0 - 55 + 38320U, // 0 - 56 + 18864U, // 0 - 57 + 42168U, // 0 - 58 + 42160U, // 0 - 59 + 45656U, // 1 - 0 + 27216U, // 1 - 1 + 27968U, // 1 - 2 + 44448U, // 1 - 3 + 43872U, // 1 - 4 + 38256U, // 1 - 5 + 18808U, // 1 - 6 + 18800U, // 1 - 7 + 25776U, // 1 - 8 + 27216U, // 1 - 9 + 59984U, // 1 - 10 + 27432U, // 1 - 11 + 23232U, // 1 - 12 + 43872U, // 1 - 13 + 37736U, // 1 - 14 + 37600U, // 1 - 15 + 51552U, // 1 - 16 + 54440U, // 1 - 17 + 54432U, // 1 - 18 + 55888U, // 1 - 19 + 23208U, // 1 - 20 + 22176U, // 1 - 21 + 43736U, // 1 - 22 + 9680U, // 1 - 23 + 37584U, // 1 - 24 + 51544U, // 1 - 25 + 43344U, // 1 - 26 + 46240U, // 1 - 27 + 46416U, // 1 - 28 + 44368U, // 1 - 29 + 21928U, // 1 - 30 + 19360U, // 1 - 31 + 42416U, // 1 - 32 + 21176U, // 1 - 33 + 21168U, // 1 - 34 + 43312U, // 1 - 35 + 29864U, // 1 - 36 + 27296U, // 1 - 37 + 44368U, // 1 - 38 + 19880U, // 1 - 39 + 19296U, // 1 - 40 + 42352U, // 1 - 41 + 42208U, // 1 - 42 + 53856U, // 1 - 43 + 59696U, // 1 - 44 + 54576U, // 1 - 45 + 23200U, // 1 - 46 + 27472U, // 1 - 47 + 38608U, // 1 - 48 + 19176U, // 1 - 49 + 19152U, // 1 - 50 + 42192U, // 1 - 51 + 53848U, // 1 - 52 + 53840U, // 1 - 53 + 54560U, // 1 - 54 + 55968U, // 1 - 55 + 46496U, // 1 - 56 + 22224U, // 1 - 57 + 19160U, // 1 - 58 + 18864U, // 1 - 59 + 42168U, // 2 - 0 + 42160U, // 2 - 1 + 43600U, // 2 - 2 + 46376U, // 2 - 3 + 27936U, // 2 - 4 + 44448U, // 2 - 5 + 21936U, // 2 - 6 + 37744U, // 2 - 7 + 18808U, // 2 - 8 + 18800U, // 2 - 9 + 25776U, // 2 - 10 + 27216U, // 2 - 11 + 59984U, // 2 - 12 + 27296U, // 2 - 13 + 43872U, // 2 - 14 + 43744U, // 2 - 15 + 37600U, // 2 - 16 + 51568U, // 2 - 17 + 51552U, // 2 - 18 + 54440U, // 2 - 19 + 54432U, // 2 - 20 + 55888U, // 2 - 21 + 23208U, // 2 - 22 + 22176U, // 2 - 23 + 42704U, // 2 - 24 + 21224U, // 2 - 25 + 21200U, // 2 - 26 + 43352U, // 2 - 27 + 43344U, // 2 - 28 + 46240U, // 2 - 29 + 46416U, // 2 - 30 + 44368U, // 2 - 31 + 21920U, // 2 - 32 + 42448U, // 2 - 33 + 42416U, // 2 - 34 + 21168U, // 2 - 35 + 43320U, // 2 - 36 + 26928U, // 2 - 37 + 29336U, // 2 - 38 + 27296U, // 2 - 39 + 44368U, // 2 - 40 + 19880U, // 2 - 41 + 19296U, // 2 - 42 + 42352U, // 2 - 43 + 21104U, // 2 - 44 + 53600U, // 2 - 45 + 59696U, // 2 - 46 + 54560U, // 2 - 47 + 55968U, // 2 - 48 + 27472U, // 2 - 49 + 22224U, // 2 - 50 + 19168U, // 2 - 51 + 42216U, // 2 - 52 + 41680U, // 2 - 53 + 53584U, // 2 - 54 + 55592U, // 2 - 55 +}; +const TUint32 TCalconData::iCalConDataYear[]={ + 1881492094U, // 0 - 55 + 2444286U, // 0 - 56 + 2444641U, // 0 - 57 + 1344622275U, // 0 - 58 + 2445379U, // 0 - 59 + 2955235749U, // 1 - 0 + 2446117U, // 1 - 1 + 2446471U, // 1 - 2 + 1881495017U, // 1 - 3 + 2447209U, // 1 - 4 + 2447564U, // 1 - 5 + 1613060655U, // 1 - 6 + 2448303U, // 1 - 7 + 2448657U, // 1 - 8 + 1076190835U, // 1 - 9 + 2449394U, // 1 - 10 + 2418368853U, // 1 - 11 + 2450133U, // 1 - 12 + 2450487U, // 1 - 13 + 1613063578U, // 1 - 14 + 2451226U, // 1 - 15 + 2451580U, // 1 - 16 + 1344629214U, // 1 - 17 + 2452318U, // 1 - 18 + 2452672U, // 1 - 19 + 807759395U, // 1 - 20 + 2453411U, // 1 - 21 + 2149937413U, // 1 - 22 + 2454150U, // 1 - 23 + 2454504U, // 1 - 24 + 1613067594U, // 1 - 25 + 2455242U, // 1 - 26 + 2455596U, // 1 - 27 + 1344633230U, // 1 - 28 + 2456334U, // 1 - 29 + 2686811249U, // 1 - 30 + 2457073U, // 1 - 31 + 2457427U, // 1 - 32 + 1881505974U, // 1 - 33 + 2458166U, // 1 - 34 + 2458520U, // 1 - 35 + 1344636154U, // 1 - 36 + 2459258U, // 1 - 37 + 2459612U, // 1 - 38 + 807766335U, // 1 - 39 + 2460351U, // 1 - 40 + 1881508897U, // 1 - 41 + 2461089U, // 1 - 42 + 2461443U, // 1 - 43 + 1613074533U, // 1 - 44 + 2462181U, // 1 - 45 + 2462536U, // 1 - 46 + 1076204714U, // 1 - 47 + 2463274U, // 1 - 48 + 3223689101U, // 1 - 49 + 2464013U, // 1 - 50 + 2464367U, // 1 - 51 + 1881512913U, // 1 - 52 + 2465105U, // 1 - 53 + 2465459U, // 1 - 54 + 1613078549U, // 1 - 55 + 2466197U, // 1 - 56 + 2466552U, // 1 - 57 + 807773275U, // 1 - 58 + 2467291U, // 1 - 59 + 2149951293U, // 2 - 0 + 2468029U, // 2 - 1 + 2468383U, // 2 - 2 + 1613081473U, // 2 - 3 + 2469121U, // 2 - 4 + 2469475U, // 2 - 5 + 1076211654U, // 2 - 6 + 2470214U, // 2 - 7 + 2418389673U, // 2 - 8 + 2470953U, // 2 - 9 + 2471307U, // 2 - 10 + 1881519853U, // 2 - 11 + 2472044U, // 2 - 12 + 2472399U, // 2 - 13 + 1344650033U, // 2 - 14 + 2473137U, // 2 - 15 + 2473492U, // 2 - 16 + 1076215670U, // 2 - 17 + 2474230U, // 2 - 18 + 2149958232U, // 2 - 19 + 2474968U, // 2 - 20 + 2475322U, // 2 - 21 + 1613088413U, // 2 - 22 + 2476061U, // 2 - 23 + 2476415U, // 2 - 24 + 1344654050U, // 2 - 25 + 2477154U, // 2 - 26 + 2418396612U, // 2 - 27 + 2477892U, // 2 - 28 + 2478246U, // 2 - 29 + 1881526792U, // 2 - 30 + 2478984U, // 2 - 31 + 2479339U, // 2 - 32 + 1344656973U, // 2 - 33 + 2480077U, // 2 - 34 + 2480432U, // 2 - 35 + 1076222610U, // 2 - 36 + 2481170U, // 2 - 37 + 2149965172U, // 2 - 38 + 2481908U, // 2 - 39 + 2482262U, // 2 - 40 + 1613095353U, // 2 - 41 + 2483001U, // 2 - 42 + 2483355U, // 2 - 43 + 1344660990U, // 2 - 44 + 2484093U, // 2 - 45 + 2418403551U, // 2 - 46 + 2484831U, // 2 - 47 + 2485185U, // 2 - 48 + 1881533732U, // 2 - 49 + 2485924U, // 2 - 50 + 2486279U, // 2 - 51 + 1344663913U, // 2 - 52 + 2487017U, // 2 - 53 + 2487371U, // 2 - 54 + 807794093U, // 2 - 55 + 2488109U, // 2 - 56 +0xffffffff +}; + +//Took 917 seconds to create diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,23 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Generated by CalconTable.exe +// + +const TInt KFirstCycle=77;//1..n +const TInt KFirstJulianDate=2444240; +const TInt KLastJulianDate=2488434; +const TInt KFirstYear=56; //1..60 +const TInt KLastCycle=79;//1..n +const TInt KLastYear=57;//1..60 +const TInt KNumberOfYears=122; diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/test/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/test/group/bld.inf Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,42 @@ +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Calcon BLD.INF +// +// + +PRJ_TESTMMPFILES +../../tsrc/TCCn.mmp +../../OriginalTsrc/TCCnoriginal.mmp manual +cconoriginal.mmp manual +calcontable.mmp manual + +PRJ_TESTEXPORTS +calcontest.iby /epoc32/rom/include/calcontest.iby + +../../tsrc/input1.txt /epoc32/release/wins/udeb/z/calcontest/input1.txt +../../tsrc/output1REFERENCE.txt /epoc32/release/wins/udeb/z/calcontest/output1reference.txt +../../tsrc/Input2.txt /epoc32/release/wins/udeb/z/calcontest/input2.txt +../../tsrc/output2REFERENCE.txt /epoc32/release/wins/udeb/z/calcontest/output2reference.txt +../../tsrc/input1.txt /epoc32/release/winscw/udeb/z/calcontest/input1.txt +../../tsrc/output1REFERENCE.txt /epoc32/release/winscw/udeb/z/calcontest/output1reference.txt +../../tsrc/Input2.txt /epoc32/release/winscw/udeb/z/calcontest/input2.txt +../../tsrc/output2REFERENCE.txt /epoc32/release/winscw/udeb/z/calcontest/output2reference.txt +../../tsrc/input1.txt /epoc32/release/wins/urel/z/calcontest/input1.txt +../../tsrc/output1REFERENCE.txt /epoc32/release/wins/urel/z/calcontest/output1reference.txt +../../tsrc/Input2.txt /epoc32/release/wins/urel/z/calcontest/input2.txt +../../tsrc/output2REFERENCE.txt /epoc32/release/wins/urel/z/calcontest/output2reference.txt +../../tsrc/input1.txt /epoc32/release/winscw/urel/z/calcontest/input1.txt +../../tsrc/output1REFERENCE.txt /epoc32/release/winscw/urel/z/calcontest/output1reference.txt +../../tsrc/Input2.txt /epoc32/release/winscw/urel/z/calcontest/input2.txt +../../tsrc/output2REFERENCE.txt /epoc32/release/winscw/urel/z/calcontest/output2reference.txt diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/test/group/calcontable.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/test/group/calcontable.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,28 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET calcontable.exe +TARGETTYPE exe +CAPABILITY All -TCB +UID 0 +VENDORID 0x70000001 +SOURCEPATH ../../calcontablesrc +SOURCE calcontable.cpp +USERINCLUDE ../../calcontablesrc +USERINCLUDE ../../originalinc +SYSTEMINCLUDE /epoc32/include +LIBRARY euser.lib efsrv.lib cconoriginal.lib charconv.lib + +SMPSAFE diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/test/group/calcontest.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/test/group/calcontest.iby Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,30 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALCONTEST_IBY__ +#define __CALCONTEST_IBY__ + +REM Calender Converter Test + +file=ABI_DIR\BUILD_DIR\tCCn.exe System\Programs\CalconTest\tCCn.exe +#include + + + +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input1.txt calcontest\input1.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input2.txt calcontest\input2.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output1REFERENCE.txt calcontest\output1REFERENCE.txt +data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output2REFERENCE.txt calcontest\output2REFERENCE.txt +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/test/group/cconoriginal.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/test/group/cconoriginal.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,35 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET cconoriginal.dll +TARGETTYPE dll +CAPABILITY All -TCB +UID 0x1000008d 0x10005407 //need to change UID +VENDORID 0x70000001 +SOURCEPATH ../../originalsrc +SOURCE CConmain.cpp Calendar.cpp ArithmeticalCal.cpp Gregorian.cpp +SOURCE ArithmeticalDate.cpp AstronomicalCal.cpp Chinese.cpp ChineseDate.cpp +USERINCLUDE ../../OriginalInc +SYSTEMINCLUDE /epoc32/include + +LIBRARY euser.lib + +#ifdef WINS +DEFFILE ../../BWINS/CCONORIGINAL.DEF +#else +DEFFILE ../../EABI/CConOriginal.DEF +#endif + +SMPSAFE \ No newline at end of file diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/ConvertDates.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/ConvertDates.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,910 @@ +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include "ConvertDates.h" + +// Constants +const TInt KFirstConvertYear = 0; +const TInt KFromOffset = 0; +const TInt KToOffset = 5; +const TInt KCycleOffset = 10; +const TInt KYearOffset = 13; +const TInt KMnthOffset = 19; +const TInt KLeapMonthOffset = 22; +const TInt KDyOffset = 24; +const TInt KCycleLen = 2; +const TInt KSignLen = 1; +const TInt KYearLen = 5; +const TInt KMonthLen = 2; +const TInt KDayLen = 2; +// +_LIT(KRoot, "C:\\"); +_LIT(KSpace, " "); +_LIT(KResult, " Result "); +_LIT(KTestHeader, "Test Results"); +_LIT(KFileNotPresent, "test file %S not present - test failed\n"); +_LIT(KCalconDirectory, "c:\\calcontest\\"); +_LIT(KCalconLogFileDirectory, "c:\\calcon\\"); +_LIT(KCalconLogFile, "c:\\calcon\\calcon.txt"); +_LIT(KInputFile1, "z:\\calcontest\\input1.txt"); +_LIT(KOutputFile1, "c:\\calcontest\\output1.txt"); +_LIT(KInputFile2, "z:\\calcontest\\input2.txt"); +_LIT(KOutputFile2, "c:\\calcontest\\output2.txt"); +_LIT(KOutputFileRef1, "z:\\calcontest\\output1REFERENCE.txt"); +_LIT(KOutputFileRef2, "z:\\calcontest\\output2REFERENCE.txt"); +_LIT8(KImcvCRLF, "\r\n"); +_LIT8(KOutOfRange, " *** Out of range ***"); + + +// +// Construction/Destruction +// + +CConvertDates::CConvertDates() : iTest(_L("Calcon Test")) + { + } + +CConvertDates::~CConvertDates() + { + if (iCalendarConverter) + delete iCalendarConverter; + iInputFile.Close(); + iOutputFile.Close(); + iLogger.Close(); + iRFSession.Close(); + } + +CConvertDates* CConvertDates::NewL() + { + CConvertDates* self = CConvertDates::NewLC(); + CleanupStack::Pop(); + return self; + } + +CConvertDates* CConvertDates::NewLC() + { + CConvertDates* self = new(ELeave) CConvertDates; + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CConvertDates::ConstructL() + { + User::LeaveIfError(iRFSession.Connect()); + iRFSession.SetSessionPath(KRoot); + iRFSession.MkDirAll(KCalconLogFileDirectory); // ignore errors -- any FS errors will present themselves later + iRFSession.MkDirAll(KCalconDirectory); + + if (iLogger.LogValid()) + iLogger.CloseLog(); + TParse p; + p.Set(KCalconLogFile, NULL, NULL); + iLogger.Connect(); + iLogger.CreateLog(KCalconLogFileDirectory, p.NameAndExt(), EFileLoggingModeOverwrite); + iLogger.SetDateAndTime(EFalse, EFalse); + iLogger.Write(KTestHeader); + + iCalendarConverter=CChineseCalendarConverter::NewL(); + } + +void CConvertDates::ConvertL(TInt aInput) + { + iInputFileNumber=aInput; + + if (iInputFileNumber==1) + iTest.Printf(_L("Generating c:\\output1.txt\n")); + else + iTest.Printf(_L("Generating c:\\output2.txt\n")); + + TBuf8<100> logLine; + TBuf<64> errBuf; + // open the input and output files + OpenFilesL(); + + TInt fileErr = KErrNone; + while(fileErr == KErrNone) + { + // read date from the input file + fileErr = ReadLine(iInputFile, iDateLine); + if (fileErr==KErrNone) + { + // get the cal types to convert from and to + TRAPD(err,GetCalL(iDateLine)); + if (err) + { + errBuf.Format(_L("\r\nError get calendar conversion type %d\r\n"),err); + iLogger.Write(errBuf); + } + else + { + // do the conversion + TBool success=Cal1ToCal2(); + + // set the cal types to convert from and to + logLine.Zero(); + TRAP(err,SetCalL(logLine,success)); + if (err) + { + errBuf.Format(_L("\r\nError set calendar conversion type %d\r\n"),err); + iDateLine.Append(errBuf); + } + else + { + iDateLine.Append(logLine); + iDateLine.Append(_L8("\r\n")); + iLogger.Write(iDateLine); + if (iOutputFile.Write(iDateLine)) + { + User::Leave(KErrCorrupt); + } + } + } + } + } + } + +void CConvertDates::OpenFilesL() + { + TInt err=KErrNone; + if (iInputFileNumber==1) + { + err = iInputFile.Open(iRFSession, KInputFile1, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KInputFile1)); + } + User::Leave(err); + } + err = iOutputFile.Replace(iRFSession, KOutputFile1, EFileStreamText|EFileWrite|EFileShareExclusive); + User::LeaveIfError(err); + } + else + { + err = iInputFile.Open(iRFSession, KInputFile2, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KInputFile2)); + } + User::Leave(err); + } + err = iOutputFile.Replace(iRFSession, KOutputFile2, EFileStreamText|EFileWrite|EFileShareExclusive); + User::LeaveIfError(err); + } + } + +void CConvertDates::GetCalL(TDes8& aDateToConvert) + { + TInt dateError=KErrNone; + TLex8 lexCycle(aDateToConvert.Mid(KCycleOffset,KCycleLen)); + TLex8 lexYear(aDateToConvert.Mid(KYearOffset,KYearLen)); + TLex8 lexMonth(aDateToConvert.Mid(KMnthOffset,KMonthLen)); + TLex8 lexDay(aDateToConvert.Mid(KDyOffset,KDayLen)); + + // get cycle + if (lexCycle.Val(iChinDateOut.iCycle) != KErrNone) + { + User::Leave(KErrCorrupt); + } + // get year + if (lexYear.Val(iArithDateOut.iYear) != KErrNone) + { + User::Leave(KErrGeneral); + } + iChinDateOut.iYear = iArithDateOut.iYear; + // get month + if (lexMonth.Val(iArithDateOut.iMonth) != KErrNone) + { + User::Leave(KErrGeneral); + } + iChinDateOut.iMonth = iArithDateOut.iMonth; + // get leap month + if (aDateToConvert[KLeapMonthOffset] == 't') + { + iChinDateOut.iLeapMonth = ETrue; + } + else + { + iChinDateOut.iLeapMonth = EFalse; + } + // get day + if (lexDay.Val(iArithDateOut.iDay) != KErrNone) + { + User::Leave(KErrCorrupt); + } + iChinDateOut.iDay = iArithDateOut.iDay; + + + switch(aDateToConvert[KFromOffset]) + { + case 'g': //iArithDateOut contains the date to convert from + iCalTypeFrom = EGreg; + break; + case 'c': + iCalTypeFrom = EChin; + break; + default: + dateError = KErrCorrupt; + break; + } + + if (dateError) + User::Leave(dateError); + + switch(aDateToConvert[KToOffset]) + { + case 'g': + iCalTypeTo = EGreg; + break; + case 'c': + iCalTypeTo = EChin; + break; + default: + break; + } + } + +TBool CConvertDates::Cal1ToCal2() + { + switch(iCalTypeFrom) + { + case EGreg: + { + switch(iCalTypeTo) + { + case EChin: + { //iArithDateOut contains the date to convert from + TDateTime dt(iArithDateOut.iYear, (TMonth)(iArithDateOut.iMonth-1), iArithDateOut.iDay-1, 0,0,0,0); + CChineseCalendarConverter* c=iCalendarConverter; + TRAPD(err,c->DateTimeToChineseL(dt, iChinDateOut)); + if (err) + return EFalse; + break; + } + default: + break; + } + } + break; + case EChin: + { + switch(iCalTypeTo) + { //iArithDateOut contains the date to convert from + case EGreg: + { + CChineseCalendarConverter* c=iCalendarConverter; + TDateTime dt(0,EJanuary,0,0,0,0,0); + TRAPD(err,c->ChineseToDateTimeL(iChinDateOut, dt)); + if (err) + return EFalse; + iArithDateOut.iYear=dt.Year(); + iArithDateOut.iMonth=(TInt)(dt.Month())+1; + iArithDateOut.iDay=dt.Day()+1; + break; + } + default: + break; + } + } + break; + default: + break; + } + return ETrue; + } + + +void CConvertDates::SetCalL(TDes8& aConvertedDate, TBool aSuccess) + { + TArithmeticalDate Date; + TChineseDate ChinDate; + TBuf8 TempDate; + + switch(iCalTypeFrom) + { + case EGreg: + { + switch(iCalTypeTo) + { + case EChin: + ChinDate=iChinDateOut; + break; + default: + break; + } + } + break; + case EChin: + { + switch(iCalTypeTo) + { + case EGreg: + Date=iArithDateOut; + TempDate.Copy(_L("greg ")); + default: + break; + } + } + break; + default: + break; + } + + if (!aSuccess) + { + aConvertedDate.Append(KOutOfRange); + return; + } + + if (iCalTypeTo == EChin) + { + TBuf8<10> TempFormatStr; + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KCycleLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iCycle); + aConvertedDate.Append(KResult); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + TempDate.Format(_L8("+")); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iYear); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + if (ChinDate.iLeapMonth == EFalse) + { + TempDate.Format(_L8("f")); + } + else + { + TempDate.Format(_L8("t")); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iDay); + aConvertedDate.Append(TempDate); + } + else + { + TBuf8<10> TempFormatStr; + + if (Date.iYear >= KFirstConvertYear) + { + TempDate.Format(_L8("+")); + } + else + { + TempDate.Format(_L8("-")); + } + aConvertedDate.Append(KResult); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + if (Date.iYear >= KFirstConvertYear) + { + TempDate.Format(TempFormatStr,Date.iYear); + } + else + { + TempDate.Format(TempFormatStr,-Date.iYear); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L8("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iDay); + aConvertedDate.Append(TempDate); + } + } + +void CConvertDates::SetCal16L(TDes& aConvertedDate, TBool /*aSuccess*/) + { + TArithmeticalDate Date; + TChineseDate ChinDate; + TBuf TempDate; + + switch(iCalTypeFrom) + { + case EGreg: + { + switch(iCalTypeTo) + { + case EChin: + ChinDate=iChinDateOut; + break; + default: + break; + } + } + break; + case EChin: + { + switch(iCalTypeTo) + { + case EGreg: + Date=iArithDateOut; + TempDate.Copy(_L("greg ")); + default: + break; + } + } + break; + default: + break; + } + + if (iCalTypeTo == EChin) + { + TBuf<10> TempFormatStr; + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KCycleLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iCycle); + aConvertedDate.Append(_L(" Chinese ")); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + TempDate.Format(_L("+")); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iYear); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempDate.FillZ(); + if (ChinDate.iLeapMonth == EFalse) + { + TempDate.Format(_L("f")); + } + else + { + TempDate.Format(_L("t")); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,ChinDate.iDay); + aConvertedDate.Append(TempDate); + } + else + { + TBuf<10> TempFormatStr; + + if (Date.iYear >= KFirstConvertYear) + { + TempDate.Format(_L("+")); + } + else + { + TempDate.Format(_L("-")); + } + aConvertedDate.Append(_L("Greg ")); + aConvertedDate.Append(TempDate); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KYearLen - KSignLen); + TempDate.FillZ(); + if (Date.iYear >= KFirstConvertYear) + { + TempDate.Format(TempFormatStr,Date.iYear); + } + else + { + TempDate.Format(TempFormatStr,-Date.iYear); + } + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KMonthLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iMonth); + aConvertedDate.Append(TempDate); + aConvertedDate.Append(KSpace); + + TempFormatStr.FillZ(); + TempFormatStr.Format(_L("%%0%dd"),KDayLen); + TempDate.FillZ(); + TempDate.Format(TempFormatStr,Date.iDay); + aConvertedDate.Append(TempDate); + } + } + +// +// Read line of test from file +// +TInt CConvertDates::ReadLine(RFile& aInputFile, TBuf8& aDateLine) + { + TInt err = KErrNone; + + // Read into the buffer + TBuf8<256> buffer; // Max read of the Read() function.. + aDateLine.Zero(); + + // Get the current file position + TInt filePos = 0; + aInputFile.Seek(ESeekCurrent, filePos); + + // Read the buffer + err = aInputFile.Read(buffer); + + //end of file? + TInt s = buffer.Length(); + if ( s == 0) + err = KErrEof; + + if (err == KErrNone) + { + // Copy to the lfcr and then set the file pointer + // to the point after that... + TInt pos = buffer.Find(KImcvCRLF); + if ( pos != -1) + { + aDateLine.Justify(buffer, pos, ELeft, ' '); + filePos += (pos+2); + + // Set the file pointer back to after the lfcr.. + aInputFile.Seek(ESeekStart, filePos); + } + // Else fill the whole buffer 256 chars.. + else + { + aDateLine.Copy(buffer); + } + } + return err; + } + +TBool CConvertDates::IntegrityTestL() + { + iTest.Printf(_L("Integrity test:\n")); + iTest.Printf(_L("Stepping through every possible Chinese date in the range of the calendar\n")); + iTest.Printf(_L("checking that either the Chinese date is invalid, or that the\n")); + iTest.Printf(_L("returned Julian Day is one greater than the previous Julian Day.")); + + TDateTime dateTime; + CChineseCalendarConverter* chineseCalendar=CChineseCalendarConverter::NewL(); + + TChineseDate start; + TChineseDate finish; + chineseCalendar->DateRange(start, finish); + TDateTime startDT; + TDateTime finishDT; + chineseCalendar->DateRange(startDT, finishDT); + + TBuf outputBuf; + iCalTypeFrom=EChin; + iCalTypeTo=EGreg; + iArithDateOut.iDay=startDT.Day()+1; + iArithDateOut.iMonth=(TInt)startDT.Month()+1; + iArithDateOut.iYear=startDT.Year(); + SetCal16L(outputBuf); + iChinDateOut=start; + iCalTypeFrom=EGreg; + iCalTypeTo=EChin; + SetCal16L(outputBuf); + iTest.Printf(_L("\n\nCalendar start date\n")); + iTest.Printf(outputBuf); + + chineseCalendar->DateTimeToChineseL(startDT,start); + TReal startJulian=chineseCalendar->JulianDate(); + chineseCalendar->DateTimeToChineseL(finishDT,finish); + TReal finishJulian=chineseCalendar->JulianDate(); + iTest.Printf(_L("\nJulian: %f"),startJulian); + + chineseCalendar->DateRange(start, finish); + //can check here that start & finish do not change + + outputBuf.SetLength(0); + iCalTypeFrom=EChin; + iCalTypeTo=EGreg; + iArithDateOut.iDay=finishDT.Day()+1; + iArithDateOut.iMonth=(TInt)finishDT.Month()+1; + iArithDateOut.iYear=finishDT.Year(); + SetCal16L(outputBuf); + iChinDateOut=finish; + iCalTypeFrom=EGreg; + iCalTypeTo=EChin; + SetCal16L(outputBuf); + iTest.Printf(_L("\n\nCalendar end date\n")); + iTest.Printf(outputBuf); + iTest.Printf(_L("\nJulian: %f\n\n"),finishJulian); + + start.iCycle--; //check that errors are return for date earlier than the lower bound + finish.iCycle+=2;//check that errors are return for date later than the upper bound + + TInt err=KErrNone; + + do + { + NextDate(start); + TRAP(err,chineseCalendar->ChineseToDateTimeL(start, dateTime)); + } + while (err==KErrArgument); + + TReal currentJulian=chineseCalendar->JulianDate(); + + iState=EChangeDay; + + TDateTime lowerBound; + TDateTime upperBound; + chineseCalendar->DateRange(lowerBound, upperBound); + TChineseDate lowerBoundChin; + TChineseDate upperBoundChin; + chineseCalendar->DateRange(lowerBoundChin, upperBoundChin); + TRAP(err,chineseCalendar->ChineseToDateTimeL(upperBoundChin, dateTime)); + + while (start.iCycleChineseToDateTimeL(start, dateTime)); + + if (err==KErrNone) + { + TReal julian=chineseCalendar->JulianDate(); + + if (julian!=++currentJulian) + { + iTest.Printf(_L("%f %f"),julian,currentJulian); + + delete chineseCalendar; + return EFalse; + } + } + + // chineseCalendar.GetDate(checkDate); + // if (!(checkDate==start)) + // User::Invariant(); + } + delete chineseCalendar; + return ETrue; + } + +void CConvertDates::NextDate(TChineseDate& aDate) + { +top: + TBool cont=EFalse; + + switch (iState) + { + case EChangeDay: + if (aDate.iDay==30) + { + iState=EChangeMonth; + aDate.iDay=1; + cont=ETrue; + } + else + { + aDate.iDay++; + } + break; + case EChangeMonth: + if (aDate.iLeapMonth) + { + aDate.iLeapMonth=EFalse; + if (aDate.iMonth==12) + { + iState=EChangeYear; + aDate.iMonth=1; + cont=ETrue; + } + else + { + aDate.iMonth++; + iState=EChangeDay; + } + } + else + { + aDate.iLeapMonth=ETrue; + iState=EChangeDay; + } + break; + case EChangeYear: + if (aDate.iYear==60) + { + iState=EChangeCycle; + aDate.iYear=1; + cont=ETrue; + } + else + { + aDate.iYear++; + iState=EChangeDay; + } + break; + case EChangeCycle: + aDate.iCycle++; + iState=EChangeDay; + break; + default: + User::Invariant(); + } + if (cont) goto top; + } + + + +// +// Construction/Destruction +// + +//------------------------------------------------------ +// Class: TArithmeticalDate +// Function: TArithmeticalDate +// Arguments: None +// +// Comments: Constructor +// +// Return: None +//------------------------------------------------------ +TArithmeticalDate::TArithmeticalDate() + { + } + +//------------------------------------------------------ +// Class: TArithmeticalDate +// Function: operator == +// Arguments: const TArithmeticalDate & +// +// Comments: overloaded == operator +// +// Return: TBool - ETrue if both the TArithmeticalDate +// classes are the same +//------------------------------------------------------ +TBool TArithmeticalDate::operator ==(const TArithmeticalDate &aDate) const + { + TBool rtn = ETrue; + if(iYear != aDate.iYear) + { + rtn = EFalse; + } + if(iMonth != aDate.iMonth) + { + rtn = EFalse; + } + if(iDay != aDate.iDay) + { + rtn = EFalse; + } + return rtn; + } + +TBool CConvertDates::CompareL() + { + iInputFile.Close(); + iOutputFile.Close(); + + TBool ret=ETrue; + TInt err=KErrNone; + + if (iInputFileNumber==1) + { + err = iOutputFile.Open(iRFSession, KOutputFile1, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KOutputFile1)); + } + User::Leave(err); + } + err = iOutputFileRef.Open(iRFSession, KOutputFileRef1, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KOutputFileRef1)); + } + User::Leave(err); + } + } + else + { + err = iOutputFile.Open(iRFSession, KOutputFile2, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KOutputFile2)); + } + User::Leave(err); + } + err = iOutputFileRef.Open(iRFSession, KOutputFileRef2, EFileStreamText|EFileRead|EFileShareExclusive); + if (err) + { + if(KErrNotFound == err) + { + iTest.Printf(KFileNotPresent,&(KOutputFileRef2)); + } + User::Leave(err); + } + } + + TBuf8 outputBuf; + TBuf8 outputBufRef; + + while (err==KErrNone) + { + err=ReadLine(iOutputFile,outputBuf); + if (err==KErrNone) + { + ReadLine(iOutputFileRef,outputBufRef); + TInt m=outputBuf.FindF(KOutOfRange); + if (m==KErrNotFound) + { + if (outputBuf.CompareF(outputBufRef)!=0) + { + ret=EFalse; + break; + } + } + } + } + iOutputFile.Close(); + iOutputFileRef.Close(); + return ret; + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/ConvertDates.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/ConvertDates.h Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,103 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CONVERTDATES_H__ +#define __CONVERTDATES_H__ + +// System includes +#include +#include +#include +#include +#include +#include + +class TArithmeticalDate + { +public: + TArithmeticalDate(); + TBool operator==(const TArithmeticalDate& aDate) const; + +public: + TInt iDay; + TInt iMonth; + TInt iYear; + }; + +// Constants +const TInt KDateLen = 60; + +// Enumerations +enum TCalTypes + { + EGreg, + EHebr, + EChin + }; + +// Classes +class CConvertDates : public CBase + { +public: + CConvertDates(); + static CConvertDates* NewLC(); + static CConvertDates* NewL(); + ~CConvertDates(); + TBool IntegrityTestL(); + TBool CompareL(); +private: + void ConstructL(); + void NextDate(TChineseDate& aDate); + +public: + void ConvertL(TInt aInputFile); + +public: + RTest iTest; + +private: + TBool Cal1ToCal2(); + void GetCalL(TDes8& aDateToConvert); + void SetCalL(TDes8& aDate, TBool aSuccess=ETrue); + void SetCal16L(TDes& aDate, TBool aSuccess=ETrue); + void OpenFilesL(); + TInt ReadLine(RFile& aInputFile, TBuf8& aDateLine); + enum TNextDateState {EChangeDay, EChangeMonth, EChangeYear, EChangeCycle}; + TNextDateState iState; + + +private: + TInt iInputFileNumber; + CChineseCalendarConverter* iCalendarConverter; + TCalTypes iCalTypeFrom; + TCalTypes iCalTypeTo; + TArithmeticalDate iArithDateOut; + TArithmeticalDate iArithDateIn; + TChineseDate iChinDateOut; + TChineseDate iChinDateIn; +// TGregorianCalendar iGreg; +// TChineseCalendar iChin; + + RFs iRFSession; + RFile iInputFile; + RFile iOutputFile; + RFile iOutputFileRef; + + RFileLogger iLogger; + + TBuf8 iDateLine; + }; + +#endif diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/Input2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/Input2.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,76 @@ +greg chin 00 +1898 01 f 01 +greg chin 00 +1899 12 f 31 +greg chin 00 +1900 01 f 10 +greg chin 00 +1910 02 f 15 +greg chin 00 +1920 03 f 20 +greg chin 00 +1924 02 f 29 +greg chin 00 +1970 01 f 01 +greg chin 00 +1971 02 f 02 +greg chin 00 +1972 03 f 03 +greg chin 00 +1973 04 f 04 +greg chin 00 +1974 05 f 05 +greg chin 00 +1975 06 f 06 +greg chin 00 +1976 07 f 07 +greg chin 00 +1977 08 f 08 +greg chin 00 +1978 09 f 09 +greg chin 00 +1979 10 f 10 +greg chin 00 +1980 11 f 11 +greg chin 00 +1981 12 f 12 +greg chin 00 +1982 01 f 13 +greg chin 00 +1982 02 f 28 +greg chin 00 +1982 03 f 01 +greg chin 00 +1999 12 f 31 +greg chin 00 +2000 01 f 01 +greg chin 00 +2000 02 f 29 +greg chin 00 +1998 01 f 28 +greg chin 00 +1998 02 f 28 +greg chin 00 +1998 03 f 30 +greg chin 00 +1998 04 f 29 +greg chin 00 +1998 05 f 30 +greg chin 00 +1998 06 f 28 +greg chin 00 +1998 07 f 28 +greg chin 00 +1998 08 f 28 +greg chin 00 +1998 09 f 28 +greg chin 00 +1998 10 f 28 +greg chin 00 +1998 11 f 28 +greg chin 00 +1998 12 f 29 +greg chin 00 +1999 01 f 28 +greg chin 00 +2043 02 f 10 +greg chin 00 +2044 01 f 29 +chin greg 76 +0034 12 f 09 +chin greg 76 +0036 11 f 29 +chin greg 76 +0036 12 f 10 +chin greg 76 +0047 01 f 06 +chin greg 76 +0057 02 f 01 +chin greg 77 +0001 01 f 25 +chin greg 77 +0046 11 f 24 +chin greg 77 +0048 01 f 07 +chin greg 77 +0049 01 f 18 +chin greg 77 +0050 03 f 02 +chin greg 77 +0051 04 f 14 +chin greg 77 +0052 04 f 27 +chin greg 77 +0053 06 f 11 +chin greg 77 +0054 06 f 24 +chin greg 77 +0055 08 f 07 +chin greg 77 +0056 08 f 20 +chin greg 77 +0057 10 f 04 +chin greg 77 +0058 11 f 17 +chin greg 77 +0058 12 f 19 +chin greg 77 +0059 02 f 05 +chin greg 77 +0059 02 f 06 +chin greg 78 +0016 11 f 24 +chin greg 78 +0016 11 f 25 +chin greg 78 +0017 01 f 25 +chin greg 78 +0015 01 f 01 +chin greg 78 +0015 02 f 02 +chin greg 78 +0015 03 f 03 +chin greg 78 +0015 04 f 04 +chin greg 78 +0015 05 f 05 +chin greg 78 +0015 05 t 05 +chin greg 78 +0015 06 f 06 +chin greg 78 +0015 08 f 08 +chin greg 78 +0015 09 f 09 +chin greg 78 +0015 10 f 10 +chin greg 78 +0015 11 f 11 +chin greg 78 +0060 01 f 01 +chin greg 78 +0060 12 f 30 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/Input_2.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/Input_2.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,76 @@ +greg chin 00 +1898 01 f 01 +greg chin 00 +1899 12 f 31 +greg chin 00 +1900 01 f 10 +greg chin 00 +1910 02 f 15 +greg chin 00 +1920 03 f 20 +greg chin 00 +1924 02 f 29 +greg chin 00 +1970 01 f 01 +greg chin 00 +1971 02 f 02 +greg chin 00 +1972 03 f 03 +greg chin 00 +1973 04 f 04 +greg chin 00 +1974 05 f 05 +greg chin 00 +1975 06 f 06 +greg chin 00 +1976 07 f 07 +greg chin 00 +1977 08 f 08 +greg chin 00 +1978 09 f 09 +greg chin 00 +1979 10 f 10 +greg chin 00 +1980 11 f 11 +greg chin 00 +1981 12 f 12 +greg chin 00 +1982 01 f 13 +greg chin 00 +1982 02 f 28 +greg chin 00 +1982 03 f 01 +greg chin 00 +1999 12 f 31 +greg chin 00 +2000 01 f 01 +greg chin 00 +2000 02 f 29 +greg chin 00 +1998 01 f 28 +greg chin 00 +1998 02 f 28 +greg chin 00 +1998 03 f 30 +greg chin 00 +1998 04 f 29 +greg chin 00 +1998 05 f 30 +greg chin 00 +1998 06 f 28 +greg chin 00 +1998 07 f 28 +greg chin 00 +1998 08 f 28 +greg chin 00 +1998 09 f 28 +greg chin 00 +1998 10 f 28 +greg chin 00 +1998 11 f 28 +greg chin 00 +1998 12 f 29 +greg chin 00 +1999 01 f 28 +greg chin 00 +2043 02 f 10 +greg chin 00 +2044 01 f 29 +chin greg 76 +0034 12 f 09 +chin greg 76 +0036 11 f 29 +chin greg 76 +0036 12 f 10 +chin greg 76 +0047 01 f 06 +chin greg 76 +0057 02 f 01 +chin greg 77 +0001 01 f 25 +chin greg 77 +0046 11 f 24 +chin greg 77 +0048 01 f 07 +chin greg 77 +0049 01 f 18 +chin greg 77 +0050 03 f 02 +chin greg 77 +0051 04 f 14 +chin greg 77 +0052 04 f 27 +chin greg 77 +0053 06 f 11 +chin greg 77 +0054 06 f 24 +chin greg 77 +0055 08 f 07 +chin greg 77 +0056 08 f 20 +chin greg 77 +0057 10 f 04 +chin greg 77 +0058 11 f 17 +chin greg 77 +0058 12 f 19 +chin greg 77 +0059 02 f 05 +chin greg 77 +0059 02 f 06 +chin greg 78 +0016 11 f 24 +chin greg 78 +0016 11 f 25 +chin greg 78 +0017 01 f 25 +chin greg 78 +0015 01 f 01 +chin greg 78 +0015 02 f 02 +chin greg 78 +0015 03 f 03 +chin greg 78 +0015 04 f 04 +chin greg 78 +0015 05 f 05 +chin greg 78 +0015 05 t 05 +chin greg 78 +0015 06 f 06 +chin greg 78 +0015 08 f 08 +chin greg 78 +0015 09 f 09 +chin greg 78 +0015 10 f 10 +chin greg 78 +0015 11 f 11 +chin greg 78 +0060 01 f 01 +chin greg 78 +0060 12 f 30 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/TCCn.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/TCCn.mmp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,26 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +TARGET tccn.exe +TARGETTYPE exe +CAPABILITY None +UID 0 +VENDORID 0x70000001 +APP_LAYER_SYSTEMINCLUDE_SYMBIAN +SOURCEPATH ../tsrc +SOURCE TCCnMain.cpp ConvertDates.cpp +LIBRARY euser.lib ccon.lib efsrv.lib flogger.lib ecom.lib + +SMPSAFE diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/TCCnMain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/TCCnMain.cpp Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,62 @@ +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include +#include "ConvertDates.h" + +_LIT(KTestName,"Basic Calcon tests."); +LOCAL_D RTest test(KTestName); + +void mainL(); + +GLDEF_C TInt E32Main() + { + __UHEAP_MARK; + CTrapCleanup* cleanupStack=CTrapCleanup::New(); + + TRAPD(error,mainL()); + test(KErrNone == error); + REComSession::FinalClose(); + + delete cleanupStack; + __UHEAP_MARKEND; + return KErrNone; + } + +/** +@SYMTestCaseID PIM-TCCNMAIN-0001 + */ + +void mainL() + { + CConvertDates* convDates = CConvertDates::NewL(); + CleanupStack::PushL(convDates); + + convDates->iTest(convDates->IntegrityTestL()); + + TInt err=KErrNone; + TRAP(err,convDates->ConvertL(1)); + convDates->iTest(err == KErrNone); + TRAP(err,convDates->ConvertL(2)); + convDates->iTest(err == KErrNone); + + convDates->iTest(convDates->CompareL()); + convDates->iTest.Start(_L("@SYMTestCaseID PIM-TCCNMAIN-0001")); + convDates->iTest.End(); + convDates->iTest.Close(); + + CleanupStack::PopAndDestroy(convDates); + } diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/input.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/input.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,66 @@ +greg chin 00 -0586 07 f 24 +greg chin 00 -0168 12 f 05 +greg chin 00 +0070 09 f 24 +greg chin 00 +0135 10 f 02 +greg chin 00 +0470 01 f 08 +greg chin 00 +0576 05 f 20 +greg chin 00 +0694 11 f 10 +greg chin 00 +1013 04 f 25 +greg chin 00 +1096 05 f 24 +greg chin 00 +1190 03 f 23 +greg chin 00 +1240 03 f 10 +greg chin 00 +1288 04 f 02 +greg chin 00 +1298 04 f 27 +greg chin 00 +1391 06 f 12 +greg chin 00 +1436 02 f 03 +greg chin 00 +1492 04 f 09 +greg chin 00 +1553 09 f 19 +greg chin 00 +1560 03 f 05 +greg chin 00 +1648 06 f 10 +greg chin 00 +1680 06 f 30 +greg chin 00 +1716 07 f 24 +greg chin 00 +1768 06 f 19 +greg chin 00 +1819 08 f 02 +greg chin 00 +1839 03 f 27 +greg chin 00 +1903 04 f 19 +greg chin 00 +1929 08 f 25 +greg chin 00 +1941 09 f 29 +greg chin 00 +1943 04 f 19 +greg chin 00 +1943 10 f 07 +greg chin 00 +1992 03 f 17 +greg chin 00 +1996 02 f 25 +greg chin 00 +2038 11 f 10 +greg chin 00 +2094 07 f 18 +chin greg 35 +0011 06 f 12 +chin greg 42 +0009 10 f 27 +chin greg 46 +0007 08 f 04 +chin greg 47 +0012 08 f 09 +chin greg 52 +0046 11 f 20 +chin greg 54 +0033 04 f 05 +chin greg 56 +0031 10 f 15 +chin greg 61 +0050 03 f 07 +chin greg 63 +0013 04 f 24 +chin greg 64 +0047 02 f 09 +chin greg 65 +0037 02 f 09 +chin greg 66 +0025 02 f 23 +chin greg 66 +0035 03 f 09 +chin greg 68 +0008 05 f 02 +chin greg 68 +0053 01 f 08 +chin greg 69 +0049 03 f 04 +chin greg 70 +0050 08 f 02 +chin greg 70 +0057 01 f 29 +chin greg 72 +0025 04 t 20 +chin greg 72 +0057 06 f 05 +chin greg 73 +0033 06 f 06 +chin greg 74 +0025 05 f 05 +chin greg 75 +0016 06 f 12 +chin greg 75 +0036 02 f 13 +chin greg 76 +0040 03 f 22 +chin greg 77 +0006 07 f 21 +chin greg 77 +0018 08 f 09 +chin greg 77 +0020 03 f 15 +chin greg 77 +0020 09 f 09 +chin greg 78 +0009 02 f 14 +chin greg 78 +0013 01 f 07 +chin greg 78 +0055 10 f 14 +chin greg 79 +0051 06 f 07 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/input1.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/input1.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,66 @@ +greg chin 00 -0586 07 f 24 +greg chin 00 -0168 12 f 05 +greg chin 00 +0070 09 f 24 +greg chin 00 +0135 10 f 02 +greg chin 00 +0470 01 f 08 +greg chin 00 +0576 05 f 20 +greg chin 00 +0694 11 f 10 +greg chin 00 +1013 04 f 25 +greg chin 00 +1096 05 f 24 +greg chin 00 +1190 03 f 23 +greg chin 00 +1240 03 f 10 +greg chin 00 +1288 04 f 02 +greg chin 00 +1298 04 f 27 +greg chin 00 +1391 06 f 12 +greg chin 00 +1436 02 f 03 +greg chin 00 +1492 04 f 09 +greg chin 00 +1553 09 f 19 +greg chin 00 +1560 03 f 05 +greg chin 00 +1648 06 f 10 +greg chin 00 +1680 06 f 30 +greg chin 00 +1716 07 f 24 +greg chin 00 +1768 06 f 19 +greg chin 00 +1819 08 f 02 +greg chin 00 +1839 03 f 27 +greg chin 00 +1903 04 f 19 +greg chin 00 +1929 08 f 25 +greg chin 00 +1941 09 f 29 +greg chin 00 +1943 04 f 19 +greg chin 00 +1943 10 f 07 +greg chin 00 +1992 03 f 17 +greg chin 00 +1996 02 f 25 +greg chin 00 +2038 11 f 10 +greg chin 00 +2094 07 f 18 +chin greg 35 +0011 06 f 12 +chin greg 42 +0009 10 f 27 +chin greg 46 +0007 08 f 04 +chin greg 47 +0012 08 f 09 +chin greg 52 +0046 11 f 20 +chin greg 54 +0033 04 f 05 +chin greg 56 +0031 10 f 15 +chin greg 61 +0050 03 f 07 +chin greg 63 +0013 04 f 24 +chin greg 64 +0047 02 f 09 +chin greg 65 +0037 02 f 09 +chin greg 66 +0025 02 f 23 +chin greg 66 +0035 03 f 09 +chin greg 68 +0008 05 f 02 +chin greg 68 +0053 01 f 08 +chin greg 69 +0049 03 f 04 +chin greg 70 +0050 08 f 02 +chin greg 70 +0057 01 f 29 +chin greg 72 +0025 04 t 20 +chin greg 72 +0057 06 f 05 +chin greg 73 +0033 06 f 06 +chin greg 74 +0025 05 f 05 +chin greg 75 +0016 06 f 12 +chin greg 75 +0036 02 f 13 +chin greg 76 +0040 03 f 22 +chin greg 77 +0006 07 f 21 +chin greg 77 +0018 08 f 09 +chin greg 77 +0020 03 f 15 +chin greg 77 +0020 09 f 09 +chin greg 78 +0009 02 f 14 +chin greg 78 +0013 01 f 07 +chin greg 78 +0055 10 f 14 +chin greg 79 +0051 06 f 07 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/output1REFERENCE.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/output1REFERENCE.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,66 @@ +greg chin 00 -0586 07 f 24 Result 35 +0011 06 f 12 +greg chin 00 -0168 12 f 05 Result 42 +0009 10 f 27 +greg chin 00 +0070 09 f 24 Result 46 +0007 08 f 04 +greg chin 00 +0135 10 f 02 Result 47 +0012 08 f 09 +greg chin 00 +0470 01 f 08 Result 52 +0046 11 f 20 +greg chin 00 +0576 05 f 20 Result 54 +0033 04 f 05 +greg chin 00 +0694 11 f 10 Result 56 +0031 10 f 15 +greg chin 00 +1013 04 f 25 Result 61 +0050 03 f 07 +greg chin 00 +1096 05 f 24 Result 63 +0013 04 f 24 +greg chin 00 +1190 03 f 23 Result 64 +0047 02 f 09 +greg chin 00 +1240 03 f 10 Result 65 +0037 02 f 09 +greg chin 00 +1288 04 f 02 Result 66 +0025 02 f 23 +greg chin 00 +1298 04 f 27 Result 66 +0035 03 f 09 +greg chin 00 +1391 06 f 12 Result 68 +0008 05 f 02 +greg chin 00 +1436 02 f 03 Result 68 +0053 01 f 08 +greg chin 00 +1492 04 f 09 Result 69 +0049 03 f 04 +greg chin 00 +1553 09 f 19 Result 70 +0050 08 f 02 +greg chin 00 +1560 03 f 05 Result 70 +0057 01 f 29 +greg chin 00 +1648 06 f 10 Result 72 +0025 04 t 20 +greg chin 00 +1680 06 f 30 Result 72 +0057 06 f 05 +greg chin 00 +1716 07 f 24 Result 73 +0033 06 f 06 +greg chin 00 +1768 06 f 19 Result 74 +0025 05 f 05 +greg chin 00 +1819 08 f 02 Result 75 +0016 06 f 12 +greg chin 00 +1839 03 f 27 Result 75 +0036 02 f 13 +greg chin 00 +1903 04 f 19 Result 76 +0040 03 f 22 +greg chin 00 +1929 08 f 25 Result 77 +0006 07 f 21 +greg chin 00 +1941 09 f 29 Result 77 +0018 08 f 09 +greg chin 00 +1943 04 f 19 Result 77 +0020 03 f 15 +greg chin 00 +1943 10 f 07 Result 77 +0020 09 f 09 +greg chin 00 +1992 03 f 17 Result 78 +0009 02 f 14 +greg chin 00 +1996 02 f 25 Result 78 +0013 01 f 07 +greg chin 00 +2038 11 f 10 Result 78 +0055 10 f 14 +greg chin 00 +2094 07 f 18 Result 79 +0051 06 f 07 +chin greg 35 +0011 06 f 12 Result -0586 07 24 +chin greg 42 +0009 10 f 27 Result -0168 12 05 +chin greg 46 +0007 08 f 04 Result +0070 09 24 +chin greg 47 +0012 08 f 09 Result +0135 10 02 +chin greg 52 +0046 11 f 20 Result +0470 01 08 +chin greg 54 +0033 04 f 05 Result +0576 05 20 +chin greg 56 +0031 10 f 15 Result +0694 11 10 +chin greg 61 +0050 03 f 07 Result +1013 04 25 +chin greg 63 +0013 04 f 24 Result +1096 05 24 +chin greg 64 +0047 02 f 09 Result +1190 03 23 +chin greg 65 +0037 02 f 09 Result +1240 03 10 +chin greg 66 +0025 02 f 23 Result +1288 04 02 +chin greg 66 +0035 03 f 09 Result +1298 04 27 +chin greg 68 +0008 05 f 02 Result +1391 06 12 +chin greg 68 +0053 01 f 08 Result +1436 02 03 +chin greg 69 +0049 03 f 04 Result +1492 04 09 +chin greg 70 +0050 08 f 02 Result +1553 09 19 +chin greg 70 +0057 01 f 29 Result +1560 03 05 +chin greg 72 +0025 04 t 20 Result +1648 06 10 +chin greg 72 +0057 06 f 05 Result +1680 06 30 +chin greg 73 +0033 06 f 06 Result +1716 07 24 +chin greg 74 +0025 05 f 05 Result +1768 06 19 +chin greg 75 +0016 06 f 12 Result +1819 08 02 +chin greg 75 +0036 02 f 13 Result +1839 03 27 +chin greg 76 +0040 03 f 22 Result +1903 04 19 +chin greg 77 +0006 07 f 21 Result +1929 08 25 +chin greg 77 +0018 08 f 09 Result +1941 09 29 +chin greg 77 +0020 03 f 15 Result +1943 04 19 +chin greg 77 +0020 09 f 09 Result +1943 10 07 +chin greg 78 +0009 02 f 14 Result +1992 03 17 +chin greg 78 +0013 01 f 07 Result +1996 02 25 +chin greg 78 +0055 10 f 14 Result +2038 11 10 +chin greg 79 +0051 06 f 07 Result +2094 07 18 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/chinesecalendaralg/tsrc/output2REFERENCE.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappsupport/chinesecalendaralg/tsrc/output2REFERENCE.txt Fri Mar 12 15:42:35 2010 +0200 @@ -0,0 +1,76 @@ +greg chin 00 +1898 01 f 01 Result 76 +0034 12 f 09 +greg chin 00 +1899 12 f 31 Result 76 +0036 11 f 29 +greg chin 00 +1900 01 f 10 Result 76 +0036 12 f 10 +greg chin 00 +1910 02 f 15 Result 76 +0047 01 f 06 +greg chin 00 +1920 03 f 20 Result 76 +0057 02 f 01 +greg chin 00 +1924 02 f 29 Result 77 +0001 01 f 25 +greg chin 00 +1970 01 f 01 Result 77 +0046 11 f 24 +greg chin 00 +1971 02 f 02 Result 77 +0048 01 f 07 +greg chin 00 +1972 03 f 03 Result 77 +0049 01 f 18 +greg chin 00 +1973 04 f 04 Result 77 +0050 03 f 02 +greg chin 00 +1974 05 f 05 Result 77 +0051 04 f 14 +greg chin 00 +1975 06 f 06 Result 77 +0052 04 f 27 +greg chin 00 +1976 07 f 07 Result 77 +0053 06 f 11 +greg chin 00 +1977 08 f 08 Result 77 +0054 06 f 24 +greg chin 00 +1978 09 f 09 Result 77 +0055 08 f 07 +greg chin 00 +1979 10 f 10 Result 77 +0056 08 f 20 +greg chin 00 +1980 11 f 11 Result 77 +0057 10 f 04 +greg chin 00 +1981 12 f 12 Result 77 +0058 11 f 17 +greg chin 00 +1982 01 f 13 Result 77 +0058 12 f 19 +greg chin 00 +1982 02 f 28 Result 77 +0059 02 f 05 +greg chin 00 +1982 03 f 01 Result 77 +0059 02 f 06 +greg chin 00 +1999 12 f 31 Result 78 +0016 11 f 24 +greg chin 00 +2000 01 f 01 Result 78 +0016 11 f 25 +greg chin 00 +2000 02 f 29 Result 78 +0017 01 f 25 +greg chin 00 +1998 01 f 28 Result 78 +0015 01 f 01 +greg chin 00 +1998 02 f 28 Result 78 +0015 02 f 02 +greg chin 00 +1998 03 f 30 Result 78 +0015 03 f 03 +greg chin 00 +1998 04 f 29 Result 78 +0015 04 f 04 +greg chin 00 +1998 05 f 30 Result 78 +0015 05 f 05 +greg chin 00 +1998 06 f 28 Result 78 +0015 05 t 05 +greg chin 00 +1998 07 f 28 Result 78 +0015 06 f 06 +greg chin 00 +1998 08 f 28 Result 78 +0015 07 f 07 +greg chin 00 +1998 09 f 28 Result 78 +0015 08 f 08 +greg chin 00 +1998 10 f 28 Result 78 +0015 09 f 09 +greg chin 00 +1998 11 f 28 Result 78 +0015 10 f 10 +greg chin 00 +1998 12 f 29 Result 78 +0015 11 f 11 +greg chin 00 +1999 01 f 28 Result 78 +0015 12 f 12 +greg chin 00 +2043 02 f 10 Result 78 +0060 01 f 01 +greg chin 00 +2044 01 f 29 Result 78 +0060 12 f 30 +chin greg 76 +0034 12 f 09 Result +1898 01 01 +chin greg 76 +0036 11 f 29 Result +1899 12 31 +chin greg 76 +0036 12 f 10 Result +1900 01 10 +chin greg 76 +0047 01 f 06 Result +1910 02 15 +chin greg 76 +0057 02 f 01 Result +1920 03 20 +chin greg 77 +0001 01 f 25 Result +1924 02 29 +chin greg 77 +0046 11 f 24 Result +1970 01 01 +chin greg 77 +0048 01 f 07 Result +1971 02 02 +chin greg 77 +0049 01 f 18 Result +1972 03 03 +chin greg 77 +0050 03 f 02 Result +1973 04 04 +chin greg 77 +0051 04 f 14 Result +1974 05 05 +chin greg 77 +0052 04 f 27 Result +1975 06 06 +chin greg 77 +0053 06 f 11 Result +1976 07 07 +chin greg 77 +0054 06 f 24 Result +1977 08 08 +chin greg 77 +0055 08 f 07 Result +1978 09 09 +chin greg 77 +0056 08 f 20 Result +1979 10 10 +chin greg 77 +0057 10 f 04 Result +1980 11 11 +chin greg 77 +0058 11 f 17 Result +1981 12 12 +chin greg 77 +0058 12 f 19 Result +1982 01 13 +chin greg 77 +0059 02 f 05 Result +1982 02 28 +chin greg 77 +0059 02 f 06 Result +1982 03 01 +chin greg 78 +0016 11 f 24 Result +1999 12 31 +chin greg 78 +0016 11 f 25 Result +2000 01 01 +chin greg 78 +0017 01 f 25 Result +2000 02 29 +chin greg 78 +0015 01 f 01 Result +1998 01 28 +chin greg 78 +0015 02 f 02 Result +1998 02 28 +chin greg 78 +0015 03 f 03 Result +1998 03 30 +chin greg 78 +0015 04 f 04 Result +1998 04 29 +chin greg 78 +0015 05 f 05 Result +1998 05 30 +chin greg 78 +0015 05 t 05 Result +1998 06 28 +chin greg 78 +0015 06 f 06 Result +1998 07 28 +chin greg 78 +0015 08 f 08 Result +1998 09 28 +chin greg 78 +0015 09 f 09 Result +1998 10 28 +chin greg 78 +0015 10 f 10 Result +1998 11 28 +chin greg 78 +0015 11 f 11 Result +1998 12 29 +chin greg 78 +0060 01 f 01 Result +2043 02 10 +chin greg 78 +0060 12 f 30 Result +2044 01 29 diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/vcardandvcal/Ticket/VTicket.MMP --- a/pimappsupport/vcardandvcal/Ticket/VTicket.MMP Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappsupport/vcardandvcal/Ticket/VTicket.MMP Fri Mar 12 15:42:35 2010 +0200 @@ -23,6 +23,7 @@ userinclude ../inc systeminclude /epoc32/include +APP_LAYER_SYSTEMINCLUDE_SYMBIAN source VTicketMaster.CPP diff -r 42814f902fe6 -r 38571fd2a704 pimappsupport/vcardandvcal/group/BLD.INF --- a/pimappsupport/vcardandvcal/group/BLD.INF Fri Feb 19 22:49:53 2010 +0200 +++ b/pimappsupport/vcardandvcal/group/BLD.INF Fri Mar 12 15:42:35 2010 +0200 @@ -22,7 +22,7 @@ // specify the source file followed by its destination here // copy will be used to copy the source file to its destination // If there's no destination then the source file will be copied -// to the same name in \epoc32\include +// to the same name in /epoc32/include ../inc/VCAL.H SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(vcal.h) ../inc/VCAL.INL SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(vcal.inl)