本文整理汇总了C++中GEdge::isSelf方法的典型用法代码示例。如果您正苦于以下问题:C++ GEdge::isSelf方法的具体用法?C++ GEdge::isSelf怎么用?C++ GEdge::isSelf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GEdge
的用法示例。
在下文中一共展示了GEdge::isSelf方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: graph
/**
* Destructor for node - removes edge controls on incidient edges and disconnects item from scene
*/
GNode::~GNode()
{
graph()->invalidateRanking();
if ( ( isEdgeControl() || isEdgeLabel())
&& isNotNullP( firstPred())
&& isNotNullP( firstSucc())
&& isNotNullP( firstPred()->pred())
&& isNotNullP( firstSucc()->succ()))
{
GRAPH_ASSERTD( areEqP( firstPred()->style(), firstSucc()->style()),
"Different styles on the same edge");
GEdge *e = graph()->newEdge( firstPred()->pred(), firstSucc()->succ());
e->setStyle( firstPred()->style());
} else if ( isSimple())
{
QList< GNode *> nodes;
GEdge* edge;
Marker m = graph()->newMarker();
for ( edge = firstSucc(); isNotNullP( edge); edge = edge->nextSucc())
{
edge->item()->adjust();
GNode* succ = edge->succ();
while ( succ->isEdgeControl() || succ->isEdgeLabel())
{
assert( isNotNullP( succ->firstSucc()));
if ( succ->mark( m))
{
nodes << succ;
}
succ = succ->firstSucc()->succ();
}
}
for ( edge = firstPred(); isNotNullP( edge); edge = edge->nextPred())
{
if ( edge->isSelf()) // We've already processed this one in previous loop
continue;
edge->item()->adjust();
GNode* pred = edge->pred();
while ( pred->isEdgeControl() || pred->isEdgeLabel())
{
assert( isNotNullP( pred->firstPred()));
if ( pred->mark( m))
{
nodes << pred;
}
pred = pred->firstPred()->pred();
}
}
foreach ( GNode *n, nodes)
{
graph()->deleteNode( n);
}
graph()->freeMarker( m);
}
示例2: n_str
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");
}
}