<> <> <> <> DIRECTORY CD, CDDirectory, CDGenerate, Rope; PW: CEDAR DEFINITIONS = BEGIN <> <> <<>> abutXClass: CD.ObjectClass; abutYClass: CD.ObjectClass; <<>> CreateAbutProc: TYPE = PROC [subObjects: LIST OF CD.Object _ NIL, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [newAbut: CD.Object]; CreateNewAbutX: CreateAbutProc; CreateNewAbutY: CreateAbutProc; <<>> EachSubObjectProc: TYPE = PROC [subObject: CD.Object, pos: CD.Position] RETURNS [quit: BOOL _ FALSE]; <> EnumerateSubObjects: PROC [abut: CD.Object, eachSubObject: EachSubObjectProc] RETURNS [BOOL]; <> <> <<>> CountSubObjects: PROC [abut: CD.Object] RETURNS [size: NAT]; <> <> <<>> AbutX: PROC [t1, t2, t3, t4, t5, t6: CD.Object _ NIL] RETURNS [obj: CD.Object]; <> AbutY: PROC [t1, t2, t3, t4, t5, t6: CD.Object _ NIL] RETURNS [obj: CD.Object]; <> AbutListX: PROC [objects: LIST OF CD.Object, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [obj: CD.Object]; <> AbutListY: PROC [objects: LIST OF CD.Object, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [obj: CD.Object]; <> <<>> MapFunction: PROC [function: PROC [INT, INT] RETURNS [CD.Object], lx: INT _ 0, ux: INT, ly: INT _ 0, uy: INT] RETURNS [CD.Object]; <> <<>> ArrayX: PROC [obj: CD.Object, nx: INT _ 1] RETURNS [CD.Object]; <> ArrayY: PROC [obj: CD.Object, ny: INT _ 1] RETURNS [CD.Object]; <> Array: PROC [obj: CD.Object, nx, ny: INT _ 1] RETURNS [CD.Object]; <> <> <> <<>> rotationClass: CD.ObjectClass; RotationSpecific: TYPE = REF RotationSpecificRec; RotationSpecificRec: TYPE = RECORD [ ir: CD.Rect, -- for algorithmic efficiency obj: CD.Object, orientation: CD.Orientation ]; CreateRotation: PROC [obj: CD.Object, orientation: CD.Orientation, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [rotation: CD.Object]; <> FlipX: PROC [obj: CD.Object] RETURNS [CD.Object] = INLINE {RETURN [CreateRotation[obj, mirrorX]]}; <> FlipY: PROC [obj: CD.Object] RETURNS [CD.Object] = INLINE {RETURN [CreateRotation[obj, rotate180X]]}; <> Rot90: PROC [obj: CD.Object] RETURNS [CD.Object] = INLINE {RETURN [CreateRotation[obj, rotate90]]}; <> Rot180: PROC [obj: CD.Object] RETURNS [CD.Object] = INLINE {RETURN [CreateRotation[obj, rotate180]]}; Rot270: PROC [obj: CD.Object] RETURNS [CD.Object] = INLINE {RETURN [CreateRotation[obj, rotate270]]}; <> <> <<>> indirectClass: CD.ObjectClass; <<>> CreateIndirect: PROC [sourceObject: CD.Object, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [indirectObject: CD.Object]; <> <> <> <> <> <> <<>> lazyClass: CD.ObjectClass; <<>> CreateProc: TYPE = PROC [info: REF] RETURNS [obj: CD.Object]; CreateLazy: PROC [info: REF, createProc: CreateProc, bbox, ir: CD.Rect, name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [newLazy: CD.Object]; <> <> <> <> <<>> tilingClass: CD.ObjectClass; CreateTiling: PROC [sizeX, sizeY: NAT, tiles: PROC [x, y: NAT] RETURNS [CD.Object], name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [tiling: CD.Object]; <> <> EachTileProc: TYPE = PROC [x, y: NAT, tile: CD.Object, pos: CD.Position] RETURNS [quit: BOOL _ FALSE]; <> <<>> EnumerateTiles: PROC [tiling: CD.Object, eachTile: EachTileProc] RETURNS [BOOL]; <> <<>> GetTilingSize: PROC [tiling: CD.Object] RETURNS [sizeX, sizeY: NAT]; <> GetTile: PROC [tiling: CD.Object, x, y: NAT] RETURNS [tile: CD.Object]; <> <> CreateCell: PROC [instances: CD.InstanceList, ir: CD.Rect _ [0, 0, -1, -1], name: Rope.ROPE _ NIL, props: CD.PropList _ NIL] RETURNS [CD.Object]; <> SetName: PROC [obj: CD.Object, name: Rope.ROPE _ NIL]; <> Name: PROC [obj: CD.Object] RETURNS [name: Rope.ROPE]; <> <> <<>> Get: PROC [design: CD.Design, name: Rope.ROPE] RETURNS [obj: CD.Object]; <> <> Flatten: PROC [cell: CD.Object] RETURNS [new: CD.Object]; <> <> <> GeneratorProc: TYPE = CDGenerate.GeneratorProc; RegisterGenerator: PROC [generator: GeneratorProc, name: Rope.ROPE]; <> RegisterProp: PROC [prop: ATOM, copy: BOOL _ FALSE, flushOnEdit: BOOL _ FALSE] RETURNS [sameAtom: ATOM]; <> RegisterClass: PROC [objectType: ATOM, expand: CDDirectory.ExpandProc, enumerateChildObjects: CDDirectory.EnumerateChildObjectsProc _ NIL, replaceDirectChilds: CDDirectory.ReplaceDChildsProc _ NIL, interestRect: CD.RectProc _ NIL, drawMe, quickDrawMe, showMeSelected: CD.DrawProc _ NIL] RETURNS [objectClass: CD.ObjectClass]; <> <> <> OpenDesign: PROC [fileName: Rope.ROPE] RETURNS [design: CD.Design]; <> <<>> Draw: PROC [obj: CD.Object, technologyName: ATOM _ NIL] RETURNS [design: CD.Design]; <> <<>> END.