@@ -6,6 +6,8 @@ export namespace ElkModel {
6
6
[ edgeId : string ] : string ;
7
7
}
8
8
export let wireNameLookup : WireNameLookup = { } ;
9
+ export let dummyNum : number = 0 ;
10
+ export let edgeIndex : number = 0 ;
9
11
10
12
export interface WirePoint {
11
13
x : number ;
@@ -83,29 +85,29 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
83
85
const children : ElkModel . Cell [ ] = module . getNodes ( ) . map ( ( n ) => {
84
86
return n . buildElkChild ( ) ;
85
87
} ) ;
86
- let i : number = 0 ;
87
- let dummies : number = 0 ;
88
+ ElkModel . edgeIndex = 0 ;
89
+ ElkModel . dummyNum = 0 ;
88
90
const edges : ElkModel . Edge [ ] = _ . flatMap ( module . getWires ( ) , ( w ) => {
89
91
// at least one driver and at least one rider and no laterals
90
92
if ( w . drivers . length > 0 && w . riders . length > 0 && w . laterals . length === 0 ) {
91
93
const ret : ElkModel . Edge [ ] = [ ] ;
92
- i = route ( w . drivers , w . riders , i , ret ) ;
94
+ route ( w . drivers , w . riders , ret ) ;
93
95
return ret ;
94
96
// at least one driver or rider and at least one lateral
95
97
} else if ( w . drivers . concat ( w . riders ) . length > 0 && w . laterals . length > 0 ) {
96
98
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 ) ;
99
101
return ret ;
100
102
// at least two drivers and no riders
101
103
} else if ( w . riders . length === 0 && w . drivers . length > 1 ) {
102
104
// 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 ;
105
107
const dummyEdges : ElkModel . Edge [ ] = w . drivers . map ( ( driver ) => {
106
108
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 ;
109
111
const d : ElkModel . Edge = {
110
112
id,
111
113
source : sourceParentKey ,
@@ -121,12 +123,12 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
121
123
// at least one rider and no drivers
122
124
} else if ( w . riders . length > 1 && w . drivers . length === 0 ) {
123
125
// 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 ;
126
128
const dummyEdges : ElkModel . Edge [ ] = w . riders . map ( ( rider ) => {
127
129
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 ;
130
132
const edge : ElkModel . Edge = {
131
133
id,
132
134
source : dummyId ,
@@ -143,8 +145,8 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
143
145
const sourceParentKey : string = source . parentNode . Key ;
144
146
const lateralEdges : ElkModel . Edge [ ] = w . laterals . slice ( 1 ) . map ( ( lateral ) => {
145
147
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 ;
148
150
const edge : ElkModel . Edge = {
149
151
id,
150
152
source : sourceParentKey ,
@@ -167,8 +169,8 @@ export function buildElkGraph(module: FlatModule): ElkModel.Graph {
167
169
} ;
168
170
}
169
171
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 ) ;
172
174
const child : ElkModel . Cell = {
173
175
id : dummyId ,
174
176
width : 0 ,
@@ -184,14 +186,14 @@ function addDummy(children: ElkModel.Cell[], dummyNum: number) {
184
186
return dummyId ;
185
187
}
186
188
187
- function route ( sourcePorts , targetPorts , edgeIndex : number , edges : ElkModel . Edge [ ] ) : number {
189
+ function route ( sourcePorts , targetPorts , edges : ElkModel . Edge [ ] ) {
188
190
const newEdges : ElkModel . Edge [ ] = ( _ . flatMap ( sourcePorts , ( sourcePort ) => {
189
191
const sourceParentKey : string = sourcePort . parentNode . key ;
190
192
const sourceKey : string = sourceParentKey + '.' + sourcePort . key ;
191
193
return targetPorts . map ( ( targetPort ) => {
192
194
const targetParentKey : string = targetPort . parentNode . key ;
193
195
const targetKey : string = targetParentKey + '.' + targetPort . key ;
194
- const id : string = 'e' + edgeIndex ;
196
+ const id : string = 'e' + ElkModel . edgeIndex ;
195
197
const edge : ElkModel . ExtendedEdge = {
196
198
id,
197
199
sources : [ sourceKey ] ,
@@ -201,10 +203,9 @@ function route(sourcePorts, targetPorts, edgeIndex: number, edges: ElkModel.Edge
201
203
if ( sourcePort . parentNode . type !== '$dff' ) {
202
204
edge . layoutOptions = { 'org.eclipse.elk.layered.priority.direction' : 10 } ;
203
205
}
204
- edgeIndex += 1 ;
206
+ ElkModel . edgeIndex += 1 ;
205
207
return edge ;
206
208
} ) ;
207
209
} ) ) ;
208
210
edges . push . apply ( edges , newEdges ) ;
209
- return edgeIndex ;
210
211
}
0 commit comments