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); } } }
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); } }