<> <> <> DIRECTORY TiogaNode, NameSymbolTable, Rope; NodeProps: CEDAR DEFINITIONS = BEGIN <<>> <<***** general access routines>> ROPE: TYPE = Rope.ROPE; true, false: REF BOOL; PutProp: PROCEDURE [n: TiogaNode.Ref, name: ATOM, value: REF]; <> GetProp: PROCEDURE [n: TiogaNode.Ref, name: ATOM] RETURNS [REF]; RemProps: PROCEDURE [n: TiogaNode.Ref]; -- remove all properties RemProp: PROCEDURE [n: TiogaNode.Ref, name: ATOM]; MapProps: PROC [ n: TiogaNode.Ref, action: MapPropsAction, formatFlag, commentFlag: BOOLEAN _ TRUE] RETURNS [BOOLEAN]; <> <> <> <> MapPropsAction: TYPE = PROC [name: ATOM, value: REF] RETURNS [BOOLEAN]; <<***** read, write, copy props>> Register: PROC [name: ATOM, reader: ReadSpecsProc, writer: WriteSpecsProc, copier: CopyInfoProc]; <> <> ReadSpecsProc: TYPE = PROC [ name: ATOM, specsRope: ROPE, start, len: INT, n: TiogaNode.Ref] RETURNS [value: REF]; <> WriteSpecsProc: TYPE = PROC [ name: ATOM, value: REF, n: TiogaNode.Ref] RETURNS [specs: ROPE]; CopyInfoProc: TYPE = PROC [ name: ATOM, value: REF, from, to: TiogaNode.Ref] RETURNS [new: REF]; NullRead: ReadSpecsProc; -- returns NIL always NullWrite: WriteSpecsProc; -- returns NIL always NullCopy: CopyInfoProc; -- returns NIL always DoSpecs: ReadSpecsProc; <> <> <> HasWriter: PROC [name: ATOM] RETURNS [BOOL]; --returns true if there is a non-null writer GetSpecs: WriteSpecsProc; <> <> <> CopyInfo: CopyInfoProc; <> <> <> <<***** special procs for internal use by Tioga>> Object: TYPE = NameSymbolTable.Object; GetPrefixObject: PROC [n: TiogaNode.Ref] RETURNS [ob: Object]; PrefixName: PROC RETURNS [ROPE]; <> PrefixAtom: PROC RETURNS [ATOM]; <> GetPostfixObject: PROCEDURE [n: TiogaNode.Ref] RETURNS [ob: Object]; PostfixName: PROC RETURNS [ROPE]; <> PostfixAtom: PROC RETURNS [ATOM]; <> END.