<> <> <> <> <<>> <> <<>> DIRECTORY CD, CDDirectory, HashTable; PWObjects: CEDAR DEFINITIONS = BEGIN <> <> <<>> abutXClass: CD.ObjectClass; abutYClass: CD.ObjectClass; <<>> CreateAbutProc: TYPE = PROC [subObjects: LIST OF CD.Object _ NIL] RETURNS [newAbut: CD.Object]; CreateNewAbutX: CreateAbutProc; CreateNewAbutY: CreateAbutProc; <<>> GetAbutSubObjects: PROC [abut: CD.Object] RETURNS [subObjects: LIST OF CD.Object]; <> <<>> GetLocationOfFirstInstance: PRIVATE PROC [abut: CD.Object] RETURNS [location: CD.Position _ [0, 0]]; <> <> <> <> <> <<>> routingClass: CD.ObjectClass; <<>> RoutingSpecific: TYPE = REF RoutingRep; -- Type of routing.specificRef, when routing is of class routingClass RoutingRep: TYPE = RECORD [ ir: CD.Rect, -- interest rect nodes: SEQUENCE size: NAT OF Node ]; Node: TYPE = REF NodeRep; NodeRep: TYPE = RECORD [ properties: CD.PropList _ NIL, geometry: SEQUENCE size: NAT OF PlacedObject]; PlacedObject: TYPE = RECORD [object: CD.Object, position: CD.Position]; CreateRouting: PROC [ir: CD.Rect, nodes: LIST OF Node] RETURNS [routing: CD.Object]; <> <> <<>> CreateNode: PROC [geometry: LIST OF PlacedObject, properties: CD.PropList _ NIL] RETURNS [node: Node]; <> <<>> CreateNodes: PROC [table: HashTable.Table] RETURNS [nodes: LIST OF Node]; <> <> <> <> <> <<>> indirectClass: CD.ObjectClass; <<>> CreateIndirect: PROC [sourceObject: CD.Object] RETURNS [indirectObject: CD.Object]; <> <> <> <> <> <> <<>> lazyClass: CD.ObjectClass; <<>> CreateProc: TYPE = PROC [info: REF] RETURNS [obj: CD.Object]; CreateLazy: PROC [info: REF, createProc: CreateProc] RETURNS [newLazy: CD.Object]; <> <> RegisterClass: PROC [objectType: ATOM, expand: CDDirectory.ExpandProc, enumerateChildObjects: CDDirectory.EnumerateChildObjectsProc _ NIL, replaceDirectChilds: CDDirectory.ReplaceDChildsProc _ NIL] RETURNS [objectClass: CD.ObjectClass]; <> <> END. <<>>