void connectionManager::releaseIfNotUsed(long inputTimeCoordinate, long connectionPinHeight, Pathfinder& pathfinder, bool checkInPoints) { for(int boxType=0; boxType<2; boxType++) { std::set<size_t> toRelease; for(std::set<size_t>::iterator it = pool.toBeAvailable[boxType].begin(); it != pool.toBeAvailable[boxType].end(); it++) { /*compute connection pin coordinates based on heuristic and depth*/ int connNr = *it; pinpair connPins = getConnectionPinPair(connNr, inputTimeCoordinate, connectionPinHeight); printf("712: check conn %d @ coord %d\n", connNr, inputTimeCoordinate); bool isReleased = true; if(checkInPoints) { for(int i = 0; i < 2; i++) { Point* point = pathfinder.getOrCreatePoint(connPins.getPinDetail(i).coord[CIRCUITWIDTH], connPins.getPinDetail(i).coord[CIRCUITDEPTH], connPins.getPinDetail(i).coord[CIRCUITHEIGHT], false /*no boxes should exist in future*/); printf("712: %s\n", connPins.getPinDetail(i).coord.toString(',').c_str()); isReleased = isReleased && point->isFree(); } } if(isReleased) { toRelease.insert(connNr); } } for(std::set<size_t>::iterator it = toRelease.begin(); it != toRelease.end(); it++) { int connNr = *it; pool.releaseConnection(boxType, connNr); } } }