home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / OTexts.def < prev    next >
Text File  |  1994-05-25  |  5KB  |  174 lines

  1. |##########|
  2. |#MAGIC   #|CKOLFLIB
  3. |#PROJECT #|""
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx---x--x---xxx-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|xx---xxxxx-xx---
  9. |##########|
  10. DEFINITION MODULE OTexts;
  11.  
  12. FROM OStreams   IMPORT InStream,OutStream;
  13.                 IMPORT OLists;
  14. FROM Resources  IMPORT ContextPtr;
  15. FROM Exceptions IMPORT RangeViolation;
  16.  
  17. TYPE
  18.   Text      = POINTER TO TextObj;
  19.   Mark      = POINTER TO MarkObj;
  20.   Line      = POINTER TO LineObj;
  21.   Box       = RECORD
  22.                 left,top,bottom,right : INTEGER;
  23.               END;
  24.  
  25. DEFINITION MODULE MarkLists = OLists.BiLists(Mark);
  26. DEFINITION MODULE LineLists = OLists.BiLists(Line);
  27.  
  28. EXCEPTION
  29.   NotFound   : "String not found";
  30.   OutOfBound : "Mark out of bound";
  31.  
  32. TYPE
  33.   StrPtr    = CLASSPTR TO STRING;
  34.  
  35.   LineObj   = OBJECT OF LineLists.NodeObj;
  36.                 data : POINTER TO STRING;
  37.                 CONSTRUCTOR Create(text : Text);
  38.                 DESTRUCTOR Delete;
  39.                 METHOD Destruct;
  40.               END;
  41.  
  42.   MarkObj   = OBJECT OF MarkLists.NodeObj;
  43.                 charNo,
  44.                 colNo,
  45.                 lineNo  : INTEGER;
  46.                 linePtr : Line;
  47.                 text    : Text;
  48.                 keep    : BOOLEAN;
  49.  
  50.                 CONSTRUCTOR Create(text     : Text;
  51.                                    line,col : INTEGER := 0;
  52.                                    keep     : BOOLEAN := FALSE);
  53.                 CONSTRUCTOR Clone(mark : Mark;keep : BOOLEAN := FALSE);
  54.                 DESTRUCTOR Delete;
  55.  
  56.                 METHOD GetChar():CHAR;
  57.  
  58.                 METHOD NextLine;
  59.                 METHOD PrevLine;
  60.                 METHOD Bottom;
  61.                 METHOD Top;
  62.  
  63.                 METHOD LineStart;
  64.                 METHOD LineEnd;
  65.                 METHOD WordLeft;
  66.                 METHOD WordRight;
  67.                 METHOD Right(n : INTEGER := 1);
  68.                 METHOD Left(n : INTEGER := 1);
  69.  
  70.                 METHOD Goto(line,col : INTEGER);
  71.                 METHOD GoMark(mark : Mark);
  72.  
  73.                 METHOD NewCoords;
  74.  
  75.                 METHOD Destruct;
  76.               END;
  77.  
  78.   TextObj   = OBJECT OF LineLists.List AS lines,
  79.                         MarkLists.List AS marks;
  80.                 changed     : BOOLEAN;
  81.                 buffer      : STRING(512);
  82.                 buffline    : Line;
  83.                 buffchanged : BOOLEAN;
  84.                 numlines    : INTEGER;
  85.                 con         : ContextPtr;
  86.                 indend      : BOOLEAN;
  87.                 tabExpand   : BOOLEAN;
  88.                 wordWrap    : BOOLEAN;
  89.                 tabSize     : INTEGER;
  90.                 leftBorder,
  91.                 rightBorder : INTEGER;
  92.  
  93.                 freeze      : INTEGER;
  94.                 firstRef,
  95.                 lastRef     : Mark;
  96.  
  97.                 CONSTRUCTOR Create;
  98.                 DESTRUCTOR Delete;
  99.  
  100.                 METHOD Freeze;
  101.                 METHOD Warm;
  102.  
  103.                 METHOD Clear;
  104.  
  105.                 $$OwnHeap:=TRUE
  106.                 METHOD Get(at : Mark):STRING;
  107.                 METHOD Put(at : Mark;REF str : STRING);
  108.  
  109.                 METHOD PasteBlock(at : Mark;in : InStream):Mark;
  110.                 METHOD CopyBlock(from,to : Mark;out : OutStream);
  111.                 METHOD DeleteBlock(from,to : Mark);
  112.  
  113.                 METHOD ReformatParagraph(at : Mark);
  114.                 |METHOD ReformatBlock(from,to : Mark);
  115.  
  116.                 METHOD Insert(at : Mark;REF str : STRING);
  117.                 METHOD Replace(at : Mark;REF str : STRING;len : INTEGER);
  118.  
  119.                 METHOD InsertChar(at : Mark;c : CHAR);
  120.                 METHOD ReplaceChar(at : Mark;c : CHAR);
  121.  
  122.                 METHOD DeleteChars(at : Mark;len : INTEGER);
  123.  
  124.                 METHOD Split(at : Mark);
  125.                 METHOD Join(at : Mark);
  126.  
  127.                 METHOD Search(    cursor   : Mark;
  128.                               REF str      : STRING;
  129.                                   backward,
  130.                                   caps     : BOOLEAN := FALSE;
  131.                                   until    : Mark    := NIL);
  132.  
  133.                 METHOD RefreshViews;
  134.                 METHOD RefreshBox(REF box : Box);
  135.  
  136.                 METHOD GetLine(line : Line);
  137.                 METHOD Flush;
  138.                 METHOD Destruct;
  139.                 METHOD RefreshLines(from,to : Mark);
  140.  
  141.                 METHOD NewNumlines;
  142.  
  143.                 METHOD SetTab(expand : BOOLEAN;size : INTEGER);
  144.               END;
  145.  
  146.   View      = POINTER TO OBJECT OF Mark;
  147.                 height      : INTEGER;
  148.                 DEFERRED METHOD Write(    line : INTEGER;
  149.                                       REF str  : STRING);
  150.                 DEFERRED METHOD ScrollDown(from  : INTEGER;by : INTEGER := 1);
  151.                 DEFERRED METHOD ScrollUp(to  : INTEGER;by : INTEGER := 1);
  152.  
  153.                 METHOD NextLine;
  154.                 METHOD PrevLine;
  155.                 METHOD Bottom;
  156.                 METHOD Top;
  157.  
  158.                 METHOD LineStart;
  159.                 METHOD LineEnd;
  160.                 METHOD Right(n : INTEGER);
  161.                 METHOD Left(n : INTEGER);
  162.                 METHOD WordLeft;
  163.                 METHOD WordRight;
  164.  
  165.                 METHOD Goto(line,col : INTEGER);
  166.                 METHOD GoMark(mark : Mark);
  167.  
  168.                 METHOD RefreshBox(REF box : Box);
  169.                 METHOD Refresh(topDisp : INTEGER := 0;
  170.                                lines   : INTEGER := INTEGER'MAX);
  171.               END;
  172.  
  173. END OTexts.
  174.