From e6c53c4d7317e766235449535b22d0d2fe709214 Mon Sep 17 00:00:00 2001 From: zecke Date: Sat, 21 Sep 2002 15:02:50 +0000 Subject: Some more implementation in OPimRecord::setUid ORecordList implemented never compiled it though OTodo a new c'tor and some more changes --- (limited to 'libopie2/opiepim/orecordlist.h') diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index c17186f..65c2169 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h @@ -11,25 +11,34 @@ public: class Iterator { friend class ORecordList; public: - Iterator() {} - ~Iterator() {} - Iterator(const Iterator& ) {} + Iterator(); + ~Iterator(); + Iterator(const Iterator& ); Iterator &operator=(const Iterator& ); - T &operator*() {} + T &operator*(); Iterator &operator++(); + Iterator &operator--(); bool operator==( const Iterator& it ); bool operator!=( const Iterator& it ); - } - ORecordList( const QArray& ids, - OPimAccessTemplate* acc ) - : m_ids(ids ), m_acc( acc ) { + private: + Iterator( const QArray, + OPimAccessTemplate* ); - } - ~ORecordList() { + QArray m_uids; + int m_current; + OPimAccessTemplate* m_temp; + bool m_end : 1; + T m_record; - } + /* d pointer for future versions */ + class IteratorPrivate; + IteratorPrivate *d; + }; + ORecordList( const QArray& ids, + OPimAccessTemplate* acc ); + ~ORecordList(); Iterator begin(); Iterator end(); /* @@ -37,8 +46,114 @@ public: ConstIterator end()const; */ private: - QArray ids; + QArray m_ids; OPimAccessTemplate* m_acc; }; +/* ok now implement it */ +template +ORecordList::Iterator::Iterator() { + m_current = 0; + m_temp = 0l; + m_end = true; +} +template +ORecordList::Iterator::~Iterator() { +/* nothing to delete */ +} + +template +ORecordList::Iterator::Iterator( const ORecordList::Iterator& it) { + m_uids = it.m_uids; + m_current = it.m_current; + m_temp = it.m_temp; + m_end = it.m_end; + m_record = it.m_record; +} + +template +ORecordList::Iterator &ORecordList::Iterator::operator=( const ORecordList::Iterator& it) { + m_uids = it.m_uids; + m_current = it.m_current; + m_temp = it.m_temp; + m_end = it.m_end; + m_record = it.m_record; + + return *this; +} + +template +T &ORecordList::Iterator::operator*() { + if (!m_end ) + m_record = m_temp->find( m_uids[m_current] ); + else + m_record = T; + + return m_record; +} + +template +ORecordList::Iterator &ORecordList::Iterator::operator++() { + if (m_current < m_uids.count() ) { + m_end = false; + ++m_current; + }else + m_end = true; + + return *this; +} +template +ORecordList::Iterator &ORecordList::Iterator::operator--() { + if ( m_current > 0 ) { + --m_current; + m_end = false; + } else + m_end = true; + + return *this; +} + +template +bool ORecordList::Iterator::operator==( const ORecordList::Iterator& it ) { + + /* if both are at we're the same.... */ + if ( m_end == it.m_end ) return true; + + if ( m_uids != it.m_uids ) return false; + if ( m_current != it.m_current ) return false; + if ( m_temp != it.m_temp ) return false; + + return true; +} +template +bool ORecordList::Iterator::operator!=( const ORecordList::Iterator it ) { + return !(*this == it ); +} +template +ORecordList::Iterator::Iterator( const QArray uids, + OPimAccessTemplate* t ) + : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) +{ +} +template +ORecordList::ORecordList( const QArray& ids, + OPimAccessTemplate* acc ) + : m_ids( ids ), m_acc( acc ) +{ +} +template +ORecordList::~ORecordList() { +/* nothing to do here */ +} +template +ORecordList::Iterator ORecordList::begin() { + Iterator it( m_ids, m_acc ); + return it; +} +template +ORecordList::Iterator ORecordList::end() { + Iterator it( m_ids, m_acc ); + it.m_end = true; + it.m_current = m_ids.count(); +} #endif -- cgit v0.9.0.2