Esempio n. 1
0
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();
}
Esempio n. 2
0
File: csim.c Progetto: l1xiao/csapp
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);
}
Esempio n. 3
0
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);
		}
	}
}
Esempio n. 4
0
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
		);
	}
Esempio n. 6
0
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 );

}