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, April 11, 1985 12:28:36 pm PST
DIRECTORY
CD,
CDSequencer,
Rope USING [ROPE];
CDCommandOps: CEDAR DEFINITIONS =
BEGIN
--Various tools to ease implementing commands
TheApplication: PROC[comm: CDSequencer.Command, text: Rope.ROPENIL] RETURNS [aptr: CD.ApplicationPtr];
--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
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
WriteInfo: PROC[aptr: CD.ApplicationPtr, verbosity: INT𡤁];
RedrawApplication: PROC[design: CD.Design, aptr: CD.ApplicationPtr←NIL, erase: BOOLTRUE];
CallWithResource: PROC [proc: PROC[CDSequencer.Command], comm: CDSequencer.Command, resource: REF, abortFlag: REF BOOLNIL] 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
IsPushedIn: PROC [design: CD.Design] RETURNS [yes: BOOL] = INLINE {
RETURN [ design^.actual.rest#NIL ]
};
END.