int sortMultiPivotAndUndo(Vmalloc_t *PCMStructPtr, char* arrayToBeSorted, UINT32 elemCount, UINT32 elemSize, compareTuples compareFunc, char* outputBuffer, UINT32 numPartitions, UINT32 maxThreshhold) { #else int sortMultiPivotAndUndo(char* arrayToBeSorted, UINT32 elemCount, UINT32 elemSize, compareTuples compareFunc, char* outputBuffer, UINT32 numPartitions, UINT32 maxThreshhold) { #endif pos = (UINT32*) outputBuffer; initSortElems(elemCount); #ifdef VMALLOC InitSort(PCMStructPtr, arrayToBeSorted, elemCount, elemSize, compareFunc, outputBuffer, numPartitions); #else InitSort(arrayToBeSorted, elemCount, elemSize, compareFunc, outputBuffer, numPartitions); #endif if(elemCount < maxThreshhold){ sortPartition(0, elemCount);//Partition End is the next Partition Beginning goto CLEANUP_MULTIPIVOT; } createPartitionsByMovingPos(TYPE_SORT, maxThreshhold); #if 0 /******Debug******************/ int j, k; for (j = 0; j < numSplits; j++) { printf("====Partition %d====\n", j); for (k = partitionBeginnings_sorting[j]; k < partitionBeginnings_sorting[j + 1]; k++) { printf("%s", *(arrayToBeSorted + (k * elemSize))); } } /***************************/ #endif UINT32 i; //pos = (POS_ARRAY_TYPE*) MALLOC(maxPartitionSize * sizeof (POS_ARRAY_TYPE)); //initSortElems(maxPartitionSize); for (i = 0; i < numSplits; i++) { /*Used as partition start ptr for quicksort. Replace with something cleaner later*/ partitionStart = array + (arrayElemSize * partitionBeginnings_sorting[i]); sortPartition(partitionBeginnings_sorting[i], partitionBeginnings_sorting[i + 1]); //qsort(partitionStart + arrayElemSize* partitionBeginnings_sorting[i], partitionBeginnings_sorting[i+1]-partitionBeginnings_sorting[i], arrayElemSize, Compare); printf("Sorting over for Partition :%d\n", i); } CLEANUP_MULTIPIVOT: cleanupSort(); return 0; }
CLocalListView::CLocalListView(wxWindow* pParent, CState *pState, CQueueView *pQueue) : CFileListCtrl<CLocalFileData>(pParent, pState, pQueue), CStateEventHandler(pState) { wxGetApp().AddStartupProfileRecord(_T("CLocalListView::CLocalListView")); m_pState->RegisterHandler(this, STATECHANGE_LOCAL_DIR); m_pState->RegisterHandler(this, STATECHANGE_APPLYFILTER); m_pState->RegisterHandler(this, STATECHANGE_LOCAL_REFRESH_FILE); m_dropTarget = -1; const unsigned long widths[4] = { 120, 80, 100, 120 }; AddColumn(_("Filename"), wxLIST_FORMAT_LEFT, widths[0], true); AddColumn(_("Filesize"), wxLIST_FORMAT_RIGHT, widths[1]); AddColumn(_("Filetype"), wxLIST_FORMAT_LEFT, widths[2]); AddColumn(_("Last modified"), wxLIST_FORMAT_LEFT, widths[3]); LoadColumnSettings(OPTION_LOCALFILELIST_COLUMN_WIDTHS, OPTION_LOCALFILELIST_COLUMN_SHOWN, OPTION_LOCALFILELIST_COLUMN_ORDER); InitSort(OPTION_LOCALFILELIST_SORTORDER); SetImageList(GetSystemImageList(), wxIMAGE_LIST_SMALL); #ifdef __WXMSW__ m_pVolumeEnumeratorThread = 0; #endif InitHeaderSortImageList(); SetDropTarget(new CLocalListViewDropTarget(this)); EnablePrefixSearch(true); }
CSearchDialogFileList::CSearchDialogFileList(CSearchDialog* pParent, CState* pState, CQueueView* pQueue) : CFileListCtrl<CSearchFileData>(pParent, pState, pQueue, true), m_searchDialog(pParent) { m_hasParent = false; SetImageList(GetSystemImageList(), wxIMAGE_LIST_SMALL); m_dirIcon = GetIconIndex(dir); InitSort(OPTION_SEARCH_SORTORDER); InitHeaderSortImageList(); const unsigned long widths[7] = { 130, 130, 75, 80, 120, 80, 80 }; AddColumn(_("Filename"), wxLIST_FORMAT_LEFT, widths[0]); AddColumn(_("Path"), wxLIST_FORMAT_LEFT, widths[1]); AddColumn(_("Filesize"), wxLIST_FORMAT_RIGHT, widths[2]); AddColumn(_("Filetype"), wxLIST_FORMAT_LEFT, widths[3]); AddColumn(_("Last modified"), wxLIST_FORMAT_LEFT, widths[4]); AddColumn(_("Permissions"), wxLIST_FORMAT_LEFT, widths[5]); AddColumn(_("Owner/Group"), wxLIST_FORMAT_LEFT, widths[6]); LoadColumnSettings(OPTION_SEARCH_COLUMN_WIDTHS, OPTION_SEARCH_COLUMN_SHOWN, OPTION_SEARCH_COLUMN_ORDER); }
ThreadList::ThreadList(wxWindow *parent, const wxPoint& pos, const wxSize& size, wxButton *_ok_button, wxButton *_all_button) : wxSortedListCtrl(parent, THREADS_LIST, pos, size, wxLC_REPORT), timer(this, THREADS_LIST_TIMER), ok_button(_ok_button), all_button(_all_button) { InitSort(); wxListItem itemCol; itemCol.m_mask = wxLIST_MASK_TEXT/* | wxLIST_MASK_IMAGE*/; itemCol.m_text = _T("Thread"); itemCol.m_image = -1; InsertColumn(COL_ID, itemCol); itemCol.m_text = _T("Location"); InsertColumn(COL_LOCATION, itemCol); itemCol.m_text = _T("Thread Usage"); InsertColumn(COL_CPUUSAGE, itemCol); SetColumnWidth(COL_ID, 50); SetColumnWidth(COL_LOCATION, 200); SetColumnWidth(COL_CPUUSAGE, 120); sort_column = COL_CPUUSAGE; sort_dir = SORT_DOWN; SetSortImage(sort_column, sort_dir); process_handle = NULL; syminfo = NULL; lastTime = wxGetLocalTimeMillis(); updateThreads(NULL, NULL); timer.Start(UPDATE_DELAY); }
ThreadList::ThreadList(wxWindow *parent, const wxPoint& pos, const wxSize& size, wxButton *_ok_button, wxButton *_all_button) : wxSortedListCtrl(parent, THREADS_LIST, pos, size, wxLC_REPORT), timer(this, THREADS_LIST_TIMER), ok_button(_ok_button), all_button(_all_button) { InitSort(); wxListItem itemCol; itemCol.m_mask = wxLIST_MASK_TEXT/* | wxLIST_MASK_IMAGE*/; itemCol.m_image = -1; itemCol.m_text = _T("Location"); InsertColumn(COL_LOCATION, itemCol); itemCol.m_text = _T("CPU"); InsertColumn(COL_CPUUSAGE, itemCol); itemCol.m_text = _T("Total CPU"); InsertColumn(COL_TOTALCPU, itemCol); itemCol.m_text = _T("TID"); InsertColumn(COL_ID, itemCol); itemCol.m_text = _T("Thread Name"); InsertColumn(COL_NAME, itemCol); SetColumnWidth(COL_LOCATION, 220); SetColumnWidth(COL_CPUUSAGE, 80); SetColumnWidth(COL_TOTALCPU, 100); SetColumnWidth(COL_ID, 60); // We hide the thread name column if running it on an OS that doesn't // support the API, to avoid wasting screen space. if (hasThreadDescriptionAPI()) SetColumnWidth(COL_NAME, 150); else SetColumnWidth(COL_NAME, 0); sort_column = COL_CPUUSAGE; sort_dir = SORT_DOWN; SetSortImage(sort_column, sort_dir); process_handle = NULL; syminfo = NULL; lastTime = wxGetLocalTimeMillis(); updateThreads(NULL, NULL); timer.Start(UPDATE_DELAY); }
nsresult nsMsgThreadedDBView::InitThreadedView(PRInt32 *pCount) { nsresult rv; m_keys.Clear(); m_flags.Clear(); m_levels.Clear(); m_prevKeys.Clear(); m_prevFlags.Clear(); m_prevLevels.Clear(); m_havePrevView = false; nsresult getSortrv = NS_OK; // ### TODO m_db->GetSortInfo(&sortType, &sortOrder); // list all the ids into m_keys. nsMsgKey startMsg = 0; do { const PRInt32 kIdChunkSize = 400; PRInt32 numListed = 0; nsMsgKey idArray[kIdChunkSize]; PRInt32 flagArray[kIdChunkSize]; char levelArray[kIdChunkSize]; rv = ListThreadIds(&startMsg, (m_viewFlags & nsMsgViewFlagsType::kUnreadOnly) != 0, idArray, flagArray, levelArray, kIdChunkSize, &numListed, nsnull); if (NS_SUCCEEDED(rv)) { PRInt32 numAdded = AddKeys(idArray, flagArray, levelArray, m_sortType, numListed); if (pCount) *pCount += numAdded; } } while (NS_SUCCEEDED(rv) && startMsg != nsMsgKey_None); if (NS_SUCCEEDED(getSortrv)) { rv = InitSort(m_sortType, m_sortOrder); SaveSortInfo(m_sortType, m_sortOrder); } return rv; }
ProcList::ProcList(wxWindow *parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style, SourceView* sourceview_, Database* database_, bool isroot) : wxSortedListCtrl(parent, id, pos, size, wxLC_REPORT /*style*/), m_attr(*wxBLUE, *wxLIGHT_GREY, wxNullFont), sourceview(sourceview_), database(database_), parentview(NULL), callersview(NULL), calleesview(NULL), callStackView(NULL) { InitSort(); for (int n=0;n<MAX_COLUMNS;n++) columns[n].listctrl_column = -1; if (isroot) { setupColumn(COL_NAME, 300, SORT_UP, _T("Name")); setupColumn(COL_EXCLUSIVE, -1, SORT_DOWN, _T("Exclusive")); setupColumn(COL_INCLUSIVE, -1, SORT_DOWN, _T("Inclusive")); setupColumn(COL_EXCLUSIVEPCT, -1, SORT_DOWN, _T("% Exclusive")); setupColumn(COL_INCLUSIVEPCT, -1, SORT_DOWN, _T("% Inclusive")); } else { setupColumn(COL_NAME, 150, SORT_UP, _T("Name")); setupColumn(COL_SAMPLES, -1, SORT_DOWN, _T("Samples")); setupColumn(COL_CALLSPCT, -1, SORT_DOWN, _T("% Calls")); } setupColumn(COL_MODULE, -1, SORT_UP, _T("Module")); setupColumn(COL_SOURCEFILE, 245, SORT_UP, _T("Source File")); setupColumn(COL_SOURCELINE, -1, SORT_UP, _T("Source Line")); if (isroot) sort_column = COL_EXCLUSIVE; else sort_column = COL_SAMPLES; sort_dir = SORT_DOWN; SetSortImage(columns[sort_column].listctrl_column, sort_dir); }
ProcList::ProcList(wxWindow *parent, bool isroot, Database *database) : wxSortedListCtrl(parent, ProcList_List, wxDefaultPosition, wxDefaultSize, wxLC_REPORT /*style*/), isroot(isroot), database(database), updating(false) { InitSort(); this->isroot = isroot; for (int n=0;n<MAX_COLUMNS;n++) columns[n].listctrl_column = -1; if (isroot) { setupColumn(COL_NAME, 300, SORT_UP, _T("Name")); setupColumn(COL_EXCLUSIVE, -1, SORT_DOWN, _T("Exclusive")); setupColumn(COL_INCLUSIVE, -1, SORT_DOWN, _T("Inclusive")); setupColumn(COL_EXCLUSIVEPCT, -1, SORT_DOWN, _T("% Exclusive")); setupColumn(COL_INCLUSIVEPCT, -1, SORT_DOWN, _T("% Inclusive")); } else { setupColumn(COL_NAME, 150, SORT_UP, _T("Name")); setupColumn(COL_SAMPLES, -1, SORT_DOWN, _T("Samples")); setupColumn(COL_CALLSPCT, -1, SORT_DOWN, _T("% Calls")); } setupColumn(COL_MODULE, -1, SORT_UP, _T("Module")); setupColumn(COL_SOURCEFILE, 245, SORT_UP, _T("Source File")); setupColumn(COL_SOURCELINE, -1, SORT_UP, _T("Source Line")); setupColumn(COL_ADDRESS, -1, SORT_UP, _T("Address")); if (isroot) sort_column = COL_EXCLUSIVE; else sort_column = COL_SAMPLES; sort_dir = SORT_DOWN; SetSortImage(columns[sort_column].listctrl_column, sort_dir); }