summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/orecordlist.h
Side-by-side diff
Diffstat (limited to 'libopie2/opiepim/orecordlist.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/orecordlist.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h
index 3b30a73..75bb33c 100644
--- a/libopie2/opiepim/orecordlist.h
+++ b/libopie2/opiepim/orecordlist.h
@@ -11,34 +11,36 @@
* Our List Iterator
* it behaves like STL or Qt
*
* for(it = list.begin(); it != list.end(); ++it )
* doSomeCoolStuff( (*it) );
*/
+template <class T> class ORecordList;
template <class T = OPimRecord>
class ORecordListIterator {
+ friend class ORecordList<T>;
public:
typedef OTemplateBase<T> Base;
-
+
/**
* The c'tor used internally from
* ORecordList
*/
ORecordListIterator( const QArray<int>, const Base* );
-
+
/**
* The standard c'tor
*/
ORecordListIterator();
~ORecordListIterator();
-
+
ORecordListIterator( const ORecordListIterator& );
ORecordListIterator &operator=(const ORecordListIterator& );
-
+
/**
- * a * operator ;)
+ * a * operator ;)
* use it like this T = (*it);
*/
T &operator*();
ORecordListIterator &operator++();
ORecordListIterator &operator--();
@@ -56,31 +58,31 @@ private:
class IteratorPrivate;
IteratorPrivate *d;
};
/**
* The recordlist used as a return type
* from OPimAccessTemplate
- */
+ */
template <class T = OPimRecord >
class ORecordList {
public:
typedef OTemplateBase<T> Base;
typedef ORecordListIterator<T> Iterator;
-
- /**
+
+ /**
* c'tor
*/
ORecordList( const QArray<int>& ids,
const Base* );
~ORecordList();
-
+
/**
* the first iterator
*/
Iterator begin();
-
+
/**
* the end
*/
Iterator end();
/*
ConstIterator begin()const;
@@ -102,12 +104,13 @@ template <class T>
ORecordListIterator<T>::~ORecordListIterator() {
/* nothing to delete */
}
template <class T>
ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) {
+ qWarning("ORecordListIterator");
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;
}
@@ -122,23 +125,24 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
return *this;
}
template <class T>
T &ORecordListIterator<T>::operator*() {
+ qWarning("operator* %d %d", m_current, m_uids[m_current] );
if (!m_end )
m_record = m_temp->find( m_uids[m_current] );
else
m_record = T();
return m_record;
}
template <class T>
ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
- if (m_current < m_uids.count() ) {
+ if (m_current < (int)m_uids.count() ) {
m_end = false;
++m_current;
}else
m_end = true;
return *this;
@@ -186,16 +190,19 @@ ORecordList<T>::ORecordList( const QArray<int>& ids,
template <class T>
ORecordList<T>::~ORecordList() {
/* nothing to do here */
}
template <class T>
ORecordList<T>::Iterator ORecordList<T>::begin() {
+ qWarning("ORecordList::begin");
Iterator it( m_ids, m_acc );
return it;
}
template <class T>
ORecordList<T>::Iterator ORecordList<T>::end() {
Iterator it( m_ids, m_acc );
it.m_end = true;
it.m_current = m_ids.count();
+
+ return it;
}
#endif