bool OptimizableGraph::addEdge(HyperGraph::Edge* e_) { OptimizableGraph::Edge* e = dynamic_cast<OptimizableGraph::Edge*>(e_); assert(e && "Edge does not inherit from OptimizableGraph::Edge"); // std::cerr << "subclass of OptimizableGraph::Edge confirmed"; if (! e) return false; bool eresult = HyperGraph::addEdge(e); if (! eresult) return false; // std::cerr << "called HyperGraph::addEdge" << std::endl; e->_internalId = _nextEdgeId++; if (e->numUndefinedVertices()) return true; // std::cerr << "internalId set" << std::endl; if (! e->resolveParameters()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve parameters for edge " << e << endl; return false; } // std::cerr << "parameters set" << std::endl; if (! e->resolveCaches()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve caches for edge " << e << endl; return false; } // std::cerr << "updating jacobian size" << std::endl; _jacobianWorkspace.updateSize(e); // std::cerr << "about to return true" << std::endl; return true; }
bool OptimizableGraph::addEdge(HyperGraph::Edge* e_) { OptimizableGraph::Edge* e = dynamic_cast<OptimizableGraph::Edge*>(e_); assert(e && "Edge does not inherit from OptimizableGraph::Edge"); if (! e) return false; bool eresult = HyperGraph::addEdge(e); if (! eresult) return false; e->_internalId = _nextEdgeId++; if (! e->resolveParameters()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve parameters for edge " << e << endl; return false; } if (! e->resolveCaches()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve caches for edge " << e << endl; return false; } _jacobianWorkspace.updateSize(e); return true; }
bool OptimizableGraph::setEdgeVertex(HyperGraph::Edge* e, int pos, HyperGraph::Vertex* v){ if (! HyperGraph::setEdgeVertex(e,pos,v)){ return false; } if (!e->numUndefinedVertices()){ #ifndef NDEBUG OptimizableGraph::Edge* ee = dynamic_cast<OptimizableGraph::Edge*>(e); assert(ee && "Edge is not a OptimizableGraph::Edge"); #else OptimizableGraph::Edge* ee = static_cast<OptimizableGraph::Edge*>(e); #endif if (! ee->resolveParameters()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve parameters for edge " << e << endl; return false; } if (! ee->resolveCaches()){ cerr << __FUNCTION__ << ": FATAL, cannot resolve caches for edge " << e << endl; return false; } _jacobianWorkspace.updateSize(e); } return true; }