void udStateChartOptimizer::FindTransWithIdenticalActions(ShapeList& transitions, ShapeList& sublist) { sublist.Clear(); ShapeList::compatibility_iterator node = transitions.GetFirst(); if( !node ) return; udTransElementItem *pTransElement; wxSFLineShape *pTrans = (wxSFLineShape*)node->GetData(); wxString sActions, sTemplate = ((udTransElementItem*)pTrans->GetUserData())->GetActionsString(); sTemplate.Replace(wxT(" "), wxT("")); while(node) { pTrans = (wxSFLineShape*)node->GetData(); pTransElement = (udTransElementItem*)pTrans->GetUserData(); sActions = pTransElement->GetActionsString(); sActions.Replace(wxT(" "), wxT("")); if( sActions == sTemplate ) { node = node->GetNext(); transitions.DeleteObject(pTrans); sublist.Append(pTrans); } else node = node->GetNext(); } }
void wxSFShapeBase::GetNeighbours(ShapeList& neighbours, wxClassInfo *shapeInfo, CONNECTMODE condir, bool direct) { if( !this->IsKindOf(CLASSINFO(wxSFLineShape)) ) { m_lstProcessed.Clear(); this->_GetNeighbours(neighbours, shapeInfo, condir, direct); // delete starting object if necessary (can be added in a case of complex connection network) neighbours.DeleteObject(this); } }
void udStateChartOptimizer::FindTransWithIdenticalTarget(ShapeList& transitions, ShapeList& sublist) { sublist.Clear(); ShapeList::compatibility_iterator node = transitions.GetFirst(); if( !node ) return; wxSFLineShape *pTrans = (wxSFLineShape*)node->GetData(); int nTrgId = pTrans->GetTrgShapeId(); while(node) { pTrans = (wxSFLineShape*)node->GetData(); if( pTrans->GetTrgShapeId() == nTrgId ) { node = node->GetNext(); transitions.DeleteObject(pTrans); sublist.Append(pTrans); } else node = node->GetNext(); } }