#include #include #include EntityView::EntityView(index_t start, index_t size) : m_start(start) , m_size(size) { } Entity EntityView::operator[](index_t index) const { return Entity(m_start + index); } //non-const iterator EntityView::iterator::iterator(index_t index) : m_currentEntity(index) { } EntityView::iterator& EntityView::iterator::operator++() { m_currentEntity++; return *this; } EntityView::iterator EntityView::iterator::operator++(int) { m_currentEntity++; return m_currentEntity - 1; } EntityView::iterator& EntityView::iterator::operator--() { m_currentEntity--; return *this; } EntityView::iterator EntityView::iterator::operator--(int) { m_currentEntity--; return m_currentEntity + 1; } Entity EntityView::iterator::operator*() { return m_currentEntity; } Entity EntityView::iterator::operator[](int index) { return m_currentEntity + index; } bool EntityView::iterator::operator==(iterator other) { return m_currentEntity == other.m_currentEntity; } bool EntityView::iterator::operator!=(iterator other) { return m_currentEntity != other.m_currentEntity; } EntityView::iterator EntityView::begin() { return iterator(m_start); } EntityView::iterator EntityView::end() { return iterator(m_start + m_size); }