<> <> <> <> <<>> DIRECTORY CDProperties USING [RegisterProperty], Core USING [Wire], CoreProperties USING [RegisterProperty], CoreOps USING [GetShortWireName], DrcDebug, IO USING [card, noWhereStream, PutF, refAny, rope, STREAM], MessageWindow USING [Append, Blink, Clear], Rope USING [ROPE], UserProfile USING [Boolean, CallWhenProfileChanges, ProfileChangedProc], ViewerIO USING [CreateViewerStreams], ViewerTools USING [FindExistingViewer, Viewer]; DrcDebugImpl: CEDAR PROGRAM IMPORTS CDProperties, CoreOps, CoreProperties, IO, MessageWindow, UserProfile, ViewerIO, ViewerTools EXPORTS DrcDebug ~ BEGIN OPEN DrcDebug; debug: PUBLIC BOOL _ UserProfile.Boolean [key: "Genista.Debug", default: FALSE]; trace: PUBLIC ATOM _ CoreProperties.RegisterProperty [$DrcTrace]; pause: PUBLIC ATOM _ CoreProperties.RegisterProperty [$break]; break: PUBLIC SIGNAL ~ CODE; dLog: PUBLIC IO.STREAM _ IO.noWhereStream; <> ActivateDebug: UserProfile.ProfileChangedProc ~ BEGIN profile: BOOL ~ UserProfile.Boolean [key: "Genista.Debug", default: FALSE]; IF debug THEN {IF (debug # profile) THEN debug _ FALSE} ELSE {IF (debug # profile) THEN Debug} END; -- ActivateDebug Debug: PUBLIC PROC ~ BEGIN <> viewerName: Rope.ROPE ~ "Genista debug"; viewer: ViewerTools.Viewer _ ViewerTools.FindExistingViewer [viewerName]; debug _ TRUE; -- Get all in one dLog _ ViewerIO.CreateViewerStreams [viewerName, viewer].out END; -- Debug PrintWire: PUBLIC PROC [w: Core.Wire] ~ BEGIN dLog.PutF ["%g %g %g\n", IO.rope [CoreOps.GetShortWireName[w]], IO.card [LOOPHOLE[w]], IO.refAny [w]]; FOR i: NAT IN [0 .. w.size) DO dLog.PutF ["\t(%g) %g %g %g\n", IO.card [i], IO.rope [CoreOps.GetShortWireName[w[i]]], IO.card [LOOPHOLE[w[i]]], IO.refAny [w[i]]] ENDLOOP END; -- PrintWire <> <> <> <