@@ -29,17 +29,18 @@ function simulateIntrinsic(
2929 return componentPin . type === "output" ;
3030 } ) ;
3131 switch ( componentId ) {
32- case intrinsics . notIntrinsicComponent . id : {
32+ case intrinsics . notIntrinsicComponentDefinition . component . id : {
3333 invariant ( pinIds . length === 2 ) ;
3434 const inputPinId = inputNodePins . find (
3535 ( nodePin : CCNodePin ) =>
36- nodePin . componentPinId === intrinsics . notIntrinsicComponentInputPin . id
36+ nodePin . componentPinId ===
37+ intrinsics . notIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
3738 ) ! . id ;
3839 const inputValue = inputValues . get ( inputPinId ) ;
3940 const outputPinId = outputNodePins . find (
4041 ( nodePin : CCNodePin ) =>
4142 nodePin . componentPinId ===
42- intrinsics . notIntrinsicComponentOutputPin . id
43+ intrinsics . notIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
4344 ) ! . id ;
4445 const outputValue = [ ] ;
4546 for ( const value of inputValue ! ) {
@@ -49,24 +50,24 @@ function simulateIntrinsic(
4950 outputValues . set ( outputPinId , outputValue ) ;
5051 return outputValues ;
5152 }
52- case intrinsics . andIntrinsicComponent . id : {
53+ case intrinsics . andIntrinsicComponentDefinition . component . id : {
5354 invariant ( pinIds . length === 3 ) ;
5455 const inputPinId0 = inputNodePins . find (
5556 ( nodePin : CCNodePin ) =>
5657 nodePin . componentPinId ===
57- intrinsics . andIntrinsicComponentInputPinA . id
58+ intrinsics . andIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
5859 ) ! . id ;
5960 const inputPinId1 = inputNodePins . find (
6061 ( nodePin : CCNodePin ) =>
6162 nodePin . componentPinId ===
62- intrinsics . andIntrinsicComponentInputPinB . id
63+ intrinsics . andIntrinsicComponentDefinition . inputPins [ 1 ] ! . id
6364 ) ! . id ;
6465 const inputValue0 = inputValues . get ( inputPinId0 ) ;
6566 const inputValue1 = inputValues . get ( inputPinId1 ) ;
6667 const outputPinId = outputNodePins . find (
6768 ( nodePin : CCNodePin ) =>
6869 nodePin . componentPinId ===
69- intrinsics . andIntrinsicComponentOutputPin . id
70+ intrinsics . andIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
7071 ) ! . id ;
7172 const outputValue = [ ] ;
7273 if ( inputValue0 ! . length !== inputValue1 ! . length ) {
@@ -79,21 +80,24 @@ function simulateIntrinsic(
7980 outputValues . set ( outputPinId , outputValue ) ;
8081 return outputValues ;
8182 }
82- case intrinsics . orIntrinsicComponent . id : {
83+ case intrinsics . orIntrinsicComponentDefinition . component . id : {
8384 invariant ( pinIds . length === 3 ) ;
8485 const inputPinId0 = inputNodePins . find (
8586 ( nodePin : CCNodePin ) =>
86- nodePin . componentPinId === intrinsics . orIntrinsicComponentInputPinA . id
87+ nodePin . componentPinId ===
88+ intrinsics . orIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
8789 ) ! . id ;
8890 const inputPinId1 = inputNodePins . find (
8991 ( nodePin : CCNodePin ) =>
90- nodePin . componentPinId === intrinsics . orIntrinsicComponentInputPinB . id
92+ nodePin . componentPinId ===
93+ intrinsics . orIntrinsicComponentDefinition . inputPins [ 1 ] ! . id
9194 ) ! . id ;
9295 const inputValue0 = inputValues . get ( inputPinId0 ) ;
9396 const inputValue1 = inputValues . get ( inputPinId1 ) ;
9497 const outputPinId = outputNodePins . find (
9598 ( nodePin : CCNodePin ) =>
96- nodePin . componentPinId === intrinsics . orIntrinsicComponentOutputPin . id
99+ nodePin . componentPinId ===
100+ intrinsics . orIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
97101 ) ! . id ;
98102 const outputValue = [ ] ;
99103 if ( inputValue0 ! . length !== inputValue1 ! . length ) {
@@ -106,24 +110,24 @@ function simulateIntrinsic(
106110 outputValues . set ( outputPinId , outputValue ) ;
107111 return outputValues ;
108112 }
109- case intrinsics . xorIntrinsicComponent . id : {
113+ case intrinsics . xorIntrinsicComponentDefinition . component . id : {
110114 invariant ( pinIds . length === 3 ) ;
111115 const inputPinId0 = inputNodePins . find (
112116 ( nodePin : CCNodePin ) =>
113117 nodePin . componentPinId ===
114- intrinsics . xorIntrinsicComponentInputPinA . id
118+ intrinsics . xorIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
115119 ) ! . id ;
116120 const inputPinId1 = inputNodePins . find (
117121 ( nodePin : CCNodePin ) =>
118122 nodePin . componentPinId ===
119- intrinsics . xorIntrinsicComponentInputPinB . id
123+ intrinsics . xorIntrinsicComponentDefinition . inputPins [ 1 ] ! . id
120124 ) ! . id ;
121125 const inputValue0 = inputValues . get ( inputPinId0 ) ;
122126 const inputValue1 = inputValues . get ( inputPinId1 ) ;
123127 const outputPinId = outputNodePins . find (
124128 ( nodePin : CCNodePin ) =>
125129 nodePin . componentPinId ===
126- intrinsics . xorIntrinsicComponentOutputPin . id
130+ intrinsics . xorIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
127131 ) ! . id ;
128132 const outputValue = [ ] ;
129133 if ( inputValue0 ! . length !== inputValue1 ! . length ) {
@@ -136,18 +140,18 @@ function simulateIntrinsic(
136140 outputValues . set ( outputPinId , outputValue ) ;
137141 return outputValues ;
138142 }
139- case intrinsics . inputIntrinsicComponent . id : {
143+ case intrinsics . inputIntrinsicComponentDefinition . component . id : {
140144 invariant ( pinIds . length === 2 ) ;
141145 const inputPinId = inputNodePins . find (
142146 ( nodePin : CCNodePin ) =>
143147 nodePin . componentPinId ===
144- intrinsics . inputIntrinsicComponentInputPin . id
148+ intrinsics . inputIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
145149 ) ! . id ;
146150 const inputValue = inputValues . get ( inputPinId ) ;
147151 const outputPinId = outputNodePins . find (
148152 ( nodePin : CCNodePin ) =>
149153 nodePin . componentPinId ===
150- intrinsics . inputIntrinsicComponentOutputPin . id
154+ intrinsics . inputIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
151155 ) ! . id ;
152156 const outputValue = [ ] ;
153157 for ( const value of inputValue ! ) {
@@ -157,46 +161,46 @@ function simulateIntrinsic(
157161 outputValues . set ( outputPinId , outputValue ) ;
158162 return outputValues ;
159163 }
160- case intrinsics . fourBitsIntrinsicComponent . id : {
161- invariant ( node . variablePins ) ;
162- const outputValue = node . variablePins . flatMap (
163- ( variablePin ) => inputValues . get ( variablePin ) !
164- ) ;
165- const outputMap = new Map < CCNodePinId , SimulationValue > ( ) ;
166- const outputPinId = outputNodePins . find (
164+ case intrinsics . aggregateIntrinsicComponentDefinition . component . id : {
165+ const outputPin = outputNodePins . find (
167166 ( nodePin : CCNodePin ) =>
168167 nodePin . componentPinId ===
169- intrinsics . fourBitsIntrinsicComponentOutputPin . id
170- ) ! . id ;
171- outputMap . set ( outputPinId , outputValue ) ;
168+ intrinsics . aggregateIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
169+ ) ! ;
170+ const outputValue = new Array < boolean > (
171+ outputPin . userSpecifiedBitWidth !
172+ ) . fill ( false ) ;
173+ for ( const pin of inputNodePins ) {
174+ outputValue [ pin . order ] = inputValues . get ( pin . id ) ! [ pin . order ] ! ;
175+ }
176+ const outputMap = new Map < CCNodePinId , SimulationValue > ( ) ;
177+ outputMap . set ( outputPin . id , outputValue ) ;
172178 return outputMap ;
173179 }
174- case intrinsics . distributeFourBitsIntrinsicComponent . id : {
180+ case intrinsics . decomposeIntrinsicComponentDefinition . component . id : {
175181 const inputPinId = inputNodePins . find (
176182 ( nodePin : CCNodePin ) =>
177183 nodePin . componentPinId ===
178- intrinsics . distributeFourBitsIntrinsicComponentInputPin . id
184+ intrinsics . decomposeIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
179185 ) ! . id ;
180186 const inputs = inputValues . get ( inputPinId ) ! ;
181187 const outputMap = new Map < CCNodePinId , SimulationValue > ( ) ;
182- invariant ( node . variablePins ) ;
183- invariant ( node . variablePins . length === inputs . length ) ;
184- for ( let i = 0 ; i < node . variablePins . length ; i += 1 ) {
185- outputMap . set ( node . variablePins [ i ] ! , [ inputs [ i ] ! ] ) ;
188+ for ( const pin of outputNodePins ) {
189+ outputMap . set ( pin . id , [ inputs [ pin . order ] ! ] ) ;
186190 }
187191 return outputMap ;
188192 }
189- case intrinsics . flipFlopIntrinsicComponent . id : {
193+ case intrinsics . flipFlopIntrinsicComponentDefinition . component . id : {
190194 invariant ( pinIds . length === 2 ) ;
191195 const inputPinId = inputNodePins . find (
192196 ( nodePin : CCNodePin ) =>
193197 nodePin . componentPinId ===
194- intrinsics . flipFlopIntrinsicComponentInputPin . id
198+ intrinsics . flipFlopIntrinsicComponentDefinition . inputPins [ 0 ] ! . id
195199 ) ! . id ;
196200 const outputPinId = outputNodePins . find (
197201 ( nodePin : CCNodePin ) =>
198202 nodePin . componentPinId ===
199- intrinsics . flipFlopIntrinsicComponentOutputPin . id
203+ intrinsics . flipFlopIntrinsicComponentDefinition . outputPins [ 0 ] ! . id
200204 ) ! . id ;
201205 const outputValues = new Map < CCNodePinId , SimulationValue > ( ) ;
202206
@@ -238,7 +242,7 @@ function simulateNode(
238242 const node = store . nodes . get ( nodeId ) ! ;
239243 const component = store . components . get ( node . componentId ) ;
240244 if ( ! component ) throw new Error ( `Component ${ component } is not defined.` ) ;
241- if ( component . isIntrinsic ) {
245+ if ( component . intrinsicType ) {
242246 const outputValues = simulateIntrinsic (
243247 store ,
244248 nodeId ,
@@ -349,13 +353,17 @@ function simulateNode(
349353 } ) ! ;
350354 outputValues . set ( parentNodePin . id , outputValue ) ;
351355 }
352- if ( currentComponentId === intrinsics . flipFlopIntrinsicComponent . id ) {
356+ if (
357+ currentComponentId ===
358+ intrinsics . flipFlopIntrinsicComponentDefinition . component . id
359+ ) {
353360 visitedFlipFlops . add ( currentNodeId ) ;
354361 }
355362 }
356363 }
357364 } else if (
358- currentComponentId === intrinsics . flipFlopIntrinsicComponent . id &&
365+ currentComponentId ===
366+ intrinsics . flipFlopIntrinsicComponentDefinition . component . id &&
359367 ! visitedFlipFlops . has ( currentNodeId )
360368 ) {
361369 const frame = previousFrame
@@ -396,7 +404,10 @@ function simulateNode(
396404 } ) ! ;
397405 outputValues . set ( parentNodePin . id , outputValue ) ;
398406 }
399- if ( currentComponentId === intrinsics . flipFlopIntrinsicComponent . id ) {
407+ if (
408+ currentComponentId ===
409+ intrinsics . flipFlopIntrinsicComponentDefinition . component . id
410+ ) {
400411 visitedFlipFlops . add ( currentNodeId ) ;
401412 }
402413 }
@@ -487,7 +498,7 @@ export default function simulateComponent(
487498 ) {
488499 const frame = ( ( ) => {
489500 if ( ! previousFrame ) return null ;
490- if ( currentComponent . isIntrinsic ) {
501+ if ( currentComponent . intrinsicType ) {
491502 return previousFrame ;
492503 }
493504 return previousFrame . nodes . get ( currentNodeId ) ! . child ;
@@ -532,7 +543,10 @@ export default function simulateComponent(
532543 } ) ! ;
533544 outputValues . set ( parentComponentPin . id , outputValue ) ;
534545 }
535- if ( currentComponentId === intrinsics . flipFlopIntrinsicComponent . id ) {
546+ if (
547+ currentComponentId ===
548+ intrinsics . flipFlopIntrinsicComponentDefinition . component . id
549+ ) {
536550 visitedFlipFlops . add ( currentNodeId ) ;
537551 }
538552 }
0 commit comments