DIRECTORY Core, Rope; RoseBind: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; classKey: ATOM-- = $RoseClassName--; argsKey: ATOM-- = $RoseArgs--; variableWire: ATOM-- = $RoseVariableWire--; switchWire: ATOM-- = $RoseSwitchWire--; complexDrive: ATOM-- = $RoseComplexDrive--; simpleDrive: ATOM-- = $RoseSimpleDrive--; testerSwitchWire: ATOM-- = $RoseTesterSwitchWire--; testerComplexDrive: ATOM-- = $RoseTesterComplexDrive--; testerSimpleDrive: ATOM-- = $RoseTesterSimpleDrive--; BehaviorClass: TYPE = REF BehaviorClassRec; BehaviorClassRec: TYPE; EnsureBehaviorClass: PROC [name: ROPE, publicWirePrototype: Core.Wire, moduleNameRoot: ROPE _ NIL] RETURNS [bc: BehaviorClass]; END. €RoseBind.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Barth, September 26, 1985 11:55:39 am PDT Spreitzer, September 29, 1985 1:51:15 pm PDT Theory This interface talks about linking behavior to structure. The interface RoseBehavior has details about behavior. Every cell type usable by Rosemary as a leaf is in some behavior class, given by the cell type's RoseBind.classKey property, if it exists; otherwise it is derived from the cell type. There are two Cedar modules that implement the details of a behavior class (they may implement the details of others too). The name of the Cedar module which the implementor of the cell class behavior writes is derived from the class module name root by appending "RoseDetails". The name of the Cedar module which the Rosemary translator writes, the private implementation module, is derived from the class module name root by appending "RosePrivate". The module that implements a behavior class is assumed to depend on a Cedar definitions module, whose name is derived from the class module name root by appending "RoseDefs". The definitions module and the private implementation module are generated by the Rosemary translator, and depend only on the interface information in the public wire prototype of the behavior class. The details of the generation are documented in RoseBehavior.mesa. [Artwork node; type 'ArtworkInterpress on' to command tool] The cell types in a behavior class are distinguished from one another by their behavior characteristics, which are found on the RoseBind.argsKey property. Implementation A NIL moduleNameRoot means to use the behavior class name. Êt– "cedar" style˜codešœ ™ Kšœ Ïmœ1™