static void merge (Node *parent, Node *child, Arc *newArc) { Arc *oldArc; Node *current = child, *oldParent, *newParent = parent; #ifdef STATS ++ numMergers; #endif while (current->parent) { oldArc = current->arcToParent; current->arcToParent = newArc; oldParent = current->parent; breakRelationship (oldParent, current); addRelationship (newParent, current); newParent = current; current = oldParent; newArc = oldArc; newArc->direction = 1 - newArc->direction; } current->arcToParent = newArc; addRelationship (newParent, current); }
Autolayout::Graph * Autolayout::AutolayouterAdapter::setGraph( UMLView * view ) { if (! view) return 0; Autolayout::Graph * g=getGraph(); if (g&&g->empty()) { UMLWidgetList list = view->getWidgetList(); UMLWidget* widget; for ( widget = list.first(); widget; widget= list.next() ) { if (widget->getBaseType() == Uml::wt_Class) { g->addNode(widget->getID().c_str(),widget->getWidth(), widget->getHeight()); } } AssociationWidgetList as_list=view->getAssociationList(); AssociationWidget* assoc; AssociationWidgetListIt it(as_list); while ( (assoc = it.current()) != 0 ) { ++it; addRelationship(assoc); } } return g; }
void FamilyTree::loadGEDCOM(const char* iFileName) { lube::filemodule gm("ged"); lube::file& vf = gm.create(); var ged = vf.read(iFileName); std::cout << "Individuals: " << ged["Individual"].size() << std::endl; std::cout << "Families: " << ged["Family"].size() << std::endl; // Add to graph for (int i=0; i<ged["Individual"].size(); i++) { // Rely on vertex, returned by add_vertex(), just being an // integer that increments with each call. vertex v = addIndividual(); if ((int)v != i) throw std::runtime_error( "FamilyTree::loadGEDCOM: vertex out of order" ); var& ind = getIndividual(v); ind = ged["Individual"][i]; } for (int i=0; i<ged["Family"].size(); i++) { var f = ged["Family"][i]; var h = f.at("HUSB"); var w = f.at("WIFE"); h.dereference(); w.dereference(); for (int c=0; c<f["CHIL"].size(); c++) { var k = f["CHIL"][c]; if (h) addRelationship(h.cast<int>(), k.cast<int>()); if (w) addRelationship(w.cast<int>(), k.cast<int>()); } } }
void Relationships::addWorksheetRelationship(const QString &relativeType, const QString &target, const QString &targetMode) { addRelationship(schema_doc + relativeType, target, targetMode); }
void Relationships::addPackageRelationship(const QString &relativeType, const QString &target) { addRelationship(schema_package + relativeType, target); }