00001 00005 #pragma once 00006 00007 #include "../common.hpp" 00008 #include "../cost_map.hpp" 00009 #include "../submap_geometry.hpp" 00010 00011 namespace cost_map { 00012 00018 class SubmapIterator 00019 { 00020 public: 00021 00026 SubmapIterator(const cost_map::SubmapGeometry& submap); 00027 00032 SubmapIterator(const cost_map::CostMap& gridMap, const cost_map::BufferRegion& bufferRegion); 00033 00040 SubmapIterator(const cost_map::CostMap& gridMap, const Index& submapStartIndex, 00041 const Size& submapSize); 00042 00047 SubmapIterator(const SubmapIterator* other); 00048 00054 SubmapIterator& operator =(const SubmapIterator& other); 00055 00060 bool operator !=(const SubmapIterator& other) const; 00061 00066 const Index& operator *() const; 00067 00072 const Index& getSubmapIndex() const; 00073 00078 SubmapIterator& operator ++(); 00079 00084 bool isPastEnd() const; 00085 00086 private: 00087 00089 Size size_; 00090 00092 Index startIndex_; 00093 00095 Index index_; 00096 00098 Size submapSize_; 00099 00101 Index submapStartIndex_; 00102 00104 Index submapIndex_; 00105 00107 bool isPastEnd_; 00108 }; 00109 00110 } /* namespace */