int DumpScan::process(DumpDataList::iterator startDump, unsigned long startByte) { unsigned long min = m_address - m_maxOffset; unsigned long max = m_address; if (m_maxOffset > m_address) min = 0; m_counter = 0; for (DumpDataList::iterator it = startDump; it!= m_dumps.end(); ++it) { char *data = (*it)->data; CHECK_CANCEL; for (unsigned long i=startByte; i<((*it)->header.end - (*it)->header.begin)-3; ++i) { unsigned long currentAddress = BSWAP32(*(unsigned long*)(&data[i])); CHECK_CANCEL; if ( currentAddress >= min && currentAddress <= max) //we want this { PointerOffsets po = m_offsets; po.push_front(m_address - currentAddress); m_results.push_back(ScanResult(i+(*it)->header.begin, po)); if (++m_counter >= m_maxResults) { m_counter = 0; m_currentDump = it; m_currentByte = i+1; return DUMP_SCAN_STATUS_CONTINUE; } } } } return DUMP_SCAN_STATUS_DONE; }
void ScanAction::start(BlockChain &chain, ScanCriteria &criteria, ScanProgress &progress) { _result = ScanResult(); _worker.reset(new ScanWorker(QThread::currentThread(), chain, criteria, _result, progress)); QObject::connect(_worker.get(), &ScanWorker::finished, this, &ScanAction::emitDone); criteria.moveToThread(_worker.get()); _worker->start(); }
U0 EdCodeTools2(CDoc *doc,I64 tool_action) { Bool okay,unlock=DocLock(doc),start_of_line=TRUE; CDocEntry *doc_e,*doc_ne; I64 i,start_y,end_y,x,r,goto_line_num; U8 *b,*st,*st2,*prj_file; CTask *task=NULL; CSrvCmd *tempc; CQueVectU8 *indent; DocRecalc(doc); goto_line_num=doc->cur_entry->y+1; DocCaptureUndo(doc,TRUE); switch (tool_action) { case EF_CHK_COMPILE: okay=FALSE; if (doc->flags&DOCF_PLAIN_TEXT) DocFlagsToggle(doc,DOCF_PLAIN_TEXT); DocWrite(doc); task=Spawn(&SrvUserCmdLine,NULL,"Srv",,Fs); st2=CurDir; st=MSPrintF("Cd(\"%s\");",st2); tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); Free(st2); Free(st); SetWinHorz(Fs->win_left,Fs->win_right, task); SetWinVert(Fs->win_top, Fs->win_bottom,task); if (ScanResult(tempc,&r)) { st=DirFile(doc->filename.name,,"PRJ.Z"), prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z); Free(st); if (FileFind(prj_file)) { st2=DirFile(prj_file), st=MSPrintF("Cd(\"%s\");",st2); Free(st2); tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER|1<<SVCf_FREE_ON_COMPLETE); Free(st); st=MSPrintF("\"$$WW,1$$\";Cmp(\"%s\",\"SysTemp\",\"SysTemp\");",prj_file); tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); Free(st); if (ScanResult(tempc,&r)) if (!r) { tempc=TaskExeStrQue(task,Fs, "Load(\"SysTemp\",LDF_JUST_LOAD);",1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); if (ScanResult(tempc,&r)) okay=TRUE; } tempc=TaskExeStrQue(task,Fs,"Del(\"SysTemp.*\");",1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); ScanResult(tempc,&r); } else { Free(prj_file); st=DirFile(doc->filename.name,"Load","CPP.Z"); prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z); Free(st); if (FileFind(prj_file)) st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",prj_file); else st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",doc->filename.name); tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); Free(st); if (ScanResult(tempc,&r) && r) okay=TRUE; } Free(prj_file); } if (!okay) { PopUpOk("Has Errors"); while (LBts(&sys_semas[SYS_SEMA_FIX],0)) Yield; ToFileLine(sys_fix_file_line,&st,&i); LBtr(&sys_semas[SYS_SEMA_FIX],0); if (!StrCmp(st,doc->filename.name)) goto_line_num=i; Free(st); } break; case EF_REINDENT: if (EdGoToFun(doc,FALSE,FALSE)) { start_y=doc->cur_entry->y; indent=EdRICode(doc); DocUnlock(doc); Snd(2000); Sleep(150); Snd(0); Sleep(100); Snd(2000); Sleep(150); Snd(0); DocLock(doc); EdRemFunLeadingSpace(doc); DocLineNumGoTo(doc,start_y+1); doc_e=doc->cur_entry; end_y=start_y+indent->total_cnt; while (start_y<=doc_e->y<end_y) { if (doc_e!=doc && doc_e!=doc->cur_entry && !(doc_e->flags1&(DOCEG1_DONT_EDIT-DOCEF1_SCROLLING_X)) && !(doc_e->flags2&DOCEG2_DONT_EDIT)) { if (doc_e->type_u8==DOCT_NEW_LINE||doc_e->type_u8==DOCT_SOFT_NEW_LINE) start_of_line=TRUE; else { if (start_of_line) { i=QueVectU8Get(indent,doc_e->y)*C_INDENT_SPACES; x=doc_e->x+1; while (i>8) { doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_ne->type=DOCT_TAB | doc->settings_root.dft_text_attr << 8; doc_ne->x=x; doc_ne->y=doc_e->y; doc_ne->page_line_num=doc_e->page_line_num; QueIns(doc_ne,doc_e->last); i-=8; x+=8; } if (i>0) { b=MAlloc(i+1,doc->mem_task); MemSet(b,CH_SPACE,i); b[i]=0; doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8; doc_ne->tag=b; doc_ne->max_col=1; doc_ne->x=x; doc_ne->y=doc_e->y; doc_ne->page_line_num=doc_e->page_line_num; QueIns(doc_ne,doc_e->last); } } start_of_line=FALSE; } } doc_e=doc_e->next; } QueVectU8Del(indent); } break; case EF_RENUM_ASM: if (EdGoToFun(doc,FALSE,TRUE)) { if (EdCurU8(doc)=='{') { EdCursorRight(doc); DocRecalc(doc); } else if (EdCurU8(doc)==':') { EdCursorRight(doc); if (EdCurU8(doc)==':') EdCursorRight(doc); DocRecalc(doc); } DocUnlock(doc); Snd(2000); Sleep(150); Snd(0); Sleep(100); Snd(2000); Sleep(150); Snd(0); DocLock(doc); EdRenumAsm(doc); } break; }