private void CreateBuildPlan() { var factory = new BuildComponentFactory(); var quilt = factory.CreateBuildComponentQuilt(m_kitSpecification, m_design); PushPendingComponent(quilt); while (true) { // Go through all outstanding components and create build steps. // { var component = PullPendingComponent(); while (component != null) { ProcessComponent(component, factory); component = PullPendingComponent(); } } // Pull a build step and add inputs. // { var step = PullPendingStep(); if (step == null) { // No more steps. Processing complete. return; } step.ComputeInputs(factory); foreach (BuildComponent component in step.Consumes) { PushPendingComponent(component); } } } }
protected override IBuildComponent Clone(BuildComponentFactory factory) { return(factory.CreateBuildComponentQuilt(KitSpecification, Design)); }