Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9901 → Rev 9902

/programs/develop/cedit/SRC/ChangeLog.ob07
1,5 → 1,5
(*
Copyright 2021, 2022 Anton Krotov
Copyright 2021-2023 Anton Krotov
 
This file is part of CEdit.
 
23,7 → 23,8
 
TYPE
tIntItem = POINTER TO RECORD (List.tItem)
adr, val: INTEGER
cnt: INTEGER;
adr, val: ARRAY 8 OF INTEGER
END;
 
tBoolItem = POINTER TO RECORD (List.tItem)
33,11 → 34,13
END;
 
tUntypedPtr = POINTER TO RECORD (List.tItem)
p: INTEGER
cnt: INTEGER;
p: ARRAY 64 OF INTEGER
END;
 
tTypedPtr = POINTER TO RECORD (List.tItem)
p: List.tItem
cnt: INTEGER;
p: ARRAY 64 OF List.tItem
END;
 
tGuard* = POINTER TO RECORD (List.tItem)
45,7 → 48,7
END;
 
tLog* = POINTER TO RECORD
Log*, Pointers*: List.tList;
Log*, TPointers, UPointers: List.tList;
guard, first: tGuard;
isLast: BOOLEAN
END;
103,9 → 106,13
 
 
PROCEDURE redo* (item: List.tItem);
VAR
i: INTEGER;
BEGIN
IF item IS tIntItem THEN
SYSTEM.PUT(item(tIntItem).adr, item(tIntItem).val)
FOR i := 0 TO item(tIntItem).cnt - 1 DO
SYSTEM.PUT(item(tIntItem).adr[i], item(tIntItem).val[i])
END
ELSIF item IS tBoolItem THEN
SYSTEM.PUT(item(tBoolItem).adr, item(tBoolItem).val)
END
163,14 → 170,25
PROCEDURE changeWord (adrV, adrX: INTEGER);
VAR
item: tIntItem;
cur: List.tItem;
BEGIN
NEW(item);
item.adr := adrV;
SYSTEM.GET(adrX, item.val);
IF ~CL.isLast THEN
clear(CL.guard)
END;
cur := CL.Log.last;
WHILE (cur # NIL) & ~(cur IS tGuard) & ~(cur IS tIntItem) DO
cur := cur.prev
END;
IF (cur IS tIntItem) & (cur(tIntItem).cnt < LEN(cur(tIntItem).adr)) THEN
item := cur(tIntItem)
ELSE
NEW(item);
item.cnt := 0;
List.append(CL.Log, item)
END;
item.adr[item.cnt] := adrV;
SYSTEM.GET(adrX, item.val[item.cnt]);
INC(item.cnt)
END changeWord;
 
 
266,9 → 284,14
VAR
item: tTypedPtr;
BEGIN
item := CL.TPointers.last(tTypedPtr);
IF (item = NIL) OR (item.cnt = LEN(item.p)) THEN
NEW(item);
item.p := p;
List.append(CL.Pointers, item)
item.cnt := 0;
List.append(CL.TPointers, item)
END;
item.p[item.cnt] := p;
INC(item.cnt)
END typedPtr;
 
 
276,16 → 299,21
VAR
item: tUntypedPtr;
BEGIN
item := CL.UPointers.last(tUntypedPtr);
IF (item = NIL) OR (item.cnt = LEN(item.p)) THEN
NEW(item);
item.p := p;
List.append(CL.Pointers, item)
item.cnt := 0;
List.append(CL.UPointers, item)
END;
item.p[item.cnt] := p;
INC(item.cnt)
END untypedPtr;
 
 
PROCEDURE set* (_CL: tLog);
PROCEDURE setLog* (_CL: tLog);
BEGIN
CL := _CL
END set;
END setLog;
 
 
PROCEDURE create* (VAR maxLength: INTEGER): tLog;
297,7 → 325,8
newLog.first := NIL;
newLog.isLast := TRUE;
newLog.Log := List.create(NIL);
newLog.Pointers := List.create(NIL);
newLog.TPointers := List.create(NIL);
newLog.UPointers := List.create(NIL);
CL := newLog;
Lines.setMaxLength(maxLength)
RETURN newLog
307,7 → 336,7
PROCEDURE destroy* (VAR log: tLog);
VAR
item: List.tItem;
res: INTEGER;
res, i: INTEGER;
BEGIN
IF log # NIL THEN
item := List.pop(log.Log);
317,18 → 346,26
END;
DISPOSE(log.Log);
 
item := List.pop(log.Pointers);
item := List.pop(log.TPointers);
WHILE item # NIL DO
IF item IS tUntypedPtr THEN
res := API._DISPOSE(item(tUntypedPtr).p)
ELSIF item IS tTypedPtr THEN
DISPOSE(item(tTypedPtr).p)
FOR i := 0 TO item(tTypedPtr).cnt - 1 DO
DISPOSE(item(tTypedPtr).p[i])
END;
DISPOSE(item);
item := List.pop(log.Pointers)
item := List.pop(log.TPointers)
END;
DISPOSE(log.Pointers);
DISPOSE(log.TPointers);
 
item := List.pop(log.UPointers);
WHILE item # NIL DO
FOR i := 0 TO item(tUntypedPtr).cnt - 1 DO
res := API._DISPOSE(item(tUntypedPtr).p[i])
END;
DISPOSE(item);
item := List.pop(log.UPointers)
END;
DISPOSE(log.UPointers);
 
DISPOSE(log)
END
END destroy;