author | zecke <zecke> | 2002-09-24 14:58:51 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-09-24 14:58:51 (UTC) |
commit | 7b065f0388604e0485fa64a14abdf939dceab954 (patch) (unidiff) | |
tree | d98925bb12547a078467421d6823ac875f09f025 | |
parent | 70328f952e475eb7eb0bc961420b875eefd05211 (diff) | |
download | opie-7b065f0388604e0485fa64a14abdf939dceab954.zip opie-7b065f0388604e0485fa64a14abdf939dceab954.tar.gz opie-7b065f0388604e0485fa64a14abdf939dceab954.tar.bz2 |
Add some hooks to ORecordList and Iterator
current() for Iterator
setCurrent() for Iterator
count() for both
-rw-r--r-- | libopie/pim/orecordlist.h | 53 | ||||
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 53 |
2 files changed, 98 insertions, 8 deletions
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h index 1795938..c63d813 100644 --- a/libopie/pim/orecordlist.h +++ b/libopie/pim/orecordlist.h | |||
@@ -41,20 +41,35 @@ public: | |||
41 | * use it like this T = (*it); | 41 | * use it like this T = (*it); |
42 | */ | 42 | */ |
43 | T operator*(); | 43 | T operator*(); |
44 | ORecordListIterator &operator++(); | 44 | ORecordListIterator &operator++(); |
45 | ORecordListIterator &operator--(); | 45 | ORecordListIterator &operator--(); |
46 | 46 | ||
47 | bool operator==( const ORecordListIterator& it ); | 47 | bool operator==( const ORecordListIterator& it ); |
48 | bool operator!=( const ORecordListIterator& it ); | 48 | bool operator!=( const ORecordListIterator& it ); |
49 | |||
50 | /** | ||
51 | * the current item | ||
52 | */ | ||
53 | uint current()const; | ||
54 | |||
55 | /** | ||
56 | * the number of items | ||
57 | */ | ||
58 | uint count()const; | ||
59 | |||
60 | /** | ||
61 | * sets the current item | ||
62 | */ | ||
63 | void setCurrent( uint cur ); | ||
49 | 64 | ||
50 | private: | 65 | private: |
51 | QArray<int> m_uids; | 66 | QArray<int> m_uids; |
52 | int m_current; | 67 | uint m_current; |
53 | const Base* m_temp; | 68 | const Base* m_temp; |
54 | bool m_end : 1; | 69 | bool m_end : 1; |
55 | T m_record; | 70 | T m_record; |
56 | 71 | ||
57 | /* d pointer for future versions */ | 72 | /* d pointer for future versions */ |
58 | class IteratorPrivate; | 73 | class IteratorPrivate; |
59 | IteratorPrivate *d; | 74 | IteratorPrivate *d; |
60 | }; | 75 | }; |
@@ -81,16 +96,23 @@ public: | |||
81 | * the first iterator | 96 | * the first iterator |
82 | */ | 97 | */ |
83 | Iterator begin(); | 98 | Iterator begin(); |
84 | 99 | ||
85 | /** | 100 | /** |
86 | * the end | 101 | * the end |
87 | */ | 102 | */ |
88 | Iterator end(); | 103 | Iterator end(); |
104 | |||
105 | /** | ||
106 | * the number of items in the list | ||
107 | */ | ||
108 | uint count()const; | ||
109 | |||
110 | // FIXME implemenent remove | ||
89 | /* | 111 | /* |
90 | ConstIterator begin()const; | 112 | ConstIterator begin()const; |
91 | ConstIterator end()const; | 113 | ConstIterator end()const; |
92 | */ | 114 | */ |
93 | private: | 115 | private: |
94 | QArray<int> m_ids; | 116 | QArray<int> m_ids; |
95 | const Base* m_acc; | 117 | const Base* m_acc; |
96 | }; | 118 | }; |
@@ -128,26 +150,31 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter | |||
128 | 150 | ||
129 | return *this; | 151 | return *this; |
130 | } | 152 | } |
131 | 153 | ||
132 | template <class T> | 154 | template <class T> |
133 | T ORecordListIterator<T>::operator*() { | 155 | T ORecordListIterator<T>::operator*() { |
134 | // qWarning("operator* %d %d", m_current, m_uids[m_current] ); | 156 | // qWarning("operator* %d %d", m_current, m_uids[m_current] ); |
135 | if (!m_end ) | 157 | if (!m_end ) |
136 | m_record = m_temp->find( m_uids[m_current] ); | 158 | /* FIXME |
159 | * until the cache is in place | ||
160 | * we do the uid match uid check | ||
161 | */ | ||
162 | if(m_record.uid() != m_uids[m_current] ) | ||
163 | m_record = m_temp->find( m_uids[m_current] ); | ||
137 | else | 164 | else |
138 | m_record = T(); | 165 | m_record = T(); |
139 | 166 | ||
140 | return m_record; | 167 | return m_record; |
141 | } | 168 | } |
142 | 169 | ||
143 | template <class T> | 170 | template <class T> |
144 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { | 171 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { |
145 | if (m_current < (int)m_uids.count() ) { | 172 | if (m_current < m_uids.count() ) { |
146 | m_end = false; | 173 | m_end = false; |
147 | ++m_current; | 174 | ++m_current; |
148 | }else | 175 | }else |
149 | m_end = true; | 176 | m_end = true; |
150 | 177 | ||
151 | return *this; | 178 | return *this; |
152 | } | 179 | } |
153 | template <class T> | 180 | template <class T> |
@@ -178,17 +205,31 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { | |||
178 | return !(*this == it ); | 205 | return !(*this == it ); |
179 | } | 206 | } |
180 | template <class T> | 207 | template <class T> |
181 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | 208 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, |
182 | const Base* t ) | 209 | const Base* t ) |
183 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) | 210 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) |
184 | { | 211 | { |
185 | } | 212 | } |
186 | 213 | template <class T> | |
214 | uint ORecordListIterator<T>::current()const { | ||
215 | return m_current; | ||
216 | } | ||
217 | template <class T> | ||
218 | void ORecordListIterator<T>::setCurrent( uint cur ) { | ||
219 | if( cur < m_uids.count() ) { | ||
220 | m_end = false; | ||
221 | m_current= cur; | ||
222 | } | ||
223 | } | ||
224 | template <class T> | ||
225 | uint ORecordListIterator<T>::count()const { | ||
226 | return m_uids.count(); | ||
227 | } | ||
187 | template <class T> | 228 | template <class T> |
188 | ORecordList<T>::ORecordList( const QArray<int>& ids, | 229 | ORecordList<T>::ORecordList( const QArray<int>& ids, |
189 | const Base* acc ) | 230 | const Base* acc ) |
190 | : m_ids( ids ), m_acc( acc ) | 231 | : m_ids( ids ), m_acc( acc ) |
191 | { | 232 | { |
192 | } | 233 | } |
193 | template <class T> | 234 | template <class T> |
194 | ORecordList<T>::~ORecordList() { | 235 | ORecordList<T>::~ORecordList() { |
@@ -202,9 +243,13 @@ ORecordList<T>::Iterator ORecordList<T>::begin() { | |||
202 | template <class T> | 243 | template <class T> |
203 | ORecordList<T>::Iterator ORecordList<T>::end() { | 244 | ORecordList<T>::Iterator ORecordList<T>::end() { |
204 | Iterator it( m_ids, m_acc ); | 245 | Iterator it( m_ids, m_acc ); |
205 | it.m_end = true; | 246 | it.m_end = true; |
206 | it.m_current = m_ids.count(); | 247 | it.m_current = m_ids.count(); |
207 | 248 | ||
208 | return it; | 249 | return it; |
209 | } | 250 | } |
251 | template <class T> | ||
252 | uint ORecordList<T>::count()const { | ||
253 | return m_ids.count(); | ||
254 | } | ||
210 | #endif | 255 | #endif |
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index 1795938..c63d813 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h | |||
@@ -41,20 +41,35 @@ public: | |||
41 | * use it like this T = (*it); | 41 | * use it like this T = (*it); |
42 | */ | 42 | */ |
43 | T operator*(); | 43 | T operator*(); |
44 | ORecordListIterator &operator++(); | 44 | ORecordListIterator &operator++(); |
45 | ORecordListIterator &operator--(); | 45 | ORecordListIterator &operator--(); |
46 | 46 | ||
47 | bool operator==( const ORecordListIterator& it ); | 47 | bool operator==( const ORecordListIterator& it ); |
48 | bool operator!=( const ORecordListIterator& it ); | 48 | bool operator!=( const ORecordListIterator& it ); |
49 | |||
50 | /** | ||
51 | * the current item | ||
52 | */ | ||
53 | uint current()const; | ||
54 | |||
55 | /** | ||
56 | * the number of items | ||
57 | */ | ||
58 | uint count()const; | ||
59 | |||
60 | /** | ||
61 | * sets the current item | ||
62 | */ | ||
63 | void setCurrent( uint cur ); | ||
49 | 64 | ||
50 | private: | 65 | private: |
51 | QArray<int> m_uids; | 66 | QArray<int> m_uids; |
52 | int m_current; | 67 | uint m_current; |
53 | const Base* m_temp; | 68 | const Base* m_temp; |
54 | bool m_end : 1; | 69 | bool m_end : 1; |
55 | T m_record; | 70 | T m_record; |
56 | 71 | ||
57 | /* d pointer for future versions */ | 72 | /* d pointer for future versions */ |
58 | class IteratorPrivate; | 73 | class IteratorPrivate; |
59 | IteratorPrivate *d; | 74 | IteratorPrivate *d; |
60 | }; | 75 | }; |
@@ -81,16 +96,23 @@ public: | |||
81 | * the first iterator | 96 | * the first iterator |
82 | */ | 97 | */ |
83 | Iterator begin(); | 98 | Iterator begin(); |
84 | 99 | ||
85 | /** | 100 | /** |
86 | * the end | 101 | * the end |
87 | */ | 102 | */ |
88 | Iterator end(); | 103 | Iterator end(); |
104 | |||
105 | /** | ||
106 | * the number of items in the list | ||
107 | */ | ||
108 | uint count()const; | ||
109 | |||
110 | // FIXME implemenent remove | ||
89 | /* | 111 | /* |
90 | ConstIterator begin()const; | 112 | ConstIterator begin()const; |
91 | ConstIterator end()const; | 113 | ConstIterator end()const; |
92 | */ | 114 | */ |
93 | private: | 115 | private: |
94 | QArray<int> m_ids; | 116 | QArray<int> m_ids; |
95 | const Base* m_acc; | 117 | const Base* m_acc; |
96 | }; | 118 | }; |
@@ -128,26 +150,31 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter | |||
128 | 150 | ||
129 | return *this; | 151 | return *this; |
130 | } | 152 | } |
131 | 153 | ||
132 | template <class T> | 154 | template <class T> |
133 | T ORecordListIterator<T>::operator*() { | 155 | T ORecordListIterator<T>::operator*() { |
134 | // qWarning("operator* %d %d", m_current, m_uids[m_current] ); | 156 | // qWarning("operator* %d %d", m_current, m_uids[m_current] ); |
135 | if (!m_end ) | 157 | if (!m_end ) |
136 | m_record = m_temp->find( m_uids[m_current] ); | 158 | /* FIXME |
159 | * until the cache is in place | ||
160 | * we do the uid match uid check | ||
161 | */ | ||
162 | if(m_record.uid() != m_uids[m_current] ) | ||
163 | m_record = m_temp->find( m_uids[m_current] ); | ||
137 | else | 164 | else |
138 | m_record = T(); | 165 | m_record = T(); |
139 | 166 | ||
140 | return m_record; | 167 | return m_record; |
141 | } | 168 | } |
142 | 169 | ||
143 | template <class T> | 170 | template <class T> |
144 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { | 171 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { |
145 | if (m_current < (int)m_uids.count() ) { | 172 | if (m_current < m_uids.count() ) { |
146 | m_end = false; | 173 | m_end = false; |
147 | ++m_current; | 174 | ++m_current; |
148 | }else | 175 | }else |
149 | m_end = true; | 176 | m_end = true; |
150 | 177 | ||
151 | return *this; | 178 | return *this; |
152 | } | 179 | } |
153 | template <class T> | 180 | template <class T> |
@@ -178,17 +205,31 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { | |||
178 | return !(*this == it ); | 205 | return !(*this == it ); |
179 | } | 206 | } |
180 | template <class T> | 207 | template <class T> |
181 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | 208 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, |
182 | const Base* t ) | 209 | const Base* t ) |
183 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) | 210 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) |
184 | { | 211 | { |
185 | } | 212 | } |
186 | 213 | template <class T> | |
214 | uint ORecordListIterator<T>::current()const { | ||
215 | return m_current; | ||
216 | } | ||
217 | template <class T> | ||
218 | void ORecordListIterator<T>::setCurrent( uint cur ) { | ||
219 | if( cur < m_uids.count() ) { | ||
220 | m_end = false; | ||
221 | m_current= cur; | ||
222 | } | ||
223 | } | ||
224 | template <class T> | ||
225 | uint ORecordListIterator<T>::count()const { | ||
226 | return m_uids.count(); | ||
227 | } | ||
187 | template <class T> | 228 | template <class T> |
188 | ORecordList<T>::ORecordList( const QArray<int>& ids, | 229 | ORecordList<T>::ORecordList( const QArray<int>& ids, |
189 | const Base* acc ) | 230 | const Base* acc ) |
190 | : m_ids( ids ), m_acc( acc ) | 231 | : m_ids( ids ), m_acc( acc ) |
191 | { | 232 | { |
192 | } | 233 | } |
193 | template <class T> | 234 | template <class T> |
194 | ORecordList<T>::~ORecordList() { | 235 | ORecordList<T>::~ORecordList() { |
@@ -202,9 +243,13 @@ ORecordList<T>::Iterator ORecordList<T>::begin() { | |||
202 | template <class T> | 243 | template <class T> |
203 | ORecordList<T>::Iterator ORecordList<T>::end() { | 244 | ORecordList<T>::Iterator ORecordList<T>::end() { |
204 | Iterator it( m_ids, m_acc ); | 245 | Iterator it( m_ids, m_acc ); |
205 | it.m_end = true; | 246 | it.m_end = true; |
206 | it.m_current = m_ids.count(); | 247 | it.m_current = m_ids.count(); |
207 | 248 | ||
208 | return it; | 249 | return it; |
209 | } | 250 | } |
251 | template <class T> | ||
252 | uint ORecordList<T>::count()const { | ||
253 | return m_ids.count(); | ||
254 | } | ||
210 | #endif | 255 | #endif |