1 /*
2  * Copyright (c) 2021 Helmut Neemann.
3  * Use of this source code is governed by the GPL v3 license
4  * that can be found in the LICENSE file.
5  */
6 package de.neemann.digital.hdl.model2.optimizations;
7 
8 import de.neemann.digital.hdl.model2.HDLCircuit;
9 import de.neemann.digital.hdl.model2.HDLException;
10 import de.neemann.digital.hdl.model2.HDLNode;
11 import de.neemann.digital.hdl.model2.HDLNodeAssignment;
12 import de.neemann.digital.hdl.model2.expression.ExpressionOptimizer;
13 
14 /**
15  * Optimization which addresses the used expressions.
16  */
17 public class OptimizeExpressions implements Optimization {
18 
19     private final ExpressionOptimizer eo;
20 
21     /**
22      * Creates a new instance
23      *
24      * @param eo the expression optimizer to use.
25      */
OptimizeExpressions(ExpressionOptimizer eo)26     public OptimizeExpressions(ExpressionOptimizer eo) {
27         this.eo = eo;
28     }
29 
30     @Override
optimize(HDLCircuit circuit)31     public void optimize(HDLCircuit circuit) throws HDLException {
32         for (HDLNode n : circuit.getNodes()) {
33             if (n instanceof HDLNodeAssignment) {
34                 HDLNodeAssignment a = (HDLNodeAssignment) n;
35                 a.optimize(eo);
36             }
37         }
38     }
39 }
40