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 = { sizeOfFirstX: INT = TokenIO.ReadInt[h]; sizeOfFirstY: INT = TokenIO.ReadInt[h]; lev: CD.Layer = CDIO.ReadLayer[h]; count: INT = TokenIO.ReadInt[h]; offsetX: INT = TokenIO.ReadInt[h]; offsetY: INT = TokenIO.ReadInt[h]; lengIncrement: INT = TokenIO.ReadInt[h]; RETURN [ CreateBusCell[ design: CDIO.DesignInReadOperation[h], sizeOfFirst: [sizeOfFirstX, sizeOfFirstY], lev: lev, count: count, offset: [offsetX, offsetY], lengIncrement: lengIncrement ]]; }; CreateBusCell: PUBLIC PROC [design: CD.Design, sizeOfFirst: CD.Position, lev: CD.Layer, count: NAT, offset: CD.Position, lengIncrement: CD.Number_0] RETURNS [CD.Object] = { 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, trans: [pos, original], mode: dontResize]; ENDLOOP; [] _ CDCells.SetInterestRect[NIL, co,, dontResize]; [] _ CDCells.ResizeCell[NIL, co]; IF design#NIL THEN [] _ CDDirectory.Include[design, co, "-bus-"]; RETURN [co]; }; [] _ CD.RegisterObjectClass[$Bus, [internalRead: ReadBus]]; END. €CDBusCellsImpl.mesa (part of ChipNDale) Copyright c 1983, 1985, 1986 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, June 24, 1983 4:58 pm Last edited by: Christian Jacobi, October 22, 1986 10:58:22 am PDT --======================================================== --for compatibility only --======================================================== Κ©˜codešœ)™)Kšœ Οmœ=™HKšœ3™3K™B—K˜šΟk ˜ Kšžœ˜K˜ Kšœ ˜ K˜K˜ Kšžœ˜K˜Kšœ˜K˜—šΟbœžœžœ˜Kšžœžœ"žœ˜BKšžœ˜—Kšž˜K˜Kšœ:™:Kšœ™K˜šΠbnœžœ˜ Kšœžœ˜'Kšœžœ˜'Kšœžœ žœ˜"Kšœžœ˜ Kšœ žœ˜"Kšœ žœ˜"Kšœžœ˜(šžœ˜Kšœžœ˜'Kšœ*˜*Kšœ ˜ Kšœ ˜ Kšœ˜Kšœ˜Kšœ˜—Kšœ˜—K˜Kšœ:™:K˜šΟn œžœžœ žœžœžœžœ žœžœ žœžœ ˜¬Kšœžœ˜Kšœžœ˜Kšœžœ$˜*Kšœžœ ˜Kšžœ žœ˜Kšžœ žœ˜Kšžœ žœ˜7Kšžœ žœ˜1Kšžœ žœ˜1šžœžœžœ ž˜Kšœžœ&˜-Kšœ&˜&Kšœ˜Kšœžœ?˜aKšžœ˜—Kšœžœ˜3Kšœžœ˜!Kšžœžœžœ/˜AKšžœ˜ Kšœ˜—K˜Kšœžœ4˜;Kšžœ˜K˜K˜—…—˜ Α