Rev 8728 | Rev 9050 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8728 | Rev 9010 | ||
---|---|---|---|
Line 162... | Line 162... | ||
162 | _append(list, newItem) |
162 | _append(list, newItem) |
163 | END |
163 | END |
164 | END _insert; |
164 | END _insert; |
Line -... | Line 165... | ||
- | 165 | ||
- | 166 | ||
- | 167 | PROCEDURE _exchange* (list: tList; a, b: tItem); |
|
- | 168 | VAR |
|
- | 169 | a0, b0: tItem; |
|
- | 170 | BEGIN |
|
- | 171 | IF (a # NIL) & (b # NIL) THEN |
|
- | 172 | ASSERT((a.next = b) & (b.prev = a)); |
|
- | 173 | a0 := a.prev; |
|
- | 174 | b0 := b.next; |
|
- | 175 | movPtr(b.prev, a0); |
|
- | 176 | movPtr(a.next, b0); |
|
- | 177 | movPtr(b.next, a); |
|
- | 178 | movPtr(a.prev, b); |
|
- | 179 | IF (a0 # NIL) & (b0 # NIL) THEN |
|
- | 180 | movPtr(a0.next, b); |
|
- | 181 | movPtr(b0.prev, a); |
|
- | 182 | ELSIF (a0 # NIL) & (b0 = NIL) THEN |
|
- | 183 | movPtr(a0.next, b); |
|
- | 184 | movPtr(list.last, a) |
|
- | 185 | ELSIF (a0 = NIL) & (b0 # NIL) THEN |
|
- | 186 | movPtr(b0.prev, a); |
|
- | 187 | movPtr(list.first, b) |
|
- | 188 | ELSIF (a0 = NIL) & (b0 = NIL) THEN |
|
- | 189 | movPtr(list.first, b); |
|
- | 190 | movPtr(list.last, a) |
|
- | 191 | END |
|
- | 192 | END |
|
- | 193 | END _exchange; |
|
165 | 194 | ||
166 | 195 | ||
167 | PROCEDURE append* (list: tList; item: tItem); |
196 | PROCEDURE append* (list: tList; item: tItem); |
168 | BEGIN |
197 | BEGIN |
169 | item.prev := list.last; |
198 | item.prev := list.last; |