@@ -6,6 +6,8 @@ export namespace ElkModel {
66 [ edgeId : string ] : string ;
77 }
88 export let wireNameLookup : WireNameLookup = { } ;
9+ export let dummyNum : number = 0 ;
10+ export let edgeIndex : number = 0 ;
911
1012 export interface WirePoint {
1113 x : number ;
@@ -83,29 +85,29 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
8385 const children : ElkModel . Cell [ ] = module . getNodes ( ) . map ( ( n ) => {
8486 return n . buildElkChild ( ) ;
8587 } ) ;
86- let i : number = 0 ;
87- let dummies : number = 0 ;
88+ ElkModel . edgeIndex = 0 ;
89+ ElkModel . dummyNum = 0 ;
8890 const edges : ElkModel . Edge [ ] = _ . flatMap ( module . getWires ( ) , ( w ) => {
8991 // at least one driver and at least one rider and no laterals
9092 if ( w . drivers . length > 0 && w . riders . length > 0 && w . laterals . length === 0 ) {
9193 const ret : ElkModel . Edge [ ] = [ ] ;
92- i = route ( w . drivers , w . riders , i , ret ) ;
94+ route ( w . drivers , w . riders , ret ) ;
9395 return ret ;
9496 // at least one driver or rider and at least one lateral
9597 } else if ( w . drivers . concat ( w . riders ) . length > 0 && w . laterals . length > 0 ) {
9698 const ret : ElkModel . Edge [ ] = [ ] ;
97- i = route ( w . drivers , w . laterals , i , ret ) ;
98- i = route ( w . laterals , w . riders , i , ret ) ;
99+ route ( w . drivers , w . laterals , ret ) ;
100+ route ( w . laterals , w . riders , ret ) ;
99101 return ret ;
100102 // at least two drivers and no riders
101103 } else if ( w . riders . length === 0 && w . drivers . length > 1 ) {
102104 // create a dummy node and add it to children
103- const dummyId : string = addDummy ( children , dummies ) ;
104- dummies += 1 ;
105+ const dummyId : string = addDummy ( children ) ;
106+ ElkModel . dummyNum += 1 ;
105107 const dummyEdges : ElkModel . Edge [ ] = w . drivers . map ( ( driver ) => {
106108 const sourceParentKey : string = driver . parentNode . Key ;
107- const id : string = 'e' + String ( i ) ;
108- i += 1 ;
109+ const id : string = 'e' + String ( ElkModel . edgeIndex ) ;
110+ ElkModel . edgeIndex += 1 ;
109111 const d : ElkModel . Edge = {
110112 id,
111113 source : sourceParentKey ,
@@ -121,12 +123,12 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
121123 // at least one rider and no drivers
122124 } else if ( w . riders . length > 1 && w . drivers . length === 0 ) {
123125 // create a dummy node and add it to children
124- const dummyId : string = addDummy ( children , dummies ) ;
125- dummies += 1 ;
126+ const dummyId : string = addDummy ( children ) ;
127+ ElkModel . dummyNum += 1 ;
126128 const dummyEdges : ElkModel . Edge [ ] = w . riders . map ( ( rider ) => {
127129 const sourceParentKey : string = rider . parentNode . Key ;
128- const id : string = 'e' + String ( i ) ;
129- i += 1 ;
130+ const id : string = 'e' + String ( ElkModel . edgeIndex ) ;
131+ ElkModel . edgeIndex += 1 ;
130132 const edge : ElkModel . Edge = {
131133 id,
132134 source : dummyId ,
@@ -143,8 +145,8 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
143145 const sourceParentKey : string = source . parentNode . Key ;
144146 const lateralEdges : ElkModel . Edge [ ] = w . laterals . slice ( 1 ) . map ( ( lateral ) => {
145147 const lateralParentKey : string = lateral . parentNode . Key ;
146- const id : string = 'e' + String ( i ) ;
147- i += 1 ;
148+ const id : string = 'e' + String ( ElkModel . edgeIndex ) ;
149+ ElkModel . edgeIndex += 1 ;
148150 const edge : ElkModel . Edge = {
149151 id,
150152 source : sourceParentKey ,
@@ -167,8 +169,8 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
167169 } ;
168170}
169171
170- function addDummy ( children : ElkModel . Cell [ ] , dummyNum : number ) {
171- const dummyId : string = '$d_' + String ( dummyNum ) ;
172+ function addDummy ( children : ElkModel . Cell [ ] ) {
173+ const dummyId : string = '$d_' + String ( ElkModel . dummyNum ) ;
172174 const child : ElkModel . Cell = {
173175 id : dummyId ,
174176 width : 0 ,
@@ -184,14 +186,14 @@ function addDummy(children: ElkModel.Cell[], dummyNum: number) {
184186 return dummyId ;
185187}
186188
187- function route ( sourcePorts , targetPorts , edgeIndex : number , edges : ElkModel . Edge [ ] ) : number {
189+ function route ( sourcePorts , targetPorts , edges : ElkModel . Edge [ ] ) {
188190 const newEdges : ElkModel . Edge [ ] = ( _ . flatMap ( sourcePorts , ( sourcePort ) => {
189191 const sourceParentKey : string = sourcePort . parentNode . key ;
190192 const sourceKey : string = sourceParentKey + '.' + sourcePort . key ;
191193 return targetPorts . map ( ( targetPort ) => {
192194 const targetParentKey : string = targetPort . parentNode . key ;
193195 const targetKey : string = targetParentKey + '.' + targetPort . key ;
194- const id : string = 'e' + edgeIndex ;
196+ const id : string = 'e' + ElkModel . edgeIndex ;
195197 const edge : ElkModel . ExtendedEdge = {
196198 id,
197199 sources : [ sourceKey ] ,
@@ -201,10 +203,9 @@ function route(sourcePorts, targetPorts, edgeIndex: number, edges: ElkModel.Edge
201203 if ( sourcePort . parentNode . type !== '$dff' ) {
202204 edge . layoutOptions = { 'org.eclipse.elk.layered.priority.direction' : 10 } ;
203205 }
204- edgeIndex += 1 ;
206+ ElkModel . edgeIndex += 1 ;
205207 return edge ;
206208 } ) ;
207209 } ) ) ;
208210 edges . push . apply ( edges , newEdges ) ;
209- return edgeIndex ;
210211}
0 commit comments