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;
}
Example #3
0
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");
    }
}
Example #4
0
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");
    }
}
Example #5
0
/** 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
}
Example #6
0
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");
    }
}