1Filem : module { 2 PATH : con "/dis/acme/file.dis"; 3 4 init : fn(mods : ref Dat->Mods); 5 6 File : adt { 7 buf : ref Bufferm->Buffer; # the data 8 delta : ref Bufferm->Buffer; # transcript of changes 9 epsilon : ref Bufferm->Buffer; # inversion of delta for redo 10 elogbuf: ref Bufferm->Buffer; # log of pending editor changes 11 elog: Editlog->Elog; # current pending change 12 name : string; # name of associated file 13 qidpath : big; # of file when read 14 mtime : int; # of file when read 15 dev : int; # of file when read 16 unread : int; # file has not been read from disk 17 editclean: int; # mark clean after edit command 18 seq : int; # if seq==0, File acts like Buffer 19 mod : int; 20 curtext : cyclic ref Textm->Text; # most recently used associated text 21 text : cyclic array of ref Textm->Text; # list of associated texts 22 ntext : int; 23 dumpid : int; # used in dumping zeroxed windows 24 25 addtext : fn(f : self ref File, t : ref Textm->Text) : ref File; 26 deltext : fn(f : self ref File, t : ref Textm->Text); 27 insert : fn(f : self ref File, n : int, s : string, m : int); 28 delete : fn(f : self ref File, m : int, n : int); 29 loadx : fn(f : self ref File, p : int, fd : ref Sys->FD) : int; 30 setname : fn(f : self ref File, s : string, n : int); 31 undo : fn(f : self ref File, p : int, q : int, r : int) : (int, int); 32 mark : fn(f : self ref File); 33 reset : fn(f : self ref File); 34 close : fn(f : self ref File); 35 undelete : fn(f : self ref File, b : ref Bufferm->Buffer, m : int, n : int); 36 uninsert : fn(f : self ref File, b : ref Bufferm->Buffer, m : int, n : int); 37 unsetname : fn(f : self ref File, b : ref Bufferm->Buffer); 38 redoseq : fn(f: self ref File): int; 39 }; 40}; 41