Program Listing for File SubmapIterator.hpp

Return to documentation for file (/tmp/ws/src/grid_map/grid_map_core/include/grid_map_core/iterators/SubmapIterator.hpp)

/*
 * SubmapIterator.hpp
 *
 *  Created on: Sep 12, 2014
 *      Author: Péter Fankhauser
 *   Institute: ETH Zurich, ANYbotics
 */

#ifndef GRID_MAP_CORE__ITERATORS__SUBMAPITERATOR_HPP_
#define GRID_MAP_CORE__ITERATORS__SUBMAPITERATOR_HPP_

#include <Eigen/Core>

#include "grid_map_core/GridMap.hpp"
#include "grid_map_core/SubmapGeometry.hpp"
#include "grid_map_core/BufferRegion.hpp"

namespace grid_map
{

class SubmapIterator
{
public:
  explicit SubmapIterator(const grid_map::SubmapGeometry & submap);

  SubmapIterator(const grid_map::GridMap & gridMap, const grid_map::BufferRegion & bufferRegion);

  SubmapIterator(
    const grid_map::GridMap & gridMap, const Index & submapStartIndex,
    const Size & submapSize);

  explicit SubmapIterator(const SubmapIterator * other);

  SubmapIterator & operator=(const SubmapIterator & other);

  bool operator!=(const SubmapIterator & other) const;

  const Index & operator*() const;

  const Index & getSubmapIndex() const;

  SubmapIterator & operator++();

  bool isPastEnd() const;

  const Size & getSubmapSize() const;

private:
  Size size_;

  Index startIndex_;

  Index index_;

  Size submapSize_;

  Index submapStartIndex_;

  Index submapIndex_;

  bool isPastEnd_;

public:
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};

}  // namespace grid_map

#endif  // GRID_MAP_CORE__ITERATORS__SUBMAPITERATOR_HPP_