void Leaf::createNewName(const StringFormatter *nameFormatter, const StringFormatter *extensionFormatter, Operation::CheckNewName *checker, Operation::RenameFiles *renameFiles) { Q_CHECK_PTR(nameFormatter); Q_CHECK_PTR(extensionFormatter); Q_CHECK_PTR(checker); Q_CHECK_PTR(renameFiles); setStateDefault(); QWriteLocker locker(&lock); if (fileName.isEmpty()) return; QString newBaseName = nameFormatter->exec(fileName); QString newExtension = extensionFormatter->exec(fileName); if (!newBaseName.isEmpty() & !newExtension.isEmpty()) newBaseName += "."; newName = newBaseName + newExtension; if ((newName.isEmpty()) | (newName == fileName)) return; checker->append(this, newName); renameFiles->appendTarget(this); locker.unlock(); setStateReadyToRename(); }
int UIGraphicsZoomButton::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = UIGraphicsButton::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< bool*>(_v) = stateDefault(); break; } _id -= 1; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setStateDefault(*reinterpret_cast< bool*>(_v)); break; } _id -= 1; } else if (_c == QMetaObject::ResetProperty) { _id -= 1; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 1; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 1; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 1; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 1; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 1; } #endif // QT_NO_PROPERTIES return _id; }
void TestParser::parseLine( QString line) { QString n_str("Node "); QString e_str("Edge "); /** Node recognition */ QRegExp node_rx("CF ?(Enter)? ?(\\w*) Node (\\d+)"); /** Edge recognition */ QRegExp edge_rx("CF EDGE (\\d+) \\[(\\d+)->(\\d+)\\]"); QTextStream stream( stdout); /** Expression recognition */ int pos = 0; if ( edge_rx.indexIn( line) != -1) { QString name = e_str.append( edge_rx.cap(1)); QString pred_name("Node "); pred_name.append( edge_rx.cap( 2)); QString succ_name("Node "); succ_name.append( edge_rx.cap( 3)); /** Back edge */ QRegExp back_rx("Back"); /** Add edge to symtab */ if ( symtab.find( name) == symtab.end() && symtab.find( pred_name) != symtab.end() && symtab.find( succ_name) != symtab.end()) { SymEdge *edge = new SymEdge( name); edge->setPred( pred_name); edge->setSucc( succ_name); symtab[ name] = edge; /** Add edge to graph */ GNode* pred = static_cast< SymNode *>( symtab[ pred_name])->node(); GNode* succ = static_cast< SymNode *>( symtab[ succ_name])->node(); GEdge* e = graph->graph()->newEdge( pred, succ); #ifdef _DEBUG //stream << name << ": " << pred_name << "->" << succ_name << endl; #endif if ( back_rx.indexIn( line) != -1 && !e->isSelf()) { GNode* label = e->insertLabelNode( QPointF( 0,0)); label->item()->setPlainText( "Back"); } } } else if ( node_rx.indexIn( line) != -1 ) { bool good_id = false; int ir_id = node_rx.cap(3).toInt( &good_id); QString text = QString("Node ").append( node_rx.cap(3)); QString name = n_str.append( node_rx.cap(3)); if ( !node_rx.cap( 1).isEmpty()) { text.append("\n").append( node_rx.cap(1)); } if ( !node_rx.cap( 2).isEmpty()) { text.append("\n").append( node_rx.cap(2)); } /** Add node to symtab */ if ( symtab.find( name ) == symtab.end()) { SymNode* node = new SymNode( name); curr_node = static_cast<CFNode *>( graph->graph()->newNode()); curr_node->setDoc( new QTextDocument()); node->setNode( curr_node); node->node()->item()->setPlainText( text); if ( good_id) { node->node()->setIRId( ir_id); } symtab[ name] = node; #ifdef _DEBUG //stream << name << endl; #endif } } else { if ( !isStateNode()) setStateDefault(); } if ( isStateNode()) { node_text.append( line).append( "\n"); } }
void TestParser::parseLineGCC( QString line) { QString n_str("Node "); QString e_str("Edge "); /** Node recognition */ QRegExp node_rx("^;; Start of basic block"); QRegExp preds_rx("^;; Pred edge "); QRegExp succs_rx("^;; Succ edge "); QTextStream stream( stdout); /** Expression recognition */ int pos = 0; if ( preds_rx.indexIn( line) == 0) { int index = preds_rx.matchedLength(); QRegExp num_rx(" (\\d+)"); while ( ( index = num_rx.indexIn( line, index) )!= -1) { index += num_rx.matchedLength(); assert( isNotNullP( curr_node)); int pred_num = num_rx.cap(1).toInt(); QString name = QString("%1->%2") .arg( pred_num) .arg( curr_node->irId()); QString pred_name = QString("Node %1").arg( pred_num); QString succ_name = QString("Node %1").arg( curr_node->irId()); /** Add edge to symtab */ if ( symtab.find( name) == symtab.end() && symtab.find( pred_name) != symtab.end() && symtab.find( succ_name) != symtab.end()) { SymEdge *edge = new SymEdge( name); edge->setPred( pred_name); edge->setSucc( succ_name); symtab[ name] = edge; /** Add edge to graph */ GNode* pred = static_cast< SymNode *>( symtab[ pred_name])->node(); GNode* succ = static_cast< SymNode *>( symtab[ succ_name])->node(); GEdge* e = graph->graph()->newEdge( pred, succ); #ifdef _DEBUG //stream << name << ": " << pred_name << "->" << succ_name << endl; #endif } } } else if ( succs_rx.indexIn( line) == 0) { int index = succs_rx.matchedLength(); QRegExp num_rx(" (\\d+)"); while ( ( index = num_rx.indexIn( line, index) )!= -1) { index += num_rx.matchedLength(); assert( isNotNullP( curr_node)); int pred_num = num_rx.cap(1).toInt(); QString name = QString("%1->%2") .arg( curr_node->irId()) .arg( pred_num); QString pred_name = QString("Node %1").arg( curr_node->irId()); QString succ_name = QString("Node %1").arg( pred_num); /** Add edge to symtab */ if ( symtab.find( name) == symtab.end() && symtab.find( pred_name) != symtab.end() && symtab.find( succ_name) != symtab.end()) { SymEdge *edge = new SymEdge( name); edge->setPred( pred_name); edge->setSucc( succ_name); symtab[ name] = edge; /** Add edge to graph */ GNode* pred = static_cast< SymNode *>( symtab[ pred_name])->node(); GNode* succ = static_cast< SymNode *>( symtab[ succ_name])->node(); GEdge* e = graph->graph()->newEdge( pred, succ); #ifdef _DEBUG //stream << name << ": " << pred_name << "->" << succ_name << endl; #endif } } } else if ( node_rx.indexIn( line) != -1 ) { QRegExp num_rx("-> (\\d+)"); if ( num_rx.indexIn( line) != -1) { bool good_id = false; int ir_id = num_rx.cap(1).toInt( &good_id); QString text = QString("Block ").append( num_rx.cap(1)); QString name = n_str.append( num_rx.cap(1)); /** Add node to symtab */ if ( symtab.find( name ) == symtab.end()) { SymNode* node = new SymNode( name); curr_node = static_cast<CFNode *>( graph->graph()->newNode()); curr_node->setDoc( new QTextDocument()); node->setNode( curr_node); node->node()->item()->setPlainText( text); if ( good_id) { node->node()->setIRId( ir_id); } symtab[ name] = node; #ifdef _DEBUG //stream << name << endl; #endif } } } else { if ( !isStateNode()) setStateDefault(); } if ( isStateNode()) { node_text.append( line).append( "\n"); } }
/** Parse GCC dump */ void TestParser::parseGCCUnit( DumpUnitInfo *unit) { total_lines_num = 0; DumpPos beg = unit->pos(); DumpPos end = unit->end(); if ( !file.isOpen() && !file.open( QIODevice::ReadOnly)) { return; } file.reset(); /** Read file line by line */ QTextStream in( &file); QString line; unit_beg = 0; unit_id = 0; do { line = in.readLine(); if ( total_lines_num >= beg) { break; } total_lines_num++; } while ( !line.isNull()); cur_line_num = 0; /** Init state */ setStateInit(); #ifdef _DEBUG out( "Started parsing"); #endif do { curr_line = in.readLine(); cur_line_num++; if ( !nextLineGCC( curr_line)) { line.append( curr_line); } else { if ( !line.isNull()) { if ( nodeStopGCC( line)) { endNode(); setStateDefault(); } if ( nodeStartGCC( line)) { setStateNode(); startNode(); } parseLineGCC( line); } line = curr_line; } if ( total_lines_num >= end) break; total_lines_num++; } while ( !curr_line.isNull()); if ( isStateNode()) { endNode(); } #ifdef _DEBUG out( "Finished parsing"); #endif }
void TestParser::parseLineLLVM( QString line) { /** Node recognition */ QRegExp node_rx("^([^:]+):"); QRegExp preds_rx("; preds = "); QTextStream stream( stdout); /** Expression recognition */ int pos = 0; if ( node_rx.indexIn( line) != -1 ) { QString name = node_rx.cap(1); /** Add node to symtab */ if ( symtab.find( name ) == symtab.end()) { SymNode* node = new SymNode( name); curr_node = static_cast<CFNode *>( graph->graph()->newNode()); curr_node->setDoc( new QTextDocument()); node->setNode( curr_node); node->node()->item()->setPlainText( name); symtab[ name] = node; #ifdef _DEBUG //stream << name << endl; #endif } else { curr_node = static_cast< SymNode *>( symtab[ name])->node(); } } if ( preds_rx.indexIn( line) != -1) { int index = preds_rx.matchedLength(); QRegExp name_rx("%([^,]+),?"); while ( ( index = name_rx.indexIn( line, index) )!= -1) { index += name_rx.matchedLength(); assert( isNotNullP( curr_node)); QString pred_name = name_rx.cap(1); QString succ_name = curr_node->item()->toPlainText(); QString name = QString("%1->%2") .arg( pred_name) .arg( succ_name); if ( symtab.find( pred_name) == symtab.end()) { SymNode* node = new SymNode( pred_name); CFNode * pred_node = static_cast<CFNode *>( graph->graph()->newNode()); pred_node->setDoc( new QTextDocument()); node->setNode( pred_node); node->node()->item()->setPlainText( pred_name); symtab[ pred_name] = node; } /** Add edge to symtab */ if ( symtab.find( name) == symtab.end() && symtab.find( pred_name) != symtab.end() && symtab.find( succ_name) != symtab.end()) { SymEdge *edge = new SymEdge( name); edge->setPred( pred_name); edge->setSucc( succ_name); symtab[ name] = edge; /** Add edge to graph */ GNode* pred = static_cast< SymNode *>( symtab[ pred_name])->node(); GNode* succ = static_cast< SymNode *>( symtab[ succ_name])->node(); GEdge* e = graph->graph()->newEdge( pred, succ); #ifdef _DEBUG //stream << name << ": " << pred_name << "->" << succ_name << endl; #endif } } } if ( !isStateNode()) setStateDefault(); if ( isStateNode()) { node_text.append( line).append( "\n"); } }