<> <> <> <<>> <> <<>> DIRECTORY Atom USING [PropList], FS USING [ErrorGroup, OpenFile], Rope USING [ROPE], ViewerClasses USING [Viewer]; TiogaAccess: CEDAR DEFINITIONS ~ BEGIN <> Looks: TYPE ~ PACKED ARRAY CHAR['a..'a+32) OF BOOLEAN; CharWithLooks: TYPE ~ RECORD [char: CHAR, endOfNode: BOOLEAN, looks: Looks]; <> <<>> <> NodeInfo: TYPE ~ RECORD [ format: Rope.ROPE, comment: BOOLEAN, level: INT, props: Atom.PropList ]; <> GetExternalProp: PROC [key: REF, value: REF] RETURNS [Rope.ROPE]; GetInternalProp: PROC [key: REF, value: Rope.ROPE] RETURNS [REF]; <> Buffer: TYPE ~ REF BufferRep; BufferRep: TYPE ~ RECORD [length: NAT, next: Buffer, seq: SEQUENCE maxLength: NAT OF CharWithLooks]; <> ObtainBuffer: PROC [pieceSize: NAT _ 180] RETURNS [Buffer]; ReleaseBuffer: PROC [buffer: Buffer]; BufferSize: PROC [buffer: Buffer] RETURNS [INT]; SetBufferSize: PROC [buffer: Buffer, newSize: INT]; Append: PROC [buffer: Buffer, value: CharWithLooks]; <> Store: PROC [buffer: Buffer, index: INT, value: CharWithLooks]; <= BufferSize[buffer]>> Fetch: PROC [buffer: Buffer, index: INT] RETURNS [CharWithLooks]; <> Error: ERROR [group: FS.ErrorGroup, expl: Rope.ROPE]; <> <> Reader: TYPE ~ REF ReaderRep; ReaderRep: TYPE; FromNothing: PROC RETURNS [Reader]; <> FromFile: PROC [fileName: Rope.ROPE] RETURNS [Reader]; FromOpenFile: PROC [openFile: FS.OpenFile] RETURNS [Reader]; <> FromSelection: PROC RETURNS [Reader]; <> FromViewer: PROC [viewer: ViewerClasses.Viewer] RETURNS [Reader]; <> <> EndOf: PROC [reader: Reader] RETURNS [BOOLEAN]; GetNodeInfo: PROC [reader: Reader] RETURNS [NodeInfo]; Get: PROC [reader: Reader] RETURNS [CharWithLooks]; <> Writer: TYPE ~ REF WriterRep; WriterRep: TYPE; Create: PROC RETURNS [Writer]; Put: PROC [writer: Writer, charWithLooks: CharWithLooks]; PutNodeInfo: PROC [writer: Writer, nodeInfo: NodeInfo]; <> <> PutBuffer: PROC [writer: Writer, buffer: Buffer, start: INT _ 0, maxLength: INT _ INT.LAST]; WriteFile: PROC [writer: Writer, fileName: Rope.ROPE]; <> WriteOpenFile: PROC [writer: Writer, openFile: FS.OpenFile]; <> WriteSelection: PROC [writer: Writer]; <> WriteViewer: PROC [writer: Writer, viewer: ViewerClasses.Viewer]; <> <> WriteReader: PROC [writer: Writer] RETURNS [Reader]; <> Reset: PROC [writer: Writer]; <> <<>> <> DoneWith: PROC [reader: Reader]; <> GetBuffer: PROC [reader: Reader, buffer: Buffer, start: INT _ 0, maxLength: INT _ INT.LAST] RETURNS [endOfNode: BOOLEAN]; <> <> <> <<>> Peek: PROC [reader: Reader] RETURNS [CharWithLooks]; PeekRope: PROC [reader: Reader] RETURNS [Rope.ROPE]; <> SkipToNextNode: PROC [reader: Reader]; <> <<>> CopyNode: PROC [writer: Writer, reader: Reader, maxLength: INT _ INT.LAST, copyInfo: BOOLEAN _ TRUE] RETURNS [endOfNode: BOOLEAN]; <> <> <> <<>> GetNodeRefs: PROC [reader: Reader] RETURNS [root, current: REF, offset: INT]; <> <> <> <<>> GetIndex: PROC [reader: Reader] RETURNS [index: INT]; <> GetLength: PROC [reader: Reader] RETURNS [INT]; <> GetPosition: PROC [reader: Reader] RETURNS [position: INT]; <> <<>> SetIndex: PROC [reader: Reader, index: INT]; <> SetPosition: PROC [reader: Reader, position: INT]; <<>> PutBack: PROC [reader: Reader, charWithLooks: CharWithLooks]; PutBackBuffer: PROC [reader: Reader, buffer: Buffer, start: INT _ 0, maxLength: INT _ INT.LAST]; <> END.