Diffstat (limited to 'libopie2/opiepim/orecordlist.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 124 |
1 files changed, 65 insertions, 59 deletions
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index 65c2169..a3955b0 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h @@ -4,4 +4,35 @@ -#include <opie/opimaccesstemplate.h> -#include <opie/opimrecord.h> +#include <qarray.h> + +#include "otemplatebase.h" +#include "opimrecord.h" + + +template <class T = OPimRecord> +class ORecordListIterator { +public: + typedef OTemplateBase<T> Base; + ORecordListIterator( const QArray<int>, const Base* ); + ORecordListIterator(); + ~ORecordListIterator(); + ORecordListIterator( const ORecordListIterator& ); + ORecordListIterator &operator=(const ORecordListIterator& ); + T &operator*(); + ORecordListIterator &operator++(); + ORecordListIterator &operator--(); + + bool operator==( const ORecordListIterator& it ); + bool operator!=( const ORecordListIterator& it ); + +private: + QArray<int> m_uids; + int m_current; + const Base* m_temp; + bool m_end : 1; + T m_record; + + /* d pointer for future versions */ + class IteratorPrivate; + IteratorPrivate *d; +}; @@ -10,32 +41,6 @@ class ORecordList { public: - class Iterator { - friend class ORecordList; - public: - Iterator(); - ~Iterator(); - Iterator(const Iterator& ); - Iterator &operator=(const Iterator& ); - T &operator*(); - Iterator &operator++(); - Iterator &operator--(); - - bool operator==( const Iterator& it ); - bool operator!=( const Iterator& it ); - - private: - Iterator( const QArray<int>, - OPimAccessTemplate<T>* ); - - QArray<int> m_uids; - int m_current; - OPimAccessTemplate* m_temp; - bool m_end : 1; - T m_record; - - /* d pointer for future versions */ - class IteratorPrivate; - IteratorPrivate *d; - }; + typedef OTemplateBase<T> Base; + typedef ORecordListIterator<T> Iterator; ORecordList( const QArray<int>& ids, - OPimAccessTemplate<T>* acc ); + const Base* ); ~ORecordList(); @@ -49,3 +54,3 @@ private: QArray<int> m_ids; - OPimAccessTemplate<T>* m_acc; + const Base* m_acc; }; @@ -53,4 +58,4 @@ private: /* ok now implement it */ -template <class T= OPimRecord> -ORecordList<T>::Iterator::Iterator() { +template <class T> +ORecordListIterator<T>::ORecordListIterator() { m_current = 0; @@ -59,4 +64,4 @@ ORecordList<T>::Iterator::Iterator() { } -template <class T= OPimRecord> -ORecordList<T>::Iterator::~Iterator() { +template <class T> +ORecordListIterator<T>::~ORecordListIterator() { /* nothing to delete */ @@ -64,4 +69,4 @@ ORecordList<T>::Iterator::~Iterator() { -template <class T = OPimRecord> -ORecordList<T>::Iterator::Iterator( const ORecordList<T>::Iterator& it) { +template <class T> +ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { m_uids = it.m_uids; @@ -73,4 +78,4 @@ ORecordList<T>::Iterator::Iterator( const ORecordList<T>::Iterator& it) { -template <class T = OPimRecord> -ORecordList<T>::Iterator &ORecordList::Iterator::operator=( const ORecordList<T>::Iterator& it) { +template <class T> +ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { m_uids = it.m_uids; @@ -84,4 +89,4 @@ ORecordList<T>::Iterator &ORecordList::Iterator::operator=( const ORecordList<T> -template <class T = OPimRecord> -T &ORecordList<T>::Iterator::operator*() { +template <class T> +T &ORecordListIterator<T>::operator*() { if (!m_end ) @@ -89,3 +94,3 @@ T &ORecordList<T>::Iterator::operator*() { else - m_record = T; + m_record = T(); @@ -94,4 +99,4 @@ T &ORecordList<T>::Iterator::operator*() { -template <class T = OPimRecord> -ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator++() { +template <class T> +ORecordListIterator<T> &ORecordListIterator<T>::operator++() { if (m_current < m_uids.count() ) { @@ -104,4 +109,4 @@ ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator++() { } -template <class T = OPimRecord> -ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator--() { +template <class T> +ORecordListIterator<T> &ORecordListIterator<T>::operator--() { if ( m_current > 0 ) { @@ -115,4 +120,4 @@ ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator--() { -template <class T = OPimRecord> -bool ORecordList<T>::Iterator::operator==( const ORecordList<T>::Iterator& it ) { +template <class T> +bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { @@ -127,9 +132,9 @@ bool ORecordList<T>::Iterator::operator==( const ORecordList<T>::Iterator& it ) } -template <class T = ORecordList> -bool ORecordList<T>::Iterator::operator!=( const ORecordList<T>::Iterator it ) { +template <class T> +bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { return !(*this == it ); } -template <class T = ORecordList> -ORecordList<T>::Iterator::Iterator( const QArray<int> uids, - OPimAccessTemplate<T>* t ) +template <class T> +ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, + const Base* t ) : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) @@ -137,5 +142,6 @@ ORecordList<T>::Iterator::Iterator( const QArray<int> uids, } -template <class T = ORecordList> + +template <class T> ORecordList<T>::ORecordList( const QArray<int>& ids, - OPimAccessTemplate<T>* acc ) + const Base* acc ) : m_ids( ids ), m_acc( acc ) @@ -143,3 +149,3 @@ ORecordList<T>::ORecordList( const QArray<int>& ids, } -template <class T = ORecordList> +template <class T> ORecordList<T>::~ORecordList() { @@ -147,3 +153,3 @@ ORecordList<T>::~ORecordList() { } -template <class T = ORecordList> +template <class T> ORecordList<T>::Iterator ORecordList<T>::begin() { @@ -152,3 +158,3 @@ ORecordList<T>::Iterator ORecordList<T>::begin() { } -template <class T = ORecordList> +template <class T> ORecordList<T>::Iterator ORecordList<T>::end() { |