-- SaffronMakeTypeImpl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by hederman.pa at August 17, 1987 6:59:26 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7Def, SaffronAG2Def, SaffronAG8Def, SaffronAG6Def, SaffronAG9Def, SaffronAG1Def, SaffronGenericDef, Rope, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronMakeTypeImpl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef, SaffronATDef EXPORTS SaffronAG7Def, SaffronAG2Def, SaffronAG8Def, SaffronAG6Def, SaffronAG9Def, SaffronAG1Def= BEGIN OPEN SaffronAG7Def, SaffronAG2Def, SaffronAG8Def, SaffronAG6Def, SaffronAG9Def, SaffronAG1Def, SaffronGenericDef, Rope, ThreeC4Support, SaffronBaseDef, SaffronATDef; TopmodulepProdExplore: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: TopNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TopmodulepProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleP.procs.Explore[treeData.ModuleP, fileName, env]; END END; TopmodulepProdDoTop: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: TopNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TopmodulepProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.ModuleP.procs.MakeEnvironment[treeData.ModuleP, fileName, env]; END END; ModulePimplProdExplore: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: ModulePNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModulePimplProdData _ NARROW[tree.data]; BEGIN env: EnvironmentNode; interface: InterfaceValNode; ct: ContextTreeNode; ct _ EmptyContextTree[RootContextRib[]]; interface _ CreateInterfaceFromContextTree[ct, EmptyNameSequence[]]; env _ AddInterfaceToEnvironment[CreateEmptyEnvironment[], "", interface]; temp1 _ interface; temp0 _ env; END; END END; ModulePimplProdMakeEnvironment: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: ModulePNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModulePimplProdData _ NARROW[tree.data]; BEGIN env: EnvironmentNode; interface: InterfaceValNode; ct: ContextTreeNode; ct _ EmptyContextTree[RootContextRib[]]; interface _ CreateInterfaceFromContextTree[ct, EmptyNameSequence[]]; env _ AddInterfaceToEnvironment[CreateEmptyEnvironment[], "", interface]; temp1 _ interface; temp0 _ env; END; END END; ModulePdefProdExplore: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: ModulePNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModulePdefProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; ct: ContextTreeNode; env1: EnvironmentNode; env1 _ treeData.Directory.procs.ExploreDirectoryClause[treeData.Directory, env]; ct _ EmptyContextTree[RootContextRib[]]; interface _ CreateInterfaceFromContextTree[ct, EmptyNameSequence[]]; env2 _ AddInterfaceToEnvironment[env1, fileName, interface]; temp1 _ interface; temp0 _ env2; END; END END; ModulePdefProdMakeEnvironment: PUBLIC PROC[ref: REF ANY, fileName: ROPE, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode, temp1: InterfaceValNode] = BEGIN tree: ModulePNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ModulePdefProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; contextTree: ContextTreeNode; contextRib: ContextRibNode; paintRecords: BOOLEAN; nameSequence: NameSequenceNode; localContext: LocalContextNode; env1: EnvironmentNode; rootContext: LocalContextNode; rootContext _ CreateEmptyContext[RootContextRib[]]; [localContext, env1] _ treeData.Directory.procs.ProcessDirectoryClause[treeData.Directory, rootContext, env]; nameSequence _ treeData.IdentList.procs.MakeNameSequence[treeData.IdentList]; paintRecords _ True[]; contextRib _ FreezeLocalContext[localContext]; contextTree _ treeData.DefBody.procs.MakeContextTree[treeData.DefBody, contextRib, paintRecords]; interface _ CreateInterfaceFromContextTree[contextTree, nameSequence]; env2 _ AddInterfaceToEnvironment[env1, fileName, interface]; temp1 _ interface; temp0 _ env2; END; END END; DirectoryemptyProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: DirectoryNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageEnvironment[env]; END END; DirectoryemptyProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: DirectoryNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ FakeDamageEnvironment[env]; temp0 _ FakeDamageContext[localContext]; END END; DirectorymoreProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: DirectoryNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DirectorymoreProdData _ NARROW[tree.data]; temp0 _ treeData.IncludeItem.procs.ExploreDirectoryClause[treeData.IncludeItem, treeData.Directory.procs.ExploreDirectoryClause[treeData.Directory, env]]; END END; DirectorymoreProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: DirectoryNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DirectorymoreProdData _ NARROW[tree.data]; temp2: LocalContextNode; temp3: EnvironmentNode; [temp2, temp3] _ treeData.Directory.procs.ProcessDirectoryClause[treeData.Directory, localContext, env]; [temp0, temp1] _ treeData.IncludeItem.procs.ProcessDirectoryClause[treeData.IncludeItem, temp2, temp3]; END END; IncludeItemfrompProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemfrompProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromString[treeData.String]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.Explore[defFile, fileName, env]; END; }; temp0 _ env2; END; END END; IncludeItemfrompProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemfrompProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; lvTgn: TypeGraphNodeNode; localContext1: LocalContextNode; interfaceTgn: TypeGraphNodeNode; env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromString[treeData.String]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.MakeEnvironment[defFile, fileName, env]; END; }; [localContext1, interfaceTgn] _ treeData.Using.procs.MakeInterfaceTGN[treeData.Using, localContext, interface]; [localContext2, lvTgn] _ CreateLocallyVisibleTGN[localContext1, treeData.Id, NullAccessVal[]]; localContext3 _ AddArcFromLVTGNToTGN[localContext2, lvTgn, NullAccessVal[], interfaceTgn, NullDefaultVal[]]; temp1 _ env2; temp0 _ localContext3; END; END END; IncludeItemtypeProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemtypeProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Id]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.Explore[defFile, fileName, env]; END; }; temp0 _ env2; END; END END; IncludeItemtypeProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemtypeProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; lvTgn: TypeGraphNodeNode; localContext1: LocalContextNode; interfaceTgn: TypeGraphNodeNode; env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Id]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.MakeEnvironment[defFile, fileName, env]; END; }; [localContext1, interfaceTgn] _ treeData.Using.procs.MakeInterfaceTGN[treeData.Using, localContext, interface]; [localContext2, lvTgn] _ CreateLocallyVisibleTGN[localContext1, treeData.Id, NullAccessVal[]]; localContext3 _ AddArcFromLVTGNToTGN[localContext2, lvTgn, NullAccessVal[], interfaceTgn, NullDefaultVal[]]; temp1 _ env2; temp0 _ localContext3; END; END END; IncludeItemplainProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemplainProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Id]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.Explore[defFile, fileName, env]; END; }; temp0 _ env2; END; END END; IncludeItemplainProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemplainProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; lvTgn: TypeGraphNodeNode; localContext1: LocalContextNode; interfaceTgn: TypeGraphNodeNode; env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Id]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.MakeEnvironment[defFile, fileName, env]; END; }; [localContext1, interfaceTgn] _ treeData.Using.procs.MakeInterfaceTGN[treeData.Using, localContext, interface]; [localContext2, lvTgn] _ CreateLocallyVisibleTGN[localContext1, treeData.Id, NullAccessVal[]]; localContext3 _ AddArcFromLVTGNToTGN[localContext2, lvTgn, NullAccessVal[], interfaceTgn, NullDefaultVal[]]; temp1 _ env2; temp0 _ localContext3; END; END END; IncludeItemtypeandidProdExploreDirectoryClause: PUBLIC PROC[ref: REF ANY, env: EnvironmentNode] RETURNS[temp0: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemtypeandidProdData _ NARROW[tree.data]; BEGIN env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Idlocal]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.Explore[defFile, fileName, env]; END; }; temp0 _ env2; END; END END; IncludeItemtypeandidProdProcessDirectoryClause: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, env: EnvironmentNode] RETURNS[temp0: LocalContextNode, temp1: EnvironmentNode] = BEGIN tree: IncludeItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IncludeItemtypeandidProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; lvTgn: TypeGraphNodeNode; localContext1: LocalContextNode; interfaceTgn: TypeGraphNodeNode; env2: EnvironmentNode; interface: InterfaceValNode; fileName: ROPE; fileName _ RopeFromId[treeData.Idlocal]; IF IsInterfaceInEnv[env, fileName] THEN {BEGIN env1: EnvironmentNode; env1 _ FakeDamageEnvironment[env]; interface _ LookupInterfaceInEnv[env1, fileName]; env2 _ env1; END; } ELSE {BEGIN defFile: ModulePNode; defFile _ ModulePVal[ReadDefFile[fileName]]; [env2, interface] _ defFile.procs.MakeEnvironment[defFile, fileName, env]; END; }; [localContext1, interfaceTgn] _ treeData.Using.procs.MakeInterfaceTGN[treeData.Using, localContext, interface]; [localContext2, lvTgn] _ CreateLocallyVisibleTGN[localContext1, treeData.Idlocal, NullAccessVal[]]; localContext3 _ AddArcFromLVTGNToTGN[localContext2, lvTgn, NullAccessVal[], interfaceTgn, NullDefaultVal[]]; temp1 _ env2; temp0 _ localContext3; END; END END; UsingrestrictedProdMakeInterfaceTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, interface: InterfaceValNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: UsingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: UsingrestrictedProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; interfaceTGN: TypeGraphNodeNode; [localContext1, interfaceTGN] _ CreateEmptyInterfaceTGN[localContext]; temp1 _ interfaceTGN; temp0 _ treeData.IdList.procs.AddIdsToInterfaceTGN[treeData.IdList, localContext1, interfaceTGN, interface]; END; END END; UsingnothingProdMakeInterfaceTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, interface: InterfaceValNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: UsingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; [temp0, temp1] _ CreateEmptyInterfaceTGN[localContext]; END END; UsingunrestrictedProdMakeInterfaceTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, interface: InterfaceValNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: UsingNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; [temp0, temp1] _ CreateInterfaceTGNFromInterface[localContext, interface]; END END; DefBodyProdMakeContextTree1: PUBLIC PROC[ref: REF ANY, rib: ContextRibNode, paintRecords: BOOLEAN] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DefBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefBodyProdData _ NARROW[tree.data]; BEGIN thisScopeContextTree: ContextTreeNode; newRib: ContextRibNode; thisScopeLocalContext: LocalContextNode; localContext: LocalContextNode; localContext _ CreateEmptyContext[rib]; thisScopeLocalContext _ treeData.DecList.procs.UpdateLocalContext[treeData.DecList, localContext, paintRecords]; newRib _ FreezeLocalContext[thisScopeLocalContext]; thisScopeContextTree _ EmptyContextTree[newRib]; temp0 _ treeData.DecList.procs.HangContextsFromContextTree[treeData.DecList, thisScopeContextTree, newRib, paintRecords]; END; END END; DefBodyProdMakeContextTree: PUBLIC PROC[ref: REF ANY, contextRib: ContextRibNode, paintRecords: BOOLEAN] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DefBodyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefBodyProdData _ NARROW[tree.data]; BEGIN defBodyPTree: DefBodyPTreeNode; defBodyPTree _ DefBodyPTreeVal[tree]; temp0 _ treeData.BindList.procs.MakeBindListContextTreeWithDefBody[treeData.BindList, defBodyPTree, contextRib, paintRecords]; END; END END; TypeExprecordProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprecordProdData _ NARROW[tree.data]; BEGIN localContext4: LocalContextNode; newTgn: TypeGraphNodeNode; localContext3: LocalContextNode; frozenFieldList: FrozenFieldListNode; localContext2: LocalContextNode; fieldList: FieldListNode; localContext1: LocalContextNode; paint: PaintNode; machineDependent: BOOLEAN; monitored: BOOLEAN; monitored _ treeData.Monitored.procs.GetBooleanVal[treeData.Monitored]; machineDependent _ treeData.MachineDependent.procs.GetBooleanVal[treeData.MachineDependent]; IF paintRecords THEN {[localContext1, paint] _ GetUniquePaint[localContext]; } ELSE {[localContext1, paint] _ GetUnpaintedPaint[localContext]; }; [localContext2, fieldList] _ treeData.RecList.procs.MakeFieldList[treeData.RecList, localContext1, paintRecords]; [localContext3, frozenFieldList] _ FreezeFieldList[localContext2, fieldList]; [localContext4, newTgn] _ CreateRecordTGN[localContext3, paint, machineDependent, monitored, frozenFieldList]; temp1 _ newTgn; temp0 _ localContext4; END; END END; TypeExpunionProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpunionProdData _ NARROW[tree.data]; BEGIN variantFlavor: VariantFlavorNode; localContext3: LocalContextNode; tagTypeTgn1: TypeGraphNodeNode; localContext2: LocalContextNode; tagTypeTgn: TypeGraphNodeNode; isStarTagType: BOOLEAN; localContext1: LocalContextNode; unionList: UnionListNode; [localContext1, unionList] _ treeData.VariantList.procs.MakeUnionList[treeData.VariantList, localContext, paintRecords]; [localContext2, tagTypeTgn, isStarTagType] _ treeData.Tag.procs.MakeTagType[treeData.Tag, localContext1, paintRecords]; IF isStarTagType THEN {[localContext3, tagTypeTgn1] _ treeData.VariantList.procs.MakeStarTagType[treeData.VariantList, localContext2]; } ELSE {tagTypeTgn1 _ tagTypeTgn; localContext3 _ FakeDamageContext[localContext2]; }; variantFlavor _ treeData.Tag.procs.MakeVariantFlavor[treeData.Tag]; [temp0, temp1] _ CreateVariantPartTGN[localContext3, variantFlavor, tagTypeTgn1, unionList]; END; END END; TypeExpsequenceProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpsequenceProdData _ NARROW[tree.data]; BEGIN temp2: IdNode; temp3: PositionValNode; temp4: AccessValNode; packed: BOOLEAN; x: BOOLEAN; localContext2: LocalContextNode; tagTypeTgn: TypeGraphNodeNode; isStarTagType: BOOLEAN; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [localContext2, tagTypeTgn, isStarTagType] _ treeData.Tag.procs.MakeTagType[treeData.Tag, localContext1, paintRecords]; IF isStarTagType THEN {x _ Error["Sequence Tag must not be a star"]; } ELSE {x _ True[]; }; packed _ treeData.Packed.procs.GetBooleanVal[treeData.Packed]; [temp2, temp3, temp4] _ treeData.Tag.procs.GetSequenceTagInfo[treeData.Tag]; [temp0, temp1] _ CreateSequenceTGN[localContext2, packed, temp2, temp3, temp4, tagTypeTgn, tgn]; END; END END; TypeExpenumProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpenumProdData _ NARROW[tree.data]; BEGIN machineDependent: BOOLEAN; machineDependent _ treeData.MachineDependent.procs.GetBooleanVal[treeData.MachineDependent]; [temp0, temp1] _ treeData.ElementList.procs.MakeElementList[treeData.ElementList, localContext, machineDependent]; END; END END; TypeExprefProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprefProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; referentTgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.GetBooleanVal[treeData.ReadOnly]; [localContext1, referentTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, referentTgn]; END; END END; TypeExprefanyProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprefanyProdData _ NARROW[tree.data]; BEGIN topTgn: TypeGraphNodeNode; localContext1: LocalContextNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.GetBooleanVal[treeData.ReadOnly]; localContext1 _ FakeDamageContext[localContext]; topTgn _ FindTopTGN[localContext1]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, topTgn]; END; END END; TypeExprefunspecifiedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN topTgn: TypeGraphNodeNode; localContext1: LocalContextNode; readOnly: BOOLEAN; readOnly _ False[]; localContext1 _ FakeDamageContext[localContext]; topTgn _ FindTopTGN[localContext1]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, topTgn]; END; END END; TypeExptypeidProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptypeidProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeId.procs.MakeType[treeData.TypeId, localContext, paintRecords]; END END; TypeExpsubrangeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpsubrangeProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.Subrange.procs.MakeType[treeData.Subrange, localContext, paintRecords]; END END; TypeExppointerProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExppointerProdData _ NARROW[tree.data]; BEGIN ordered: BOOLEAN; base: BOOLEAN; localContext1: LocalContextNode; bounds: BoundsValNode; readOnly: BOOLEAN; tgn: TypeGraphNodeNode; [localContext1, bounds, readOnly, tgn] _ treeData.PointerType.procs.GetPointerTypeInfo[treeData.PointerType, localContext, paintRecords]; base _ treeData.Base.procs.GetBooleanVal[treeData.Base]; ordered _ treeData.Ordered.procs.GetBooleanVal[treeData.Ordered]; [temp0, temp1] _ CreatePointerTGN[localContext1, ordered, base, bounds, readOnly, tgn]; END; END END; TypeExpvarProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpvarProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [temp0, temp1] _ CreateVarTGN[localContext1, tgn]; END; END END; TypeExplistProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExplistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; itemTgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.GetBooleanVal[treeData.ReadOnly]; [localContext1, itemTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [temp0, temp1] _ CreateListTGN[localContext1, readOnly, itemTgn]; END; END END; TypeExparrayProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExparrayProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; itemTgn: TypeGraphNodeNode; localContext1: LocalContextNode; indexTgn: TypeGraphNodeNode; packed: BOOLEAN; packed _ treeData.Packed.procs.GetBooleanVal[treeData.Packed]; [localContext1, indexTgn] _ treeData.OptType.procs.MakeType[treeData.OptType, localContext, paintRecords]; [localContext2, itemTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext1, paintRecords]; [temp0, temp1] _ CreateArrayTGN[localContext2, packed, indexTgn, itemTgn]; END; END END; TypeExpdescriptorProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpdescriptorProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.GetBooleanVal[treeData.ReadOnly]; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [temp0, temp1] _ CreateDescriptorTGN[localContext1, readOnly, tgn]; END; END END; TypeExptransferProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptransferProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fflInput: FrozenFieldListNode; fflOutput: FrozenFieldListNode; transferMode: ROPE; safe: BOOLEAN; safe _ treeData.Safe.procs.GetBooleanVal[treeData.Safe]; transferMode _ treeData.TransferMode.procs.MakeTransferMode[treeData.TransferMode]; [localContext1, fflInput, fflOutput] _ treeData.Arguments.procs.MakeArgumentLists[treeData.Arguments, localContext, paintRecords]; [temp0, temp1] _ CreateTransferTGN[localContext1, safe, transferMode, fflInput, fflOutput]; END; END END; TypeExprelativeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprelativeProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; tgn: TypeGraphNodeNode; localContext1: LocalContextNode; baseTgn: TypeGraphNodeNode; [localContext1, baseTgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [localContext2, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext1, paintRecords]; [temp0, temp1] _ CreateRelativeTGN[localContext2, baseTgn, tgn]; END; END END; TypeExpzoneProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpzoneProdData _ NARROW[tree.data]; [temp0, temp1] _ CreateZoneTGN[localContext, treeData.Uncounted.procs.GetBooleanVal[treeData.Uncounted]]; END END; TypeExplongProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExplongProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; [temp0, temp1] _ CreateLongTGN[localContext1, tgn]; END; END END; TypeExpframeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpframeProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; temp1 _ FindFrameTGN[localContext1, treeData.Id]; temp0 _ localContext1; END; END END; TypeExppaintedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExppaintedProdData _ NARROW[tree.data]; BEGIN n: TypeGraphNodeNode; c: LocalContextNode; x: BOOLEAN; x _ Error[" Unimplemented Construct"]; c _ FakeDamageContext[localContext]; n _ FindBottomTGN[c]; temp1 _ n; temp0 _ c; END; END END; TypeExptypeapplyProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptypeapplyProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords]; END END; TypeApplyoneProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplyoneProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSpecianatedTGNUsingExp[localContext1, tgn, ExpPTreeVal[treeData.Exp]]; END; END END; TypeApplymorelengthsProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplymorelengthsProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords]; [temp0, temp1] _ CreateSpecianatedTGNUsingExp[localContext1, tgn, ExpPTreeVal[treeData.Exp]]; END; END END; TypeApplymoreidsProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplymoreidsProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords]; [temp0, temp1] _ CreateSpecianatedTGNUsingId[localContext1, tgn, treeData.Id]; END; END END; TypeIdidProdLookupTypeId: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdidProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; tgn _ FindLocallyVisibleTGN[localContext, treeData.Id]; localContext1 _ FakeDamageContext[localContext]; temp1 _ tgn; temp0 _ localContext1; END; END END; TypeIdidProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdidProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; tgn _ FindLocallyVisibleTGN[localContext, treeData.Id]; localContext1 _ FakeDamageContext[localContext]; temp1 _ tgn; temp0 _ localContext1; END; END END; TypeIdqualifierProdLookupTypeId: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdqualifierProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSpecianatedTGNUsingId[localContext1, tgn, treeData.Id]; END; END END; TypeIdqualifierProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdqualifierProdData _ NARROW[tree.data]; [temp0, temp1] _ tree.procs.LookupTypeId[tree, localContext]; END END; OptTypeabsentProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: OptTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; tgn _ FindBottomTGN[localContext]; localContext1 _ FakeDamageContext[localContext]; temp1 _ tgn; temp0 _ localContext1; END; END END; OptTypepresentProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: OptTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptTypepresentProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; END END; SubrangenamedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: SubrangeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: SubrangenamedProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; bounds: BoundsValNode; bounds _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSubrangeTGN[localContext1, tgn, bounds]; END; END END; SubrangeunnamedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: SubrangeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: SubrangeunnamedProdData _ NARROW[tree.data]; BEGIN tgn: TypeGraphNodeNode; bounds: BoundsValNode; bounds _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; tgn _ FindBottomTGN[localContext]; [temp0, temp1] _ CreateSubrangeTGN[localContext, tgn, bounds]; END; END END; IntervalccProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalccProdData _ NARROW[tree.data]; temp1: ExpPTreeNode; temp2: ExpPTreeNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["[", temp1, temp2, "]"]; END END; IntervalcoProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalcoProdData _ NARROW[tree.data]; temp1: ExpPTreeNode; temp2: ExpPTreeNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["[", temp1, temp2, ")"]; END END; IntervalocProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalocProdData _ NARROW[tree.data]; temp1: ExpPTreeNode; temp2: ExpPTreeNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["(", temp1, temp2, "]"]; END END; IntervalooProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalooProdData _ NARROW[tree.data]; temp1: ExpPTreeNode; temp2: ExpPTreeNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["(", temp1, temp2, ")"]; END END; BoundsProdGetLowerAndUpper: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ExpPTreeNode, temp1: ExpPTreeNode] = BEGIN tree: BoundsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: BoundsProdData _ NARROW[tree.data]; temp1 _ ExpPTreeVal[treeData.Expupper]; temp0 _ ExpPTreeVal[treeData.Explower]; END END; PointerTypeunspecifiedProdGetPointerTypeInfo: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: BoundsValNode, temp2: BOOLEAN, temp3: TypeGraphNodeNode] = BEGIN tree: PointerTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PointerTypeunspecifiedProdData _ NARROW[tree.data]; BEGIN bounds: BoundsValNode; readOnly: BOOLEAN; tgn: TypeGraphNodeNode; localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; tgn _ FindBottomTGN[localContext1]; readOnly _ False[]; bounds _ treeData.OptInterval.procs.GetBoundsVal[treeData.OptInterval]; temp3 _ tgn; temp2 _ readOnly; temp1 _ bounds; temp0 _ localContext1; END; END END; PointerTypespecifiedProdGetPointerTypeInfo: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: BoundsValNode, temp2: BOOLEAN, temp3: TypeGraphNodeNode] = BEGIN tree: PointerTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PointerTypespecifiedProdData _ NARROW[tree.data]; BEGIN bounds: BoundsValNode; readOnly: BOOLEAN; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords]; readOnly _ treeData.ReadOnly.procs.GetBooleanVal[treeData.ReadOnly]; bounds _ treeData.OptInterval.procs.GetBoundsVal[treeData.OptInterval]; temp3 _ tgn; temp2 _ readOnly; temp1 _ bounds; temp0 _ localContext1; END; END END; OptIntervalabsentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptIntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ NullBounds[]; END END; OptIntervalpresentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptIntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptIntervalpresentProdData _ NARROW[tree.data]; temp0 _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; END END; TransferModeprocProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "proc"; END END; TransferModeportProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "port"; END END; TransferModesignalProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "signal"; END END; TransferModeerrorProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "error"; END END; TransferModeprocessProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "process"; END END; TransferModeprogramProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "program"; END END; ArgumentsProdMakeArgumentLists: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN] RETURNS[temp0: LocalContextNode, temp1: FrozenFieldListNode, temp2: FrozenFieldListNode] = BEGIN tree: ArgumentsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ArgumentsProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; frozenOutputList: FrozenFieldListNode; temp5: LocalContextNode; temp6: FieldListNode; localContext1: LocalContextNode; frozenInputlist: FrozenFieldListNode; temp3: LocalContextNode; temp4: FieldListNode; [temp3, temp4] _ treeData.ParameterListinput.procs.MakeFieldList[treeData.ParameterListinput, localContext, paintRecords]; [localContext1, frozenInputlist] _ FreezeFieldList[temp3, temp4]; [temp5, temp6] _ treeData.ParameterListoutput.procs.MakeFieldList[treeData.ParameterListoutput, localContext1, paintRecords]; [localContext2, frozenOutputList] _ FreezeFieldList[temp5, temp6]; temp2 _ frozenOutputList; temp1 _ frozenInputlist; temp0 _ localContext2; END; END END; DefaultemptyProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["", NullExpPTree[]]; END END; DefaultgetsProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["_", NullExpPTree[]]; END END; DefaultgetsexpProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefaultgetsexpProdData _ NARROW[tree.data]; temp0 _ DefaultExpVal["_e", ExpPTreeVal[treeData.Exp]]; END END; DefaultgetstrashProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["_TRASH", NullExpPTree[]]; END END; DefaultgetsexportrashProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefaultgetsexportrashProdData _ NARROW[tree.data]; temp0 _ DefaultExpVal["_e|TRASH", ExpPTreeVal[treeData.Exp]]; END END; PackedyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: PackedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; PackednoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: PackedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; MonitoredyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MonitoredNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; MonitorednoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MonitoredNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; MachineDependentyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MachineDependentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; MachineDependentnoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MachineDependentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; OrderedyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: OrderedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; OrderednoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: OrderedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; BaseyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: BaseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; BasenoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: BaseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; SafeyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; SafenoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; SafeemptyProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; UncountedyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: UncountedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; UncountednoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: UncountedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; ReadOnlyyesProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ReadOnlyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; ReadOnlynoProdGetBooleanVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ReadOnlyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; END..