<<>> <> <> <> <> DIRECTORY Atom, G3dBasic, G3dMatrix, IO, Rope, TiogaAccess; G3dIO: CEDAR DEFINITIONS ~ BEGIN <> <> PropList: TYPE ~ Atom.PropList; IntegerSequence: TYPE ~ G3dBasic.IntegerSequence; NatSequence: TYPE ~ G3dBasic.NatSequence; Pair: TYPE ~ G3dBasic.Pair; PairSequence: TYPE ~ G3dBasic.PairSequence; Quad: TYPE ~ G3dBasic.Quad; RealSequence: TYPE ~ G3dBasic.RealSequence; SurfaceSequence: TYPE ~ G3dBasic.SurfaceSequence; Triple: TYPE ~ G3dBasic.Triple; TripleSequence: TYPE ~ G3dBasic.TripleSequence; Matrix: TYPE ~ G3dMatrix.Matrix; STREAM: TYPE ~ IO.STREAM; ROPE: TYPE ~ Rope.ROPE; Writer: TYPE ~ TiogaAccess.Writer; <> FieldType: TYPE ~ {integer, real, pair, triple, nats, none}; FieldDescription: TYPE ~ RECORD [id: ROPE, type: FieldType]; Field: TYPE ~ REF FieldRep; FieldRep: TYPE ~ RECORD [ id: ROPE, -- name of the field type: FieldType, -- type of the field sequence: REF ANY -- ref to field sequence ]; FieldSequence: TYPE ~ REF FieldSequenceRep; FieldSequenceRep: TYPE ~ RECORD [ length: NAT, element: SEQUENCE maxLength: INTEGER OF Field ]; Line: TYPE ~ REF LineRep; LineRep: TYPE ~ RECORD [ type: {key, blank, data, comment}, -- type of line rope: ROPE ¬ NIL, -- text of this line index: INTEGER ¬ 0, -- current index into the rope length: INTEGER ¬ 0, -- length of the rope stream: STREAM ¬ NIL -- the associated io stream ]; <> <> <> <> <> <<>> <> <> <<>> <> <> <> <<>> <> <<>> <> <> <> <> <> ErrorType: TYPE ~ {notFound, format, convert}; Error: ERROR [reason, lineText: ROPE, lineNumber: NAT]; ErrorReport: PROC [errorType: ErrorType, line: Line ¬ NIL, keyWord: ROPE ¬ NIL]; <> <> <> <> <> ObtainLine: PROC RETURNS [Line]; <> ReleaseLine: PROC [line: Line]; <> <<>> LineNumber: PROC [line: Line] RETURNS [INTEGER]; <> <<>> NextKeyWord: PROC [ stream: STREAM, circularSearch: BOOL ¬ FALSE, maxNLinesToTest: CARDINAL ¬ LAST[CARDINAL]] RETURNS [key: ROPE]; <> <> <<>> FindKeyWord: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, maxNLinesToTest: CARDINAL ¬ LAST[CARDINAL], line: Line ¬ NIL] RETURNS [Line]; <> <> <> <> <<>> InitializeFields: PROC [keyLine: Line] RETURNS [FieldSequence]; <> <<>> NumberOfLinesToConvert: PROC [stream: STREAM] RETURNS [INTEGER]; <> <> <<>> NWordsInRope: PROC [line: ROPE] RETURNS [INTEGER]; <> <> GetStream: PROC [fileName: ROPE] RETURNS [STREAM]; <> <<>> GetLine: PROC [stream: STREAM, line: Line ¬ NIL] RETURNS [Line]; <> <<>> GetDataLine: PROC [stream: STREAM, line: Line ¬ NIL] RETURNS [Line]; <> <<>> GetWord: PROC [line: Line] RETURNS [ROPE]; <> <<>> GetInteger: PROC [line: Line] RETURNS [INTEGER]; <> <<>> GetReal: PROC [line: Line] RETURNS [REAL]; <> <<>> GetPair: PROC [line: Line] RETURNS [Pair]; <> <<>> GetTriple: PROC [line: Line] RETURNS [Triple]; <> <<>> GetNats: PROC [line: Line] RETURNS [nats: NatSequence]; <> <> <> <> <> <<>> ReadRope: PROC [stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE] RETURNS [ROPE]; <> ReadInteger: PROC [stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE] RETURNS [INTEGER]; <> ReadReal: PROC [stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE] RETURNS [REAL]; <> <<>> ReadPair: PROC [stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE] RETURNS [Pair]; <> ReadTriple: PROC [stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE] RETURNS [Triple]; <> <<>> <> <> <> <> <> <> ReadIntegerSequence: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [IntegerSequence]; ReadRealSequence: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [RealSequence]; <> <> ReadPairSequence: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [PairSequence]; ReadTripleSequence: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [TripleSequence]; ReadSurfaceSequence: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [SurfaceSequence]; ReadFields: PROC [ stream: STREAM, keyWord: ROPE, circularSearch: BOOL ¬ FALSE, nElements: INT ¬ 0] RETURNS [FieldSequence]; <> <<>> <> <<>> <> <<>> <> <> <<>> <> <> <> <> <<>> <> <