Subversion Repositories Kolibri OS

Rev

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