#ifndef id873715F57B504CCF8227CE03EA28CAFA #define id873715F57B504CCF8227CE03EA28CAFA #include #include #include "primitivetypes.hpp" namespace dk { template class TileIterator : public boost::iterator_facade, T, boost::biderectional_traversal_tag> { friend class boost::iterator_core_access; public: typedef Vector coords; TileIterator ( void ); TileIterator ( const TileIterator& parOther ) = default; TileIterator ( const coords& parFrom, const coords& parTo ); TileIterator ( const coords& parFrom, const coords& parTo, const coords& parAreaFrom, const coords& parAreaTo, const coords& parTotal ); ~TileIterator ( void ) = default; private: void increment ( void ); void decrement ( void ); void advance ( size_t parAdvance ); ptrdiff_t distance_to ( const MeshSelectionIterator& parOther ); bool equal ( const MeshSelectionIterator& parOther ) const; T& dereference ( void ) const; coords m_pos; coords m_from; coords m_to; coords m_areafrom; coords m_areato; coords m_total; }; } //namespace dk #include "implem/tileiterator.inl" #endif