CDCommandOps.mesa (part of ChipNDale)
Copyright © 1984, 1985 by Xerox Corporation. All rights reserved.
by Christian Jacobi, July 12, 1984 3:46:45 pm PDT
last edited by Christian Jacobi, March 17, 1986 9:15:58 pm PST
DIRECTORY
CD,
CDSequencer,
Rope USING [ROPE];
CDCommandOps: CEDAR DEFINITIONS =
BEGIN
Various procedures to ease implementing commands
TheInstance: PROC[comm: CDSequencer.Command, text: Rope.ROPENIL] RETURNS [inst: CD.Instance];
--extracts the application given a command
--if returned application is nil, all the messages are made and caller should return quiet;
--if returned application is not nil; text line is written and object is there
BoundingBox: PROC [design: CD.Design, onlySelected: BOOLFALSE] RETURNS [CD.Rect];
--bounding box of whole design
--empty for empty design
LambdaRope: PROC [n: CD.Number, lambda: CD.Number𡤁] RETURNS [Rope.ROPE];
InstRope: PROC[inst: CD.Instance, verbosity: INT𡤁] RETURNS [Rope.ROPE];
ToRope: PROC [x: REF, whenFailed: REFNIL] RETURNS [Rope.ROPE];
ImplementSpecificCommand: PROC [specificAtom: ATOM, text: Rope.ROPENIL, tipBase: Rope.ROPENIL, useFor: Rope.ROPENIL, x: REFNIL, technology: CD.Technology←NIL];
--Implements a command which is executed by using CDCallSpecific
--specificAtom: handled through to select CDCallSpecific command
--text: logged; defaults to tipBase
--tipBase: How command is called in tiptable; defaults to specificAtom
--useFor: Suffix letters appended to tipBase getting the tip table entry
--x: handled through to CDCallSpecific
--technology: NIL => all technologies
--command will be queued and changeflag will be set
CallWithResource: PROC [proc: PROC[CDSequencer.Command], comm: CDSequencer.Command, resource: REF, abortFlag: REF BOOLNIL, waitIfBusy: BOOLFALSE] RETURNS [skipped: BOOL];
--Monitoring commands using global resources
--proc will be called with comm as parameter, but is skipped if resource is already in use
--resource: typically atom; every resource is called only once at a time
--abortFlag: will be set to TRUE if an abort event occurs while execution of proc
--the procedure message on Terminal if it skipped the call, or, if abortFlag is true on return
--waitIfBusy: waits if resource is occupied
END.