Rev 9050 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9050 | Rev 9560 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | Copyright 2021 Anton Krotov |
2 | Copyright 2021, 2022 Anton Krotov |
Line 3... | Line 3... | ||
3 | 3 | ||
Line 4... | Line 4... | ||
4 | This file is part of CEdit. |
4 | This file is part of CEdit. |
5 | 5 | ||
Line 149... | Line 149... | ||
149 | 149 | ||
150 | PROCEDURE _insert* (list: tList; item, newItem: tItem); |
150 | PROCEDURE _insert* (list: tList; item, newItem: tItem); |
151 | VAR |
151 | VAR |
152 | next: tItem; |
152 | next: tItem; |
- | 153 | BEGIN |
|
153 | BEGIN |
154 | IF item # NIL THEN |
154 | next := item.next; |
155 | next := item.next; |
155 | IF next # NIL THEN |
156 | IF next # NIL THEN |
156 | movPtr(next.prev, newItem); |
157 | movPtr(next.prev, newItem); |
157 | movPtr(newItem.next, next); |
158 | movPtr(newItem.next, next); |
158 | movPtr(item.next, newItem); |
159 | movPtr(item.next, newItem); |
159 | movPtr(newItem.prev, item); |
160 | movPtr(newItem.prev, item); |
160 | movInt(list.count, list.count + 1) |
161 | movInt(list.count, list.count + 1) |
161 | ELSE |
162 | ELSE |
162 | _append(list, newItem) |
163 | _append(list, newItem) |
163 | END |
- | |
164 | END _insert; |
- | |
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 THEN |
- | |
180 | IF b0 # NIL THEN |
- | |
181 | movPtr(a0.next, b); |
- | |
182 | movPtr(b0.prev, a); |
- | |
183 | ELSE |
- | |
184 | movPtr(a0.next, b); |
- | |
185 | movPtr(list.last, a) |
- | |
186 | END |
- | |
187 | ELSE |
- | |
188 | IF b0 # NIL THEN |
- | |
189 | movPtr(b0.prev, a); |
- | |
190 | movPtr(list.first, b) |
164 | END |
- | 165 | ELSE |
|
- | 166 | ASSERT(list.first # NIL); |
|
191 | ELSE |
167 | movPtr(newItem.prev, NIL); |
192 | movPtr(list.first, b); |
168 | movPtr(newItem.next, list.first); |
193 | movPtr(list.last, a) |
169 | movPtr(list.first.prev, newItem); |
194 | END |
170 | movPtr(list.first, newItem); |
195 | END |
171 | movInt(list.count, list.count + 1) |
196 | END |
172 | END |
Line 197... | Line 173... | ||
197 | END _exchange; |
173 | END _insert; |
198 | 174 | ||
199 | 175 |