예제 #1
0
                #pragma warning restore
        #endregion fields & pins

        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            FInput.Sync();
            FBin.Sync();

            if (FInput.IsChanged || FBin.IsChanged || FReverse.IsChanged)
            {
                VecBinSpread <T> spread = new VecBinSpread <T>(FInput, 1, FBin, FReverse.SliceCount);

                FOutput.Length = spread.ItemCount;
                using (var dataWriter = FOutput.GetWriter())
                {
                    for (int b = 0; b < spread.Count; b++)
                    {
                        T[] bin = spread[b];
                        if (FReverse[b])
                        {
                            Array.Reverse(bin);
                        }
                        dataWriter.Write(bin, 0, bin.Length);
                    }
                }
            }
        }