public Cursor(IChannelProvider provider, Bindings bindings, RowCursor input, bool[] active)
                : base(provider, input)
            {
                Ch.CheckValue(bindings, nameof(bindings));
                Ch.CheckValue(input, nameof(input));
                Ch.CheckParam(active == null || active.Length == bindings.ColumnCount, nameof(active));

                _bindings = bindings;
                _active   = active;
                var length = _bindings.InfoCount;

                _getters = new Delegate[length];
                for (int iinfo = 0; iinfo < length; iinfo++)
                {
                    if (_bindings.SrcCols[iinfo] < 0)
                    {
                        _getters[iinfo] = MakeGetter(iinfo);
                    }
                }
            }
Exemplo n.º 2
0
            private Cursor(DatabaseLoader parent, DatabaseSource source, bool[] active)
                : base(parent._host)
            {
                Ch.Assert(active == null || active.Length == parent._bindings.OutputSchema.Count);
                Ch.CheckValue(source, nameof(source));

                _total    = -1;
                _bindings = parent._bindings;
                _active   = active;
                _source   = source;

                _getters = new Delegate[_bindings.Infos.Length];
                for (int i = 0; i < _getters.Length; i++)
                {
                    if (_active != null && !_active[i])
                    {
                        continue;
                    }
                    _getters[i] = CreateGetterDelegate(i);
                    Ch.Assert(_getters[i] != null);
                }
            }