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