DIRECTORY CD, CDBasics, CDBusCells, CDCells, CDDirectory, CDIO, CDRects, TokenIO; CDBusCellsImpl: CEDAR PROGRAM IMPORTS CD, CDBasics, CDCells, CDDirectory, CDIO, CDRects, TokenIO EXPORTS CDBusCells = BEGIN ReadBus: CD.InternalReadProc --PROC [] RETURNS [Object]-- = BEGIN sizeOfFirstX: INT = TokenIO.ReadInt[]; sizeOfFirstY: INT = TokenIO.ReadInt[]; lev: CD.Layer = CDIO.ReadLayer[]; count: INT = TokenIO.ReadInt[]; offsetX: INT = TokenIO.ReadInt[]; offsetY: INT = TokenIO.ReadInt[]; lengIncrement: INT = TokenIO.ReadInt[]; RETURN [ CreateBusCell[ design: CDIO.DesignInReadOperation[], sizeOfFirst: [sizeOfFirstX, sizeOfFirstY], lev: lev, count: count, offset: [offsetX, offsetY], lengIncrement: lengIncrement ]]; END; pForBusses: REF CD.ObjectClass; Init: PROC [] = BEGIN pForBusses _ CD.RegisterObjectClass[$Bus]; pForBusses.internalRead _ ReadBus; END; CreateBusCell: PUBLIC PROC [design: CD.Design, sizeOfFirst: CD.Position, lev: CD.Layer, count: NAT, offset: CD.Position, lengIncrement: CD.Number_0] RETURNS [CD.Object] = BEGIN sz: CD.Position _ sizeOfFirst; pos: CD.Position _ [0, 0]; co: CD.Object _ CDCells.CreateEmptyCell[]; count _ MAX[count, 1]; IF sz.x<=0 THEN sz.x_1; IF sz.y<=0 THEN sz.y_1; IF sz.y+(count-1)*lengIncrement<0 THEN lengIncrement_0; IF offset.x<0 THEN {pos.x _ -offset.x*(count-1)}; IF offset.y<0 THEN {pos.y _ -offset.y*(count-1)}; FOR i: NAT IN [1..count] DO rec: CD.Object _ CDRects.CreateRect[sz, lev]; pos _ CDBasics.AddPoints[pos, offset]; sz.y _ sz.y+lengIncrement; [] _ CDCells.IncludeOb[design: NIL, cell: co, ob: rec, position: pos, cellCSystem: originCoords, obCSystem: interrestCoords, mode: dontPropagate ]; ENDLOOP; [] _ CDCells.RepositionCell[co, NIL]; IF design#NIL THEN [] _ CDDirectory.Include[design, co, "-bus-"]; RETURN [co]; END; Init[]; END. nCDBusCellsImpl.mesa (part of ChipNDale) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, June 24, 1983 4:58 pm last edited Christian Jacobi, September 19, 1985 2:34:24 pm PDT --======================================================== --for compatibility only --======================================================== ʘšœ)™)Jšœ Ïmœ7™BJšœ+™+Jšœ?™?—J˜šÏk ˜ Jšžœ˜J˜ Jšœ ˜ J˜J˜ Jšžœ˜J˜Jšœ˜J˜—šÏbœžœžœ˜Jšžœžœ"žœ˜BJšžœ˜—Jšž˜J˜Jšœ:™:Jšœ™J˜šŸœžœÏcœ˜;Jšž˜Jšœžœ˜&Jšœžœ˜&Jšœžœ žœ ˜!Jšœžœ˜Jšœ žœ˜!Jšœ žœ˜!Jšœžœ˜'šžœ˜Jšœžœ˜&Jšœ*˜*Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜—Jšžœ˜—J˜Jšœ žœ ˜J˜šÏnœžœ˜Jšž˜Jšœ žœ˜*Jšœ"˜"Jšžœ˜—Jšœ:™:J˜š¡ œžœžœ žœžœžœžœ žœžœ žœžœ ˜ªJšž˜Jšœžœ˜Jšœžœ˜Jšœžœ$˜*Jšœžœ ˜Jšžœ žœ˜Jšžœ žœ˜Jšžœ žœ˜7Jšžœ žœ˜1Jšžœ žœ˜1šžœžœžœ ž˜Jšœžœ&˜-Jšœ&˜&Jšœ˜šœžœ˜#Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜J˜—Jšžœ˜—Jšœ žœ˜%Jšžœžœžœ/˜AJšžœ˜ Jšžœ˜—J˜J˜Jšžœ˜J˜J˜—…— –