// Version: $Id: 5242100ce8bbc6957ab95ec08dce75b904a939d2 $ // // // Commentary: // // // Change Log: // // // Code: #pragma once #include #include "dtkDistributedIterator.h" // /////////////////////////////////////////////////////////////////// // dtkDistributedNavigator // /////////////////////////////////////////////////////////////////// template class dtkDistributedNavigator { const Container *c; qlonglong m_start_id; qlonglong m_size; public: dtkDistributedNavigator(void); dtkDistributedNavigator(const Container& container); dtkDistributedNavigator(const Container& container, qlonglong start, qlonglong size); public: dtkDistributedNavigator(const dtkDistributedNavigator& other); dtkDistributedNavigator(dtkDistributedNavigator&& other); public: dtkDistributedNavigator& operator = (const dtkDistributedNavigator& other); dtkDistributedNavigator& operator = (dtkDistributedNavigator&& other); public: void setRange(qlonglong start, qlonglong size); public: qlonglong size(void) const; qlonglong startIndex(void) const; public: typedef dtkDistributedIterator iterator; public: iterator begin(void) const; iterator end(void) const; }; // /////////////////////////////////////////////////////////////////// template inline dtkDistributedNavigator::dtkDistributedNavigator(void) : c(NULL), m_start_id(0), m_size(0) { } template inline dtkDistributedNavigator::dtkDistributedNavigator(const Container& container) : c(&container), m_start_id(0), m_size(0) { } template inline dtkDistributedNavigator::dtkDistributedNavigator(const Container& container, qlonglong start, qlonglong size) : c(&container), m_start_id(start), m_size(size) { } template inline dtkDistributedNavigator::dtkDistributedNavigator(const dtkDistributedNavigator& o) : c(o.c), m_start_id(o.m_start_id), m_size(o.m_size) { } template inline dtkDistributedNavigator::dtkDistributedNavigator(dtkDistributedNavigator&& o) : c(o.c), m_start_id(o.m_start_id), m_size(o.m_size) { } template inline dtkDistributedNavigator& dtkDistributedNavigator::operator = (const dtkDistributedNavigator& o) { c = o.c; m_start_id = o.m_start_id; m_size = o.m_size; return *this; } template inline dtkDistributedNavigator& dtkDistributedNavigator::operator = (dtkDistributedNavigator&& o) { c = o.c; m_start_id = o.m_start_id; m_size = o.m_size; return *this; } template inline void dtkDistributedNavigator::setRange(qlonglong start, qlonglong size) { m_start_id = start; m_size = size; } template inline qlonglong dtkDistributedNavigator::size(void) const { return m_size; } template inline qlonglong dtkDistributedNavigator::startIndex(void) const { return m_start_id; } template inline typename dtkDistributedNavigator::iterator dtkDistributedNavigator::begin(void) const { return iterator(*c, m_start_id); } template inline typename dtkDistributedNavigator::iterator dtkDistributedNavigator::end(void) const { return iterator(*c, m_start_id + m_size); } // // dtkDistributedNavigator.h ends here