file.m 1.7 KB

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