CDCommandOps.mesa (part of Chipndale)
Copyright © 1984 by Xerox Corporation. All rights reserved.
by Christian Jacobi July 12, 1984 3:46:45 pm PDT
last edited by Christian Jacobi November 5, 1984 11:07:56 am PST
DIRECTORY
CD,
CDSequencer,
Rope USING [ROPE];
CDCommandOps: CEDAR DEFINITIONS =
BEGIN
--Various tools to ease implementing commands
TheApplication:
PROC[comm: CDSequencer.Command, text: Rope.
ROPE←
NIL]
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.
ROPE←
NIL, tipBase: Rope.
ROPE←
NIL, useFor: Rope.
ROPE←
NIL, x:
REF←
NIL, 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: BOOL←TRUE];
CallWithResource:
PROC [proc:
PROC[CDSequencer.Command], comm: CDSequencer.Command, resource:
REF, abortFlag:
REF
BOOL←
NIL]
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
END.