<> <> <> <<>> <> <<>> DIRECTORY CD, CoreRouteFlat, CoreRouteFlatProcs, SymTab; CoreRouteFlatProcsImpl: CEDAR PROGRAM IMPORTS SymTab EXPORTS CoreRouteFlatProcs ~ BEGIN <> EnumerateInstances: PUBLIC PROC [structure: CoreRouteFlat.Structure, action: CoreRouteFlatProcs.EachInstanceAction] RETURNS [quit: BOOLEAN _ FALSE] ~ { <> <> <> <> FOR insts: LIST OF CoreRouteFlat.Instance _ structure.instances, insts.rest WHILE insts#NIL AND ~quit DO quit _ action[insts.first]; ENDLOOP}; <<>> EnumerateNetONodes: PUBLIC PROC [instance: CoreRouteFlat.Instance, action: CoreRouteFlatProcs.EachNetONodeAction] RETURNS [quit: BOOLEAN _ FALSE] ~ { <> <> <> FOR netONodes: LIST OF CoreRouteFlat.NetONode _ instance.netONodes, netONodes.rest WHILE netONodes#NIL AND ~quit DO quit _ action[instance, netONodes.first]; ENDLOOP}; EnumeratePins: PUBLIC PROC [oNode: CoreRouteFlat.ONode, action: CoreRouteFlatProcs.EachPinAction] RETURNS [quit: BOOLEAN _ FALSE] ~ { <> <> <> <> <<>> FOR pins: LIST OF CoreRouteFlat.Pin _ oNode.pins, pins.rest WHILE pins#NIL AND ~quit DO quit _ action[oNode, pins.first]; ENDLOOP}; PosOfONode: PUBLIC PROC [instance: CoreRouteFlat.Instance, pin: CoreRouteFlat.Pin] RETURNS [position: CD.Position] ~ { <> }; <> EnumerateNets: PUBLIC PROC [structure: CoreRouteFlat.Structure, action: CoreRouteFlatProcs.EachNetAction] RETURNS [quit: BOOLEAN _ FALSE] ~ { <> <> <> <> <<>> EachNet: SymTab.EachPairAction ~ { <> quit _ action[NARROW[val]]}; quit _ SymTab.Pairs[structure.nets, EachNet]}; <<>> EnumerateInstONodes: PUBLIC PROC [net: CoreRouteFlat.Net, action: CoreRouteFlatProcs.EachInstONodeAction] RETURNS [quit: BOOLEAN _ FALSE] ~ { <> <> <> <> <<>> FOR instONodes: LIST OF CoreRouteFlat.InstONode _ net.instONodes, instONodes.rest WHILE instONodes#NIL AND ~quit DO quit _ action[net, instONodes.first]; ENDLOOP}; <<>> END.