<> <> <> DIRECTORY IO USING [ STREAM ], SiroccoCGDef USING [ BaseTypeKind ], SiroccoPrivate USING [ AbstractValue, CONTEXT, TypeGraphNode ], Rope USING [ ROPE ]; SiroccoPrivateTypes: CEDAR DEFINITIONS ~ { OPEN SiroccoCGDef, SiroccoPrivate; ROPE: TYPE ~ Rope.ROPE; <> ContextTreeNode: TYPE ~ REF; AVNDumpProc: TYPE ~ PROC [ s: IO.STREAM, value: AbstractValue, n: NAT _ 1 ]; TGNDumpProc: TYPE ~ PROC [ s: IO.STREAM, node: TypeGraphNode, n: NAT _ 1 ]; AVNWalkProc: TYPE ~ PROC [ s: IO.STREAM, value: AbstractValue, context: CONTEXT]; TGNWalkProc: TYPE ~ PROC [ s: IO.STREAM, node: TypeGraphNode, context: CONTEXT ]; <> TGNKind2: TYPE ~ { bool, card16, card32, int16, int32, sink, source, string, unspec, array, choice, enum, error, proc, record, seq, logical, constructor, grouping, negation, null, number, rope, variant }; <> <<>> TypeConstructorKind: TYPE ~ { array, choice, enum, error, proc, record, seq }; AbstractValueKind: TYPE ~ { constructor, grouping, logical, negation, null, number, rope, variant }; <> <> <> EnvironmentNode: TYPE ~ REF EnvironmentNodeBody; EnvironmentNodeBody: TYPE ~ RECORD [ interfaces: REF ]; <> <> <<>> <> <<>> <> <> <> <<>> InterfaceValNode: TYPE ~ REF InterfaceValNodeBody; InterfaceValNodeBody: TYPE ~ RECORD [ moduleNames: NameSequenceNode, entries: VisibleNames, ct: ContextTreeNode ]; <> <> <> <> <> <<>> <> <<>> VisibleNames: TYPE ~ REF VisibleNamesBody; VisibleNamesBody: TYPE ~ RECORD [ head: LIST OF VNCell ]; VNCell: TYPE ~ REF VNCellBody; VNCellBody: TYPE ~ RECORD [ id: ROPE, value: REF ANY ]; <> <> <> <> HackTGN: TYPE ~ REF HackTGNBody; HackTGNBody: TYPE ~ RECORD [ value: TypeGraphNode, next: TypeGraphNode ]; <> <> <> <<>> ArrayTGN: TYPE ~ REF ArrayTGNBody; ArrayTGNBody: TYPE ~ RECORD [ length: AbstractValue, itemType: TypeGraphNode ]; <> <> <> <> <> <> <> <> <> <> <<>> BaseTypeTGN: TYPE ~ REF BaseTypeTGNBody; BaseTypeTGNBody: TYPE ~ RECORD [ type: BaseTypeKind ]; <> <> <<>> ChoiceTGN: TYPE ~ REF ChoiceTGNBody; ChoiceTGNBody: TYPE ~ RECORD [ ktype: TypeGraphNode, union: TypeGraphNode ]; <> <> <<>> DerefTGN: TYPE ~ REF DerefTGNBody; DerefTGNBody: TYPE ~ RECORD [ item: ROPE, type: TypeGraphNode ]; <> <> <> <<>> EnumTGN: TYPE ~ REF EnumTGNBody; EnumTGNBody: TYPE ~ RECORD [ enum: TypeGraphNode ]; <> <> <<>> ErrorTGN: TYPE ~ REF ErrorTGNBody; ErrorTGNBody: TYPE ~ RECORD [ fieldlist: TypeGraphNode ]; <> <> <> <<>> FieldTGN: TYPE ~ REF FieldTGNBody; FieldTGNBody: TYPE ~ RECORD [ namelist: TypeGraphNode, type: TypeGraphNode ]; FieldListTGN: TYPE ~ REF FieldListTGNBody; FieldListTGNBody: TYPE ~ RECORD [ tag: ROPE, ordinal: AbstractValue ]; <> InterfaceTGN: TYPE ~ REF InterfaceTGNBody; InterfaceTGNBody: TYPE ~ RECORD [ typeNames: VisibleNames ]; <> <> <<>> <> LinkTGN: TYPE = REF LinkTGNBody; LinkTGNBody: TYPE = RECORD [ tgn: TypeGraphNode, -- in target module interface: ROPE, -- InterfaceValNode of target module item: ROPE -- name of item in interface ]; <> <> <> <> <<>> NameSequenceNode: TYPE ~ REF NameSequenceNodeBody; NameSequenceNodeBody: TYPE ~ RECORD [ head: LIST OF ROPE ]; <> <> <<>> ProcTGN: TYPE ~ REF ProcTGNBody; ProcTGNBody: TYPE ~ RECORD [ args: TypeGraphNode, results: TypeGraphNode, errors: TypeGraphNode ]; <> <> <> <<>> RecordTGN: TYPE ~ REF RecordTGNBody; RecordTGNBody: TYPE ~ RECORD [ fieldlist: TypeGraphNode ]; <> <> <<>> SequenceTGN: TYPE ~ REF SequenceTGNBody; SequenceTGNBody: TYPE ~ RECORD [ maxlength: AbstractValue, subtype: TypeGraphNode ]; <> <> <<>> UnionTGN: TYPE ~ REF UnionTGNBody; UnionTGNBody: TYPE ~ RECORD [ namelist: TypeGraphNode, type: TypeGraphNode ]; <> <> <> HackAVN: TYPE ~ REF HackAVNBody; HackAVNBody: TYPE ~ RECORD [ value: AbstractValue, next: AbstractValue ]; <> <> <> <> <> <<>> LogicalAVN: TYPE ~ REF LogicalAVNBody; LogicalAVNBody: TYPE ~ RECORD [ value: BOOL ]; <> <> <> <> <> <> <> <<>> NumericalAVN: TYPE ~ REF NumericalAVNBody; NumericalAVNBody: TYPE ~ RECORD [ inverted: BOOL, value: CARD32 ]; <> <> <<>> RopeAVN: TYPE ~ REF RopeAVNBody; RopeAVNBody: TYPE ~ RECORD [ value: ROPE ]; <> <> <<>> BindingAVN: TYPE ~ REF BindingAVNBody; BindingAVNBody: TYPE ~ RECORD [ tgn: TypeGraphNode, node: AbstractValue ]; <> <> <> <<>> ConstructorAVN: TYPE ~ REF ConstructorAVNBody; ConstructorAVNBody: TYPE ~ RECORD [ node: AbstractValue ]; <> <> <<>> DerefAVN: TYPE ~ REF DerefAVNBody; DerefAVNBody: TYPE ~ RECORD [ item: ROPE, value: AbstractValue ]; <> <> <> GroupingAVN: TYPE ~ REF GroupingAVNBody; GroupingAVNBody: TYPE ~ RECORD [ node: AbstractValue ]; <> <> LinkAVN: TYPE = REF LinkAVNBody; LinkAVNBody: TYPE = RECORD [ interface: ROPE, item: ROPE, avn: AbstractValue ]; <> <> <<>> VariantAVN: TYPE = REF VariantAVNBody; VariantAVNBody: TYPE = RECORD [ id: ROPE, node: AbstractValue ]; }.