void TraceLoader::loadTrace(const QString &filename) { if (m_helpHash.isEmpty()) { loadHelpFile(); } if (!m_frameBookmarks.isEmpty()) { qDeleteAll(m_signatures); qDeleteAll(m_enumSignatures); m_signatures.clear(); m_enumSignatures.clear(); m_frameBookmarks.clear(); m_createdFrames.clear(); m_parser.close(); } if (!m_parser.open(filename.toLatin1())) { qDebug() << "error: failed to open " << filename; return; } emit startedParsing(); if (m_parser.supportsOffsets()) { scanTrace(); } else { //Load the entire file into memory parseTrace(); } emit guessedApi(static_cast<int>(m_parser.api)); emit finishedParsing(); }
int main(int argc, char* argv[]) { parseArgs(argc, argv); init(); FILE *file = fopen(t, "r"); char line[128]; while (fgets(line, sizeof(line), file)) { count++; if (line[0] != ' ') continue; parseTrace(line); } fclose(file); printSummary(hits, misses, evictions); }
void parseSpecs(state **s, vector<transition*> *t, string infile, testSet *ts){ /* s - states in model t - transitions in model infile - specs filename testSet - set of test cases from specs file */ ifstream in(infile); char fileline[800]; int k=0; string casename; while(in.getline(fileline, 255)){ string line(fileline),aux; aux=line.substr(0,17); if(aux.compare("-- specification ")==0){ casename=line.substr(17,string::npos); } else if(line.compare("Trace Type: Counterexample ")==0){ k++; //cout<<"Test case "<<k<<": "<<casename<<endl; char fname[20]; sprintf(fname,"CEdiagram%d.dot", k); string filename(fname); testCase *tc=new testCase(k,casename,filename); bool building_trace=true; string trace=""; while(building_trace && in.getline(fileline, 800)){ //Build trace from spec file aux=string(fileline); trace.append(aux+"\n"); //Check for end of trace aux=aux.substr(0,17); if(aux.compare("-- specification ")==0){ casename=(string(fileline)).substr(17,string::npos); building_trace=false; } } parseTrace(trace,s, tc); ts->addTestCase(tc); } } }
main(int argc, char **argv){ // Check for correct input if(argc != 3){ printf("usage: mmu <config_file> <trace_file>\n"); exit(1); } parseConf(&conf , argv[1]); traceStack = new_dllist(); parseTrace(&traceStack, argv[2]); setupSim(&conf, &mmuSim); runSim(&mmuSim, &traceStack); endSim(&mmuSim); }
void PluginGame5GraphDialog::updateGraph(const QString& startBoardState) { graphWidget->scene->clear();//@todo Хранить и рисовать 2 разных объекта m_graph.clear(); //Очистка вектора, объекты удалены при очистке сцены m_clickedNode = NULL; GraphNode* leftNode; GraphNode* rightNode; std::vector<std::vector<int>> paintLevel; QStringList parsingResult = parseTrace(); m_graph.resize(parsingResult.size() + 2); m_graph[1] = new GraphNode(1, NULL, 0, 0, 0, 0, 0, 0, 0, 0, startBoardState); BOOST_FOREACH(const QString& string, parsingResult) { int graphNode = string.section(" ", 1, 1).toInt(); int parentGraphNode = string.section(" ", 2, 2).toInt(); int pathCost = string.section(" ", 3, 3).toInt(); int restPathCost = string.section(" ", 4, 4).toInt() - pathCost; int moveDirection = string.section(" ", 5, 5).toInt(); int moveCost = string.section(" ", 7, 7).toInt(); int tileMoveFrom = string.section(" ", -1, -1).toInt(); int tileMoveTo = string.section(" ", -2, -2).toInt(); int relevantTile = string.section(" ", -4, -4).toInt(); int graphLevel = m_graph[parentGraphNode]->getGraphLevel() + 1; QString boardState = m_graph[parentGraphNode]->getBoardState(); int tileMoveToPos = (tileMoveTo - 1) * 2; int tileMoveFromPos = (tileMoveFrom - 1) * 2; QString tileMoveToStr = boardState.mid(tileMoveToPos, 1 ); QString tileMoveFromStr = boardState.mid(tileMoveFromPos, 1); boardState.replace(tileMoveToPos , 1, tileMoveFromStr); boardState.replace(tileMoveFromPos, 1, tileMoveToStr ); m_graph[graphNode] = new GraphNode(graphNode, m_graph[parentGraphNode], pathCost, restPathCost,moveDirection, moveCost, relevantTile, graphLevel, tileMoveFrom, tileMoveTo, boardState ); }
void load_trace_raw ( char* fname ) { unsigned long totalBytes = getFileSize ( fname ); unsigned long currBytes = 0; FILE* fp = fopen ( fname, "rb" ); char header[2048]; char buf[2048]; Call cl; Event e; char typ, nameID; unsigned long long tstart, tstop; int fnum, size = 0; int cstart = 0, cnum = 0; mMaxSize = 1; int num_frame = 0; int num_draw = 0; Frame f; f.clear (); frame = 0; while ( !feof(fp) && (num_draw < maxDraw || maxDraw==0)) { readbytes ( header, 18, 1, fp ); // 18 byte header parseHeader ( header, typ, nameID, tstart, tstop ); switch ( typ ) { case 'C': { readbytes ( buf, 20, 1, fp ); if ( num_frame >= startFrame ) { parseTrace ( buf, nameID, cl ); mCalls.push_back ( cl ); cnum++; } } break; case 'D': { currBytes = getFilePos ( fp ); if ( f.totalDraw % 100 == 0 ) { if ( maxDraw == 0 ) { app_printf ( "%dk read, %.2f%% of file, %.2f%% done\n", currBytes/1024, currBytes*100.0f/totalBytes, currBytes*100.0f/totalBytes ); } else { app_printf ( "%dk read, %.2f%% of file, %.2f%% done\n", currBytes/1024, currBytes*100.0f/totalBytes, num_draw*100.0f/maxDraw ); } } readbytes ( buf, NUM_BIN*9 + 9, 1, fp ); if ( num_frame >= startFrame ) { parseTrace ( buf, nameID, e ); e.frame = frame; e.call_num = cnum; e.call_start = cstart; mEvents.push_back ( e ); cstart += cnum; cnum = 0; if ( e.bin_size[BIN_DRAW] > mMaxSize ) mMaxSize = e.bin_size[BIN_DRAW]; if ( e.bin_id[BIN_DRAW] > mMaxPrim ) mMaxPrim = e.bin_id[BIN_DRAW]; num_draw++; for (int n=0; n < NUM_BIN; n++) { f.binChange[n] += (e.bin_change[n]==BIN_CREATE || e.bin_change[n]==BIN_CHANGE) ? 1 : 0; f.binSwitch[n] += (e.bin_change[n]==BIN_SWITCH ) ? 1 : 0; f.binReuse[n] += (e.bin_change[n]==BIN_REUSE ) ? 1 : 0; f.binUnique[n] = (e.bin_id[n] > f.binUnique[n] ) ? e.bin_id[n] : f.binUnique[n]; } f.totalDraw++; f.totalTransfer += e.bin_size[BIN_DRAW]; f.totalPrim += e.bin_id[BIN_DRAW]; } } break; case 'F': { readbytes ( buf, 8, 1, fp ); if ( num_frame >= startFrame ) { mFrames.push_back ( f ); // record frame data f.clear (); frame++; parseTrace ( buf, fnum, size ); e.name_id = nameID; e.name = "Present"; e.call_num = cnum; e.call_start = cstart; e.count = 1; for (int n=0; n < NUM_BIN; n++ ) { e.bin_id[n] = -1; e.bin_change[n] = -1; } mEvents.push_back ( e ); cstart += cnum; cnum = 0; } num_frame++; } break; }; } // read may not have gotten to end of frame mFrames.push_back ( f ); if ( mFrames.size() == 0 || mEvents.size() == 0 ) { app_printf ( "Error: No frames or events detected.\n" ); app_printf ( "Try running trace again. \n" ); _getch(); exit(-1); } fclose ( fp ); }