void DSBBranch::setMainConnections(QList<DSBNode*> own) { for (int i = 0; i < own.size(); i++) { DSBNode *n = own.at(i); DSBReaction *reac = dynamic_cast<DSBReaction*>(n); DSBClone *cl = dynamic_cast<DSBClone*>(n); if (reac) { // predecessor n = getPredecessor(reac); if (n) { DSBClone *c = dynamic_cast<DSBClone*>(n); assert(c); reac->setMainInput(c); } // successor n = getSuccessor(reac); if (n) { DSBClone *c = dynamic_cast<DSBClone*>(n); assert(c); reac->setMainOutput(c); } } else if (cl) { DSBFork *fork = cl->getFork(); if (fork) { // predecessor n = getPredecessor(cl); if (n) { DSBReaction *r = dynamic_cast<DSBReaction*>(n); assert(r); fork->setMainInput(r); } // successor n = getSuccessor(cl); if (n) { DSBReaction *r = dynamic_cast<DSBReaction*>(n); assert(r); fork->setMainOutput(r); } } } else { qDebug() << "ERROR: Found Node which was neither Clone nor Reaction: " << n; } } }
bool ProjectionTreeLabel::descendantAxisBetw(unsigned basing_id, bool consider_final) { // if this is the basing_id label we are done if (id==basing_id) { if (consider_final) { return getPathStep()->getAxisType()==at_descendant || getPathStep()->getAxisType()==at_dos; } else { return false; } } else if (getPathStep()->getAxisType()==at_descendant || getPathStep()->getAxisType()==at_dos) { return true; // we found such an axis } else { return getPredecessor()->descendantAxisBetw(basing_id,consider_final); } }
int FingerTable::toString(char **buf , unsigned int &length) { /**/ char *buffer = new char[4000] ; if (buffer==NULL) return -1; char *message = buffer ; sprintf(message,"**********FINGER TABLE**********") ; message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; for(int i = 0 ; i < getTableLength() ; i++) { sprintf (message, "finger[%d]: node:%d start:%d interval:%d~%d", i+1, getFinger(i+1)->node.GetId() , getFinger(i+1)->start.GetId() , getFinger(i+1)->interval[0].GetId() , getFinger(i+1)->interval[1].GetId() ); message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; } sprintf(message,"**********SUCC LIST**********") ; message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; for(i = 0 ; i < getSuccNum() ; i++) { sprintf (message, "SUCCLIST[%d]: id:%d ip:%s", i, getSuccessor(i).GetId() , getSuccessor(i).GetAddress() ); message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; } sprintf(message,"\r\n**********PREDECESSOR**********") ; message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; sprintf (message, "PREDECESSOR: id:%d ip:%s", getPredecessor().GetId() , getPredecessor().GetAddress() ); message = message + strlen (message); strncpy (message, "\r\n\0", 2); message = message + 2; strncpy(message,"\0",1) ; *buf = buffer ; length = strlen(buffer) ; return 0 ; }