DIRECTORY CDProperties, CDViewerBase, ViewerClasses; CDViewerBaseImpl: CEDAR PROGRAM IMPORTS CDProperties EXPORTS CDViewerBase = BEGIN getList: CDProperties.PropRef _ CDProperties.InitPropRef[]; setList: CDProperties.PropRef _ CDProperties.InitPropRef[]; ImplementGetProc: PUBLIC PROC [op: ATOM, proc: ViewerClasses.GetProc] = { ENABLE UNWIND => NULL; val: REF = IF proc=NIL THEN NIL ELSE NEW[ViewerClasses.GetProc_proc]; IF proc=GetProc THEN ERROR; --don't do that, it causes infinite recursion CDProperties.PutProp[getList, op, val] }; ImplementSetProc: PUBLIC PROC [op: ATOM, proc: ViewerClasses.SetProc] = { ENABLE UNWIND => NULL; val: REF = IF proc=NIL THEN NIL ELSE NEW[ViewerClasses.SetProc_proc]; IF proc=SetProc THEN ERROR; --don't do that, it causes infinite recursion CDProperties.PutProp[setList, op, val] }; GetProc: PUBLIC ViewerClasses.GetProc = { WITH CDProperties.GetPropFromList[getList^, op] SELECT FROM gp: REF ViewerClasses.GetProc => RETURN [gp[self, op]]; ENDCASE => RETURN [NIL]; }; SetProc: PUBLIC ViewerClasses.SetProc = { WITH CDProperties.GetPropFromList[setList^, op] SELECT FROM sp: REF ViewerClasses.SetProc => sp[self, data, finalise, op]; ENDCASE => NULL; }; END. ÒCDViewerBaseImpl.mesa Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, October 13, 1983 2:51 pm last edited by Christian Jacobi, November 13, 1985 11:15:38 am PST ʘJ˜šœ™Jšœ Ïmœ7™BJšœ.™.JšœB™B—J˜šÏk ˜ Jšœ ˜ Jšœ ˜ Jšœ˜J˜—šÏnœžœžœ˜ Jšžœ ˜Jšžœ˜—Jšž˜J˜Jšœ;˜;Jšœžœ˜;J˜šŸœžœžœžœ"˜IJšžœžœžœ˜Jšœžœžœžœžœžœžœžœ˜EJšžœžœžœÏc-˜IJšœ&˜&Jšœ˜—J˜šŸœžœžœžœ"˜IJšžœžœžœ˜Jšœžœžœžœžœžœžœžœ˜EJšžœžœžœ -˜IJšœ&˜&Jšœ˜—J˜šÏbœžœ˜)šžœ,žœž˜;Jšœžœžœ˜7Jšžœžœžœ˜—J˜—J˜š¡œžœ˜)šžœ,žœž˜;Jšœžœ7˜>Jšžœžœ˜—J˜—J˜Jšžœ˜J˜J˜—…—¾£