00001 /* 00002 * GridMapIterator.hpp 00003 * 00004 * Created on: Sep 22, 2014 00005 * Author: Péter Fankhauser 00006 * Institute: ETH Zurich, ANYbotics 00007 */ 00008 00009 #pragma once 00010 00011 #include "grid_map_core/GridMap.hpp" 00012 00013 // Eigen 00014 #include <Eigen/Core> 00015 00016 namespace grid_map { 00017 00021 class GridMapIterator 00022 { 00023 public: 00024 00029 GridMapIterator(const grid_map::GridMap &gridMap); 00030 00035 GridMapIterator(const GridMapIterator* other); 00036 00042 GridMapIterator& operator =(const GridMapIterator& other); 00043 00048 bool operator !=(const GridMapIterator& other) const; 00049 00055 const Index operator *() const; 00056 00063 const size_t& getLinearIndex() const; 00064 00069 const Index getUnwrappedIndex() const; 00070 00075 virtual GridMapIterator& operator ++(); 00076 00081 GridMapIterator end() const; 00082 00087 bool isPastEnd() const; 00088 00089 protected: 00090 00092 Size size_; 00093 00095 Index startIndex_; 00096 00098 size_t linearSize_; 00099 00101 size_t linearIndex_; 00102 00104 bool isPastEnd_; 00105 00106 public: 00107 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 00108 }; 00109 00110 } /* namespace */