-- SaffronAddNamesToFieldListImpl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by hederman.pa at August 17, 1987 6:59:33 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7Def, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronAddNamesToFieldListImpl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef, SaffronATDef EXPORTS SaffronAG7Def= BEGIN OPEN SaffronAG7Def, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; IdentListmanyProdAddNamesToSequence: PUBLIC PROC[ref: REF ANY, nameSequence: NameSequenceNode] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN nameSequence1: NameSequenceNode; nameSequence1 _ treeData.IdentListtail.procs.AddNamesToSequence[treeData.IdentListtail, nameSequence]; temp0 _ treeData.IdentListhead.procs.AddNamesToSequence[treeData.IdentListhead, nameSequence1]; END; END END; IdentListmanyProdMakeNameSequence: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN nameSequence1: NameSequenceNode; nameSequence: NameSequenceNode; nameSequence _ EmptyNameSequence[]; nameSequence1 _ treeData.IdentListtail.procs.AddNamesToSequence[treeData.IdentListtail, nameSequence]; temp0 _ treeData.IdentListhead.procs.AddNamesToSequence[treeData.IdentListhead, nameSequence1]; END; END END; IdentListmanyProdRecAddArcsfromLVTGNtoTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ treeData.IdentListhead.procs.RecAddArcsfromLVTGNtoTGN[treeData.IdentListhead, localContext, accessVal, tgn, defaultExp]; temp0 _ treeData.IdentListtail.procs.RecAddArcsfromLVTGNtoTGN[treeData.IdentListtail, localContext1, accessVal, tgn, defaultExp]; END; END END; IdentListmanyProdPutNewNamesInLocalContext1: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ treeData.IdentListhead.procs.PutNewNamesInLocalContext1[treeData.IdentListhead, localContext, accessVal]; temp0 _ treeData.IdentListtail.procs.PutNewNamesInLocalContext1[treeData.IdentListtail, localContext1, accessVal]; END; END END; IdentListmanyProdAddNamesToFieldList: PUBLIC PROC[ref: REF ANY, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode, fieldList: FieldListNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN fieldList1: FieldListNode; fieldList1 _ treeData.IdentListhead.procs.AddNamesToFieldList[treeData.IdentListhead, accessVal, tgn, defaultExp, fieldList]; temp0 _ treeData.IdentListtail.procs.AddNamesToFieldList[treeData.IdentListtail, accessVal, tgn, defaultExp, fieldList1]; END; END END; IdentListoneProdAddNamesToSequence: PUBLIC PROC[ref: REF ANY, nameSequence: NameSequenceNode] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.AddNamesToSequence[treeData.Ident, nameSequence]; END END; IdentListoneProdMakeNameSequence: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; BEGIN nameSequence: NameSequenceNode; nameSequence _ EmptyNameSequence[]; temp0 _ treeData.Ident.procs.AddNamesToSequence[treeData.Ident, nameSequence]; END; END END; IdentListoneProdRecAddArcsfromLVTGNtoTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.RecAddArcsfromLVTGNtoTGN[treeData.Ident, localContext, accessVal, tgn, defaultExp]; END END; IdentListoneProdPutNewNamesInLocalContext1: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.PutNewNamesInLocalContext1[treeData.Ident, localContext, accessVal]; END END; IdentListoneProdAddNamesToFieldList: PUBLIC PROC[ref: REF ANY, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode, fieldList: FieldListNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.AddNamesToFieldList[treeData.Ident, accessVal, tgn, defaultExp, fieldList]; END END; IdentidProdAddNamesToSequence: PUBLIC PROC[ref: REF ANY, nameSequence: NameSequenceNode] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; temp0 _ InsertNameOnNameSequence[treeData.Id, nameSequence]; END END; IdentidProdGetIdentInfo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: IdNode, temp1: PositionValNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; temp1 _ NullPosition[]; temp0 _ treeData.Id; END END; IdentidProdRecAddArcsfromLVTGNtoTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN lvtgn: TypeGraphNodeNode; lvtgn _ FindLocallyVisibleTGN[localContext, treeData.Id]; temp0 _ AddArcFromLVTGNToTGN[localContext, lvtgn, accessVal, tgn, defaultExp]; END; END END; IdentidProdPutNewNamesInLocalContext1: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateLocallyVisibleTGN[localContext, treeData.Id, accessVal]; temp0 _ localContext1; END; END END; IdentidProdAddNamesToFieldList: PUBLIC PROC[ref: REF ANY, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode, fieldList: FieldListNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN field: FieldNode; field _ CreateNamedField[treeData.Id, NullPosition[], accessVal, tgn, defaultExp]; temp0 _ AppendFieldToFieldList[fieldList, field]; END; END END; IdentidpositionProdAddNamesToSequence: PUBLIC PROC[ref: REF ANY, nameSequence: NameSequenceNode] RETURNS[temp0: NameSequenceNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN x: BOOLEAN; x _ Error["Is Position field valid in a ModuleName list"]; temp0 _ InsertNameOnNameSequence[treeData.Id, nameSequence]; END; END END; IdentidpositionProdGetIdentInfo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: IdNode, temp1: PositionValNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; temp1 _ treeData.Position.procs.GetPositionVal[treeData.Position]; temp0 _ treeData.Id; END END; IdentidpositionProdRecAddArcsfromLVTGNtoTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN lvtgn: TypeGraphNodeNode; lvtgn _ FindLocallyVisibleTGN[localContext, treeData.Id]; temp0 _ AddArcFromLVTGNToTGN[localContext, lvtgn, accessVal, tgn, defaultExp]; END; END END; IdentidpositionProdPutNewNamesInLocalContext1: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, accessVal: AccessValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateLocallyVisibleTGN[localContext, treeData.Id, accessVal]; temp0 _ localContext1; END; END END; IdentidpositionProdAddNamesToFieldList: PUBLIC PROC[ref: REF ANY, accessVal: AccessValNode, tgn: TypeGraphNodeNode, defaultExp: DefaultExpNode, fieldList: FieldListNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN field: FieldNode; field _ CreateNamedField[treeData.Id, treeData.Position.procs.GetPositionVal[treeData.Position], accessVal, tgn, defaultExp]; temp0 _ AppendFieldToFieldList[fieldList, field]; END; END END; PositionProdGetPositionVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: PositionValNode] = BEGIN tree: PositionNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PositionProdData _ NARROW[tree.data]; BEGIN boundsVal: BoundsValNode; boundsVal _ treeData.OptBits.procs.GetBoundsVal[treeData.OptBits]; temp0 _ PositionValFun[ExpPTreeVal[treeData.Exp], boundsVal]; END; END END; OptBitsabsentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptBitsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ NullBounds[]; END END; OptBitspresentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptBitsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptBitspresentProdData _ NARROW[tree.data]; temp1: ExpPTreeNode; temp2: ExpPTreeNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["[", temp1, temp2, "]"]; END END; END..