Diffstat (limited to 'noncore/apps/opie-reader/my_list.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-reader/my_list.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/noncore/apps/opie-reader/my_list.h b/noncore/apps/opie-reader/my_list.h index b3f0cc0..f180d3d 100644 --- a/noncore/apps/opie-reader/my_list.h +++ b/noncore/apps/opie-reader/my_list.h | |||
@@ -19,24 +19,26 @@ class CList | |||
19 | ~CList() | 19 | ~CList() |
20 | { | 20 | { |
21 | if (front != NULL) | 21 | if (front != NULL) |
22 | { | 22 | { |
23 | while (front != NULL) | 23 | while (front != NULL) |
24 | { | 24 | { |
25 | node *p = front; | 25 | node *p = front; |
26 | front = p->next; | 26 | front = p->next; |
27 | delete p; | 27 | delete p; |
28 | } | 28 | } |
29 | } | 29 | } |
30 | } | 30 | } |
31 | T& first() { return front->data; } | ||
32 | T& last() { return back->data; } | ||
31 | T* operator[](int n) | 33 | T* operator[](int n) |
32 | { | 34 | { |
33 | node* current = front; | 35 | node* current = front; |
34 | while (n-- > 0) | 36 | while (n-- > 0) |
35 | { | 37 | { |
36 | if ((current = current->next) == NULL) | 38 | if ((current = current->next) == NULL) |
37 | return NULL; | 39 | return NULL; |
38 | } | 40 | } |
39 | return &(current->data); | 41 | return &(current->data); |
40 | } | 42 | } |
41 | void push_front(const T& t) | 43 | void push_front(const T& t) |
42 | { | 44 | { |
@@ -52,24 +54,25 @@ class CList | |||
52 | { | 54 | { |
53 | node* n = new node(t); | 55 | node* n = new node(t); |
54 | if (front == NULL) | 56 | if (front == NULL) |
55 | { | 57 | { |
56 | front = back = n; | 58 | front = back = n; |
57 | } | 59 | } |
58 | else | 60 | else |
59 | { | 61 | { |
60 | back->next = n; | 62 | back->next = n; |
61 | back = n; | 63 | back = n; |
62 | } | 64 | } |
63 | } | 65 | } |
66 | bool isEmpty() { return (front == NULL); } | ||
64 | void erase(unsigned int n) | 67 | void erase(unsigned int n) |
65 | { | 68 | { |
66 | node* p = front; | 69 | node* p = front; |
67 | node* last = front; | 70 | node* last = front; |
68 | while (n-- > 0) | 71 | while (n-- > 0) |
69 | { | 72 | { |
70 | last = p; | 73 | last = p; |
71 | p = p->next; | 74 | p = p->next; |
72 | if (p == NULL) return; | 75 | if (p == NULL) return; |
73 | } | 76 | } |
74 | if (p == front) | 77 | if (p == front) |
75 | { | 78 | { |
@@ -146,27 +149,35 @@ class CList | |||
146 | { | 149 | { |
147 | current = current->next; | 150 | current = current->next; |
148 | return *this; | 151 | return *this; |
149 | } | 152 | } |
150 | T operator*() | 153 | T operator*() |
151 | { | 154 | { |
152 | return current->data; | 155 | return current->data; |
153 | } | 156 | } |
154 | T* operator->() | 157 | T* operator->() |
155 | { | 158 | { |
156 | return &(current->data); | 159 | return &(current->data); |
157 | } | 160 | } |
161 | T* pContent() | ||
162 | { | ||
163 | return &(current->data); | ||
164 | } | ||
158 | bool operator!=(iterator t) | 165 | bool operator!=(iterator t) |
159 | { | 166 | { |
160 | return (current != t.current); | 167 | return (current != t.current); |
161 | } | 168 | } |
169 | bool operator==(iterator t) | ||
170 | { | ||
171 | return (current == t.current); | ||
172 | } | ||
162 | }; | 173 | }; |
163 | iterator begin() | 174 | iterator begin() |
164 | { | 175 | { |
165 | return iterator(front); | 176 | return iterator(front); |
166 | } | 177 | } |
167 | iterator end() | 178 | iterator end() |
168 | { | 179 | { |
169 | return iterator(NULL); | 180 | return iterator(NULL); |
170 | } | 181 | } |
171 | }; | 182 | }; |
172 | #endif | 183 | #endif |