BitOrchestra.SequencerExpression.CreateEvaluator C# (CSharp) Method

CreateEvaluator() protected method

protected CreateEvaluator ( Evaluator>.Dictionary Cache, int BufferSize, int Resolution ) : Evaluator
Cache Evaluator>.Dictionary
BufferSize int
Resolution int
return Evaluator
        protected override Evaluator CreateEvaluator(Dictionary<Expression, Evaluator> Cache, int BufferSize, int Resolution)
        {
            ConstantEvaluator constparam = this.Parameter.GetEvaluator(Cache, BufferSize, Resolution) as ConstantEvaluator;
            if (constparam != null)
            {
                return this.Items[(int)((uint)constparam.Value % (uint)this.Items.Count)].GetEvaluator(Cache, BufferSize, Resolution);
            }

            BufferedEvaluator[] items = new BufferedEvaluator[this.Items.Count];
            Value[] constitems = new Value[this.Items.Count];
            bool constseq = true;
            for (int t = 0; t < items.Length; t++)
            {
                Evaluator itemeval = this.Items[t].GetEvaluator(Cache, BufferSize, Resolution);
                items[t] = itemeval.GetBuffered(BufferSize);
                if (constseq)
                {
                    ConstantEvaluator constitem = itemeval as ConstantEvaluator;
                    if (constitem != null)
                    {
                        constitems[t] = constitem.Value;
                    }
                    else
                    {
                        constseq = false;
                    }
                }
            }

            if (constseq)
            {
                return new SequencerConstantEvaluator(constitems, this.Parameter.GetEvaluator(Cache, BufferSize, Resolution));
            }
            else
            {
                return new SequencerEvaluator(items, this.Parameter.GetEvaluator(Cache, BufferSize, Resolution));
            }
        }