diff --git a/include/hpp/manipulation/connected-component.hh b/include/hpp/manipulation/connected-component.hh index 4577c70beb487cffec9509e2c9e7e4acafe61978..21251ab1046d5dd967df99b2d8cff51bf61845b2 100644 --- a/include/hpp/manipulation/connected-component.hh +++ b/include/hpp/manipulation/connected-component.hh @@ -49,12 +49,13 @@ class HPP_MANIPULATION_DLLAPI ConnectedComponent : public core::ConnectedCompone /// \param roadmap node to be added void addNode (const core::NodePtr_t& node); - RoadmapNodes_t getRoadmapNodes (const graph::NodePtr_t graphNode); + const RoadmapNodes_t& getRoadmapNodes (const graph::NodePtr_t graphNode) const; protected: private: GraphNodes_t graphNodeMap_; RoadmapPtr_t roadmap_; + static RoadmapNodes_t empty_; }; // class ConnectedComponent } // namespace manipulation } // namespace hpp diff --git a/src/connected-component.cc b/src/connected-component.cc index 101f2c3459b9d47be7329ac7030708011989d779..e47917ca974af9e73762fe14f7095bb6426d3f9e 100644 --- a/src/connected-component.cc +++ b/src/connected-component.cc @@ -23,6 +23,7 @@ namespace hpp { namespace manipulation { + RoadmapNodes_t ConnectedComponent::empty_ = RoadmapNodes_t(); ConnectedComponentPtr_t ConnectedComponent::create(const RoadmapWkPtr_t& roadmap) { @@ -74,17 +75,15 @@ namespace hpp { } - RoadmapNodes_t ConnectedComponent::getRoadmapNodes (const graph::NodePtr_t graphNode) + const RoadmapNodes_t& ConnectedComponent::getRoadmapNodes ( + const graph::NodePtr_t graphNode) const { - RoadmapNodes_t res; - GraphNodes_t::iterator mapIt = graphNodeMap_.find(graphNode); - if (mapIt != graphNodeMap_.end()) { - res = mapIt->second; - } - return res; + GraphNodes_t::const_iterator mapIt = graphNodeMap_.find(graphNode); + if (mapIt != graphNodeMap_.end()) + return mapIt->second; + return empty_; } - } // namespace manipulation } // namespace hpp diff --git a/src/roadmap.cc b/src/roadmap.cc index 746733c4b908ee4a63b5e2c4f0e2e7bf75eb1a88..009a7dbdac660b2db0bd627a9835b76272cf0a24 100644 --- a/src/roadmap.cc +++ b/src/roadmap.cc @@ -83,7 +83,7 @@ namespace hpp { { core::NodePtr_t result = NULL; minDistance = std::numeric_limits <value_type>::infinity (); - RoadmapNodes_t roadmapNodes = connectedComponent->getRoadmapNodes (node); + const RoadmapNodes_t& roadmapNodes = connectedComponent->getRoadmapNodes (node); for (RoadmapNodes_t::const_iterator itNode = roadmapNodes.begin (); itNode != roadmapNodes.end (); ++itNode) { value_type d = (*distance()) (*(*itNode)->configuration (),