// Copyright (C) 2010 by Yan Huang package YaoGC; public abstract class CompositeCircuit extends Circuit { protected Circuit[] subCircuits; protected int nSubCircuits; public CompositeCircuit(int inDegree, int outDegree, int nSubCircuits, String name) { super(inDegree, outDegree, name); this.nSubCircuits = nSubCircuits; subCircuits = new Circuit[nSubCircuits]; } public void build() throws Exception { createInputWires(); createSubCircuits(); connectWires(); defineOutputWires(); fixInternalWires(); } protected void createSubCircuits() throws Exception { for (int i = 0; i < nSubCircuits; i++) subCircuits[i].build(); } abstract protected void connectWires() throws Exception; abstract protected void defineOutputWires(); protected void fixInternalWires() { } protected void compute() { } protected void execute(boolean evaluate) { } }