CDErrors.mesa (part of ChipNDale)
Copyright © 1985 by Xerox Corporation. All rights reserved.
Created by Christian Jacobi, March 1, 1985 9:32:15 am PST
Last edited by: Christian Jacobi, September 19, 1986 11:12:28 am PDT
DIRECTORY
CD USING [Design, Object, Layer, Instance, Rect, Number, errorLayer],
Rope USING [ROPE];
CDErrors: CEDAR DEFINITIONS =
BEGIN
Error messages are rectangles of layer errorLayer. The signal name property of the application contains a message. The owner atom allows different instances to independent remove old messages.
errorLayer:
CD.Layer =
CD.errorLayer;
InstancePredicate: TYPE = PROC [inst: CD.Instance] RETURNS [yes: BOOL ← TRUE];
IncludeMessage:
PROC [design:
CD.Design, ob:
CD.Object,
rect:
CD.Rect ← all,
message: Rope.
ROPE ←
NIL,
owner:
ATOM ←
NIL
--shoud have been registered as property to avoid conflicts
]
RETURNS [done:
BOOL, into:
CD.Object, inst:
CD.Instance];
-- Include an error message relative to an arbitrary object ob.
-- If ob is not a cell, the message is actually placed into any other conveniant location.
-- into: describes where error message may be found; NIL: if not done or top layer.
-- inst: can be used for further properties...
-- This procedure may make internal use of CDMarks.GetNewMark.
-- rect will be clipped to ob's size
all: PRIVATE CD.Rect = [FIRST[CD.Number], FIRST[CD.Number], LAST[CD.Number], LAST[CD.Number]];
RemoveMessages:
PROC [design:
CD.Design, ob:
CD.Object,
owner:
ATOM ←
NIL,
alsoOthers:
BOOL ←
FALSE,
removeIt: InstancePredicate←
NIL
--NIL means TRUE
];
-- Remove all error messages (with this owner; NIL means all owners) denoting ob.
-- alsoOthers: messages pointing to other objects but residing in ob will also be removed.
-- removeIt: client may specify a proc to determine if a message should be removed.
-- If ob (or the cell containing the message rectangle) has been renamed, this
-- procedure might not find and remove all error messages.
-- This procedure may cause cells to be repositioned.
RemoveAllMessages:
PROC [design:
CD.Design, owner:
ATOM, removeIt: InstancePredicate ←
NIL];
-- Remove all error messages with this owner from of the whole design.
-- removeIt: client may specify a proc to determine if a message should be removed.
-- This procedure may cause cells to be repositioned.
END.