-- SaffronMakeFieldListImpl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by hederman.pa at August 17, 1987 6:59:30 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7Def, SaffronAG8Def, SaffronAG6Def, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronMakeFieldListImpl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef EXPORTS SaffronAG7Def, SaffronAG8Def, SaffronAG6Def= BEGIN OPEN SaffronAG7Def, SaffronAG8Def, SaffronAG6Def, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; RecListemptyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ CreateEmptyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; RecListpairlistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: RecListpairlistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.PairList.procs.AddPairsToFieldList[treeData.PairList, localContext, newFieldList, paintRecords]; temp1 _ fieldList; temp0 _ localContext1; END; END END; RecListtypelistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: RecListtypelistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.TypeList.procs.AddToFieldList[treeData.TypeList, localContext, newFieldList, paintRecords]; temp1 _ fieldList; temp0 _ localContext1; END; END END; ParameterListemptyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ CreateEmptyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; ParameterListanyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ AnyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; ParameterListpairlistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ParameterListpairlistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.PairList.procs.AddPairsToFieldList[treeData.PairList, localContext, newFieldList, paintRecords]; temp1 _ fieldList; temp0 _ localContext1; END; END END; ParameterListtypelistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ParameterListtypelistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.TypeList.procs.AddToFieldList[treeData.TypeList, localContext, newFieldList, paintRecords]; temp1 _ fieldList; temp0 _ localContext1; END; END END; VariantListoneProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; temp0 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext, tgn]; END END; VariantListoneProdMakeStarTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateEmptyEnumTypeTGN[localContext, False[]]; localContext2 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext1, tgn]; temp1 _ tgn; temp0 _ localContext2; END; END END; VariantListoneProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext, unionList, paintRecords]; END END; VariantListoneProdMakeUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; BEGIN newUnionList: UnionListNode; newUnionList _ CreateEmptyUnionList[]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext, newUnionList, paintRecords]; END; END END; VariantListmoreProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ treeData.VariantList.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantList, localContext, tgn]; temp0 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext1, tgn]; END; END END; VariantListmoreProdMakeStarTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateEmptyEnumTypeTGN[localContext, False[]]; localContext2 _ treeData.VariantList.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantList, localContext1, tgn]; localContext3 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext2, tgn]; temp1 _ tgn; temp0 _ localContext3; END; END END; VariantListmoreProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; unionList1: UnionListNode; [localContext1, unionList1] _ treeData.VariantList.procs.AddVariantsToUnionList[treeData.VariantList, localContext, unionList, paintRecords]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext1, unionList1, paintRecords]; END; END END; VariantListmoreProdMakeUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; unionList: UnionListNode; newUnionList: UnionListNode; newUnionList _ CreateEmptyUnionList[]; [localContext1, unionList] _ treeData.VariantList.procs.AddVariantsToUnionList[treeData.VariantList, localContext, newUnionList, paintRecords]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext1, unionList, paintRecords]; END; END END; VariantItemProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantItemProdData _ NARROW[tree.data]; temp0 _ treeData.IdList.procs.AddVariantNamesToEnumTypeTGN[treeData.IdList, localContext, tgn]; END END; VariantItemProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantItemProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; ffl: FrozenFieldListNode; localContext1: LocalContextNode; fieldList: FieldListNode; [localContext1, fieldList] _ treeData.RecList.procs.MakeFieldList[treeData.RecList, localContext, paintRecords]; [localContext2, ffl] _ FreezeFieldList[localContext1, fieldList]; temp1 _ treeData.IdList.procs.AddNamesToUnionList[treeData.IdList, ffl, unionList]; temp0 _ localContext2; END; END END; IdListoneProdAddIdsToInterfaceTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, interfaceTGN: TypeGraphNodeNode, interface: InterfaceValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; linkTgn: TypeGraphNodeNode; accessVal: AccessValNode; entryTgn: TypeGraphNodeNode; [accessVal, entryTgn] _ LookupInterfaceEntry[interface, treeData.Id]; [localContext1, linkTgn] _ CreateLinkTGN[localContext, entryTgn, interface, treeData.Id]; temp0 _ AddTGNToInterfaceTGN[localContext1, interfaceTGN, treeData.Id, accessVal, linkTgn]; END; END END; IdListoneProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; temp0 _ AppendElementToEnumTypeTGN[localContext, tgn, treeData.Id, NullExpPTree[]]; END END; IdListoneProdAddNamesToUnionList: PUBLIC PROC[ref: REF ANY, ffl: FrozenFieldListNode, unionList: UnionListNode] RETURNS[temp0: UnionListNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; temp0 _ AppendToUnionList[unionList, treeData.Id, ffl]; END END; IdListmoreProdAddIdsToInterfaceTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, interfaceTGN: TypeGraphNodeNode, interface: InterfaceValNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; localContext1: LocalContextNode; linkTgn: TypeGraphNodeNode; accessVal: AccessValNode; entryTgn: TypeGraphNodeNode; [accessVal, entryTgn] _ LookupInterfaceEntry[interface, treeData.Id]; [localContext1, linkTgn] _ CreateLinkTGN[localContext, entryTgn, interface, treeData.Id]; localContext2 _ AddTGNToInterfaceTGN[localContext1, interfaceTGN, treeData.Id, accessVal, linkTgn]; temp0 _ treeData.IdList.procs.AddIdsToInterfaceTGN[treeData.IdList, localContext2, interfaceTGN, interface]; END; END END; IdListmoreProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ AppendElementToEnumTypeTGN[localContext, tgn, treeData.Id, NullExpPTree[]]; temp0 _ treeData.IdList.procs.AddVariantNamesToEnumTypeTGN[treeData.IdList, localContext1, tgn]; END; END END; IdListmoreProdAddNamesToUnionList: PUBLIC PROC[ref: REF ANY, ffl: FrozenFieldListNode, unionList: UnionListNode] RETURNS[temp0: UnionListNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN unionList1: UnionListNode; unionList1 _ AppendToUnionList[unionList, treeData.Id, ffl]; temp0 _ treeData.IdList.procs.AddNamesToUnionList[treeData.IdList, ffl, unionList1]; END; END END; TagidentProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; temp2 _ treeData.Access.procs.GetAccessVal[treeData.Access]; [temp0, temp1] _ treeData.Ident.procs.GetIdentInfo[treeData.Ident]; END END; TagidentProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords]; END END; TagidentProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; temp1: IdNode; temp2: PositionValNode; [temp1, temp2] _ treeData.Ident.procs.GetIdentInfo[treeData.Ident]; temp0 _ VanillaVariantFlavorVal[temp1, temp2, treeData.Access.procs.GetAccessVal[treeData.Access]]; END END; TagcomputedProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; temp2 _ AccessValConst["empty"]; temp1 _ NullPosition[]; temp0 _ NullId[]; END END; TagcomputedProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords]; END END; TagcomputedProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; temp0 _ ComputedVariantFlavorConst[]; END END; TagoverlaidProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; BEGIN x: BOOLEAN; x _ Error["Sequences can't be overlaid"]; temp2 _ AccessValConst["empty"]; temp1 _ NullPosition[]; temp0 _ NullId[]; END; END END; TagoverlaidProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords]; END END; TagoverlaidProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; temp0 _ OverlaidVariantFlavorConst[]; END END; TagTypestarProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; temp2 _ True[]; temp1 _ FindBottomTGN[localContext1]; temp0 _ localContext1; END; END END; TagTypetypeexpProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagTypetypeexpProdData _ NARROW[tree.data]; temp2 _ False[]; [temp0, temp1] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; END END; END..