void UmlFlow::solveThem() { QValueList<Flow>::Iterator iter; for (iter = All.begin(); iter != All.end(); ++iter) { Flow & flow = *iter; QMap<QCString, UmlItem*>::Iterator isrc = UmlItem::All.find(flow.source); QMap<QCString, UmlItem*>::Iterator itgt = UmlItem::All.find(flow.target); if ((isrc == UmlItem::All.end()) && ((isrc = Outgoings.find(flow.id)) == Outgoings.end())) { if (!FileIn::isBypassedId(flow.source)) UmlCom::trace("flow '" + flow.id + "' : unknown source reference '" + flow.source + "'<br>"); } else if ((itgt == UmlItem::All.end()) && ((itgt = Incomings.find(flow.id)) == Incomings.end())) { if (!FileIn::isBypassedId(flow.target)) UmlCom::trace("flow '" + flow.id + "' : unknown target reference '" + flow.target + "'<br>"); } else { UmlActivityNode * src = dynamic_cast<UmlActivityNode*>(*isrc); UmlActivityNode * tgt = dynamic_cast<UmlActivityNode*>(*itgt); if (src == 0) UmlCom::trace("'" + flow.source + "' is not an activity node<br>"); else if (tgt == 0) UmlCom::trace("'" + flow.target + "' is not an activity node<br>"); else { UmlFlow * f = UmlFlow::create(src, tgt); if (f == 0) UmlCom::trace("cannot create flow '" + flow.id + "'<br>"); else { UmlItem::All.insert(flow.id, f); if (! flow.name.isEmpty()) f->set_Name(flow.name); if (flow.interrupt) f->set_Stereotype("interrupt"); if (! flow.selection.isEmpty()) { QMap<QCString, QCString>::Iterator iter = OpaqueDefs.find(flow.selection); if (iter == OpaqueDefs.end()) { if (!FileIn::isBypassedId(flow.selection)) UmlCom::trace("flow '" + flow.id + "' : unknown selection reference '" + flow.selection + "'<br>"); } else f->set_Selection(*iter); } if (! flow.transformation.isEmpty()) { QMap<QCString, QCString>::Iterator iter = OpaqueDefs.find(flow.transformation); if (iter == OpaqueDefs.end()) { if (!FileIn::isBypassedId(flow.transformation)) UmlCom::trace("flow '" + flow.id + "' : unknown transformation reference '" + flow.transformation + "'<br>"); } else f->set_Transformation(*iter); } if (! flow.weight.isEmpty()) f->set_Weight(flow.weight); if (! flow.guard.isEmpty()) f->set_Guard(flow.guard); f->unload(FALSE, FALSE); } } } } All.clear(); }