static void createTwinConnection(IDnum nodeID, IDnum node2ID, Connection * connect) { Connection *newConnection = allocateConnection(); IDnum nodeIndex = nodeID + nodeCount(graph); // Fill in newConnection->distance = connect->distance; newConnection->variance = connect->variance; newConnection->direct_count = connect->direct_count; newConnection->paired_count = connect->paired_count; newConnection->destination = getNodeInGraph(graph, node2ID); newConnection->weight = 0; newConnection->status = false; // Batch to twin newConnection->twin = connect; connect->twin = newConnection; // Insert in scaffold newConnection->previous = NULL; newConnection->next = scaffold[nodeIndex]; if (scaffold[nodeIndex] != NULL) scaffold[nodeIndex]->previous = newConnection; scaffold[nodeIndex] = newConnection; }
static Connection *createNewConnection(IDnum nodeID, IDnum node2ID, IDnum direct_count, IDnum paired_count, Coordinate distance, double variance) { Node *destination = getNodeInGraph(graph, node2ID); IDnum nodeIndex = nodeID + nodeCount(graph); Connection *connect = allocateConnection(); // Fill in connect->destination = destination; connect->direct_count = direct_count; connect->paired_count = paired_count; connect->distance = (double) distance; connect->variance = variance; connect->weight = 0; connect->status = false; // Insert in scaffold connect->previous = NULL; connect->next = scaffold[nodeIndex]; if (scaffold[nodeIndex] != NULL) scaffold[nodeIndex]->previous = connect; scaffold[nodeIndex] = connect; if (node2ID != nodeID) createTwinConnection(node2ID, nodeID, connect); else connect->twin = NULL; return connect; }
VALUE rb_connection_new(VALUE database, VALUE user, VALUE password, VALUE options) { VALUE connection = allocateConnection(cConnection), parameters[4]; parameters[0] = database; parameters[1] = user; parameters[2] = password; parameters[3] = options; initializeConnection(4, parameters, connection); return(connection); }