Init:
PROC[] =
BEGIN
error: BOOL ← FALSE;
tmp: REF CD.ObjectProcs ← NIL;
tmp ← CD.RegisterObjectType[atom ! CD.Error => error ← TRUE];
IF tmp = NIL THEN error ← TRUE;
IF ~error
THEN {
myLevel ← CD.NewLevel[NIL, $CheckMarkLevel];
objsProcs ← tmp;
}
ELSE {
error ← FALSE;
objsProcs ← CD.FetchObjectProcs[atom! CD.Error => {error ← TRUE; CONTINUE}];
myLevel ← CD.FetchLevel[NIL, $CheckMarkLevel ! CD.Error => {error ← TRUE; CONTINUE}];
IF error THEN objsProcs ← NIL;
};
IF objsProcs =
NIL
THEN {
TerminalIO.WriteRope["Error: Can't register check-mark object procs.\n"];
RETURN;
};
objsProcs.drawMe ← DrawCheckMark;
objsProcs.internalWrite ← WriteMark;
objsProcs.internalRead ← ReadMark;
objsProcs.describe ← DescribeMark;
objsProcs.hasChildren ← FALSE;
objsProcs.wireTyped ← FALSE;
CDSequencer.ImplementCommand[$AddCheckMark, AddCheckMark];
TilerMenu.Register["Add Check Mark", $AddCheckMark];
END;