void loadDirect::createDirect(map<string , vector<string>>& dict , map<string , int>& condictflag) { ifstream fin ("directcon.txt"); int temp = 0; char line[100]; while(fin.getline(line , 100)) { string tmpline(line); stringstream ss(tmpline); if(tmpline.size() == 0) { //cout<<endl; temp = 0; } else { string sstr , confu; ss>>confu; while(ss>>sstr) { dict[confu].push_back(sstr); condictflag[confu] = 1; // cout<<sstr<<endl; } temp++; } } /* for(map<string , vector<string>>::iterator it = dict.begin() ; it != dict.end(); it++) { cout<<it->first<<" "; for(int i = 0 ; i < dict[it->first].size() ; i++) { cout<<dict[it->first][i]<<" "; } cout<<endl; }*/ }
void EditArea::mouseReleaseEvent(QMouseEvent *) { if (mode == drawMode) //drew "add line" line { snapPoints(startPos, lastPos); } else if (mode == deleteMode) //drew "delete" line { QLineF line(startPos, lastPos); QVector<QVector<QPointF> > newdata; QVector<QPointF> st; QPointF trash; for (int i = 0; i < map.size(); i++) { if (map[i].size() >= 1) st.push_back(map[i][0]); for (int j = 0; j < map[i].size() - 1; j++) { QLineF tmpline(map[i][j], map[i][j + 1]); if (line.intersect(tmpline, &trash) == QLineF::BoundedIntersection) { emit mapChanged(); if (st.size() >= 2) newdata.push_back(st); st.clear(); } st.push_back(map[i][j + 1]); } if (st.size() >= 2) newdata.push_back(st); st.clear(); } map = newdata; } mode = noMode; update(); }
void DbgGdb::Poke() { static wxRegEx reCommand( wxT( "^([0-9]{8})" ) ); //poll the debugger output wxString curline; if ( !m_gdbProcess || m_gdbOutputArr.IsEmpty() ) { return; } while ( DoGetNextLine( curline ) ) { GetDebugeePID(curline); // For string manipulations without damaging the original line read wxString tmpline ( curline ); StripString( tmpline ); tmpline.Trim().Trim( false ); if ( m_info.enableDebugLog ) { //Is logging enabled? if ( curline.IsEmpty() == false && !tmpline.StartsWith( wxT( ">" ) ) ) { wxString strdebug( wxT( "DEBUG>>" ) ); strdebug << curline; #if DBG_LOG if(gfp.IsOpened()) { gfp.Write(strdebug); gfp.Flush(); } #else m_observer->UpdateAddLine( strdebug ); #endif } } if ( reConnectionRefused.Matches( curline ) ) { StripString( curline ); #ifdef __WXGTK__ m_consoleFinder.FreeConsole(); #endif m_observer->UpdateAddLine( curline ); m_observer->UpdateGotControl( DBG_EXITED_NORMALLY ); return; } // Check for "Operation not permitted" usually means // that the process does not have enough permission to // attach to the process if( curline.Contains(wxT("Operation not permitted")) ) { #ifdef __WXGTK__ m_consoleFinder.FreeConsole(); #endif m_observer->UpdateAddLine( _("Failed to start debugger: permission denied") ); m_observer->UpdateGotControl( DBG_EXITED_NORMALLY ); return; } if( tmpline.StartsWith( wxT( ">" ) ) ) { // Shell line, probably user command line continue; } if ( curline.StartsWith( wxT( "~" ) ) || curline.StartsWith( wxT( "&" ) ) || curline.StartsWith("@") ) { // lines starting with ~ are considered "console stream" message // and are important to the CLI handler bool consoleStream( false ); bool targetConsoleStream(false); if ( curline.StartsWith( wxT( "~" ) ) ) { consoleStream = true; } if ( curline.StartsWith( wxT( "@" ) ) ) { targetConsoleStream = true; } // Filter out some gdb error lines... if ( FilterMessage( curline ) ) { continue; } StripString( curline ); // If we got a valid "CLI Handler" instead of writing the output to // the output view, concatenate it into the handler buffer if ( targetConsoleStream ) { m_observer->UpdateAddLine( curline ); } else if ( consoleStream && GetCliHandler()) { GetCliHandler()->Append( curline ); } else if ( consoleStream ) { // log message m_observer->UpdateAddLine( curline ); } } else if ( reCommand.Matches( curline ) ) { //not a gdb message, get the command associated with the message wxString id = reCommand.GetMatch( curline, 1 ); if ( GetCliHandler() && GetCliHandler()->GetCommandId() == id ) { // probably the "^done" message of the CLI command GetCliHandler()->ProcessOutput( curline ); SetCliHandler( NULL ); // we are done processing the CLI } else { //strip the id from the line curline = curline.Mid( 8 ); DoProcessAsyncCommand( curline, id ); } } else if ( curline.StartsWith( wxT( "^done" ) ) || curline.StartsWith( wxT( "*stopped" ) ) ) { //Unregistered command, use the default AsyncCommand handler to process the line DbgCmdHandlerAsyncCmd cmd( m_observer, this ); cmd.ProcessOutput( curline ); } else { //Unknow format, just log it if( m_info.enableDebugLog && !FilterMessage( curline ) ) { m_observer->UpdateAddLine( curline ); } } } }
void DbgGdb::Poke() { static wxRegEx reCommand(wxT("^([0-9]{8})")); //poll the debugger output wxString line; if ( !m_gdbProcess || m_gdbOutputArr.IsEmpty() ) { return; } if (m_debuggeePid == wxNOT_FOUND) { if (GetIsRemoteDebugging()) { m_debuggeePid = m_gdbProcess->GetPid(); } else { std::vector<long> children; ProcUtils::GetChildren(m_gdbProcess->GetPid(), children); std::sort(children.begin(), children.end()); if (children.empty() == false) { m_debuggeePid = children.at(0); } if (m_debuggeePid != wxNOT_FOUND) { wxString msg; msg << wxT("Debuggee process ID: ") << m_debuggeePid; m_observer->UpdateAddLine(msg); } } } while ( DoGetNextLine( line ) ) { // For string manipulations without damaging the original line read wxString tmpline ( line ); StripString( tmpline ); tmpline.Trim().Trim(false); if (m_info.enableDebugLog) { //Is logging enabled? if (line.IsEmpty() == false && !tmpline.StartsWith(wxT(">")) ) { wxString strdebug(wxT("DEBUG>>")); strdebug << line; m_observer->UpdateAddLine(strdebug); } } if (reConnectionRefused.Matches(line)) { StripString(line); #ifdef __WXGTK__ m_consoleFinder.FreeConsole(); #endif m_observer->UpdateAddLine(line); m_observer->UpdateGotControl(DBG_EXITED_NORMALLY); return; } if( tmpline.StartsWith(wxT(">")) ) { // Shell line, probably user command line continue; } if (line.StartsWith(wxT("~")) || line.StartsWith(wxT("&"))) { // lines starting with ~ are considered "console stream" message // and are important to the CLI handler bool consoleStream(false); if ( line.StartsWith(wxT("~")) ) { consoleStream = true; } // Filter out some gdb error lines... if (FilterMessage(line)) { continue; } StripString( line ); // If we got a valid "CLI Handler" instead of writing the output to // the output view, concatenate it into the handler buffer if ( GetCliHandler() && consoleStream ) { GetCliHandler()->Append( line ); } else if ( consoleStream ) { // log message m_observer->UpdateAddLine( line ); } } else if (reCommand.Matches(line)) { //not a gdb message, get the command associated with the message wxString id = reCommand.GetMatch(line, 1); if ( GetCliHandler() && GetCliHandler()->GetCommandId() == id ) { // probably the "^done" message of the CLI command GetCliHandler()->ProcessOutput( line ); SetCliHandler( NULL ); // we are done processing the CLI } else { //strip the id from the line line = line.Mid(8); DoProcessAsyncCommand(line, id); } } else if (line.StartsWith(wxT("^done")) || line.StartsWith(wxT("*stopped"))) { //Unregistered command, use the default AsyncCommand handler to process the line DbgCmdHandlerAsyncCmd cmd(m_observer); cmd.ProcessOutput(line); } else { //Unknow format, just log it if( m_info.enableDebugLog && !FilterMessage(line)) { m_observer->UpdateAddLine(line); } } } }