Merge pull request #503 from borglab/fix/nfg-check
General check for null pointer in saveGraphrelease/4.3a0
commit
199ac63ca5
|
@ -205,42 +205,49 @@ void NonlinearFactorGraph::saveGraph(std::ostream &stm, const Values& values,
|
||||||
// Create factors and variable connections
|
// Create factors and variable connections
|
||||||
for(size_t i = 0; i < size(); ++i) {
|
for(size_t i = 0; i < size(); ++i) {
|
||||||
const NonlinearFactor::shared_ptr& factor = at(i);
|
const NonlinearFactor::shared_ptr& factor = at(i);
|
||||||
if(formatting.plotFactorPoints) {
|
// If null pointer, move on to the next
|
||||||
|
if (!factor) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formatting.plotFactorPoints) {
|
||||||
const KeyVector& keys = factor->keys();
|
const KeyVector& keys = factor->keys();
|
||||||
if (formatting.binaryEdges && keys.size()==2) {
|
if (formatting.binaryEdges && keys.size() == 2) {
|
||||||
stm << " var" << keys[0] << "--" << "var" << keys[1] << ";\n";
|
stm << " var" << keys[0] << "--"
|
||||||
|
<< "var" << keys[1] << ";\n";
|
||||||
} else {
|
} else {
|
||||||
// Make each factor a dot
|
// Make each factor a dot
|
||||||
stm << " factor" << i << "[label=\"\", shape=point";
|
stm << " factor" << i << "[label=\"\", shape=point";
|
||||||
{
|
{
|
||||||
map<size_t, Point2>::const_iterator pos = formatting.factorPositions.find(i);
|
map<size_t, Point2>::const_iterator pos =
|
||||||
if(pos != formatting.factorPositions.end())
|
formatting.factorPositions.find(i);
|
||||||
stm << ", pos=\"" << formatting.scale*(pos->second.x() - minX) << ","
|
if (pos != formatting.factorPositions.end())
|
||||||
<< formatting.scale*(pos->second.y() - minY) << "!\"";
|
stm << ", pos=\"" << formatting.scale * (pos->second.x() - minX)
|
||||||
|
<< "," << formatting.scale * (pos->second.y() - minY)
|
||||||
|
<< "!\"";
|
||||||
}
|
}
|
||||||
stm << "];\n";
|
stm << "];\n";
|
||||||
|
|
||||||
// Make factor-variable connections
|
// Make factor-variable connections
|
||||||
if(formatting.connectKeysToFactor && factor) {
|
if (formatting.connectKeysToFactor && factor) {
|
||||||
for(Key key: *factor) {
|
for (Key key : *factor) {
|
||||||
stm << " var" << key << "--" << "factor" << i << ";\n";
|
stm << " var" << key << "--"
|
||||||
|
<< "factor" << i << ";\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
Key k;
|
||||||
if(factor) {
|
bool firstTime = true;
|
||||||
Key k;
|
for (Key key : *this->at(i)) {
|
||||||
bool firstTime = true;
|
if (firstTime) {
|
||||||
for(Key key: *this->at(i)) {
|
|
||||||
if(firstTime) {
|
|
||||||
k = key;
|
|
||||||
firstTime = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
stm << " var" << key << "--" << "var" << k << ";\n";
|
|
||||||
k = key;
|
k = key;
|
||||||
|
firstTime = false;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
stm << " var" << key << "--"
|
||||||
|
<< "var" << k << ";\n";
|
||||||
|
k = key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue