public override bool Equals(object obj) { ParameterChooser c = obj as ParameterChooser; if (c == null) { return(false); } return(planIndex == c.planIndex && resultIndex == c.resultIndex); }
/// <summary> /// Checks that the fparameterChoosers mapping is consistent /// with the result tuples of the parent plans and the /// parameters of the transformer. /// </summary> public void RepOk() { for (int i = 0; i < parameterChoosers.Length; i++) { ParameterChooser c = parameterChoosers[i]; Util.Assert(c.planIndex >= 0 && c.planIndex < parentPlans.Length); Util.Assert(c.resultIndex >= 0 && c.resultIndex < parentPlans[c.planIndex].transformer.TupleTypes.Length); Util.Assert(parentPlans[c.planIndex].transformer.TupleTypes[c.resultIndex] .Equals(transformer.ParameterTypes[i])); } }
/// <summary> /// Creates a Plan. /// </summary> /// <param name="transfomer">The state transformer that this plan represents.</param> /// <param name="parentPlans">The parent plans for this plan.</param> /// <param name="parameterChoosers">The parameter choosers for the parent plans.</param> /// <param name="resultTypes">The types (and number of) results that executing this plan yields.</param> public Plan(Transformer transfomer, Plan[] parentPlans, ParameterChooser[] parameterChoosers) { this.uniqueId = uniqueIdCounter++; this.transformer = transfomer; this.parentPlans = parentPlans; this.parameterChoosers = parameterChoosers; this.activeTupleElements = transformer.DefaultActiveTupleTypes; this.resultElementProperties = new ResultElementExecutionProperties[this.activeTupleElements.Length]; for (int i = 0; i < this.resultElementProperties.Length; i++) this.resultElementProperties[i] = new ResultElementExecutionProperties(); this.treenodes = 1; foreach (Plan p in parentPlans) this.treenodes += p.treenodes; }