public Cursor(StatefulFilterTransform <TSrc, TDst, TState> parent, IRowCursor <TSrc> input, Func <int, bool> predicate) : base(parent.Host) { Ch.AssertValue(input); Ch.AssertValue(predicate); _parent = parent; _input = input; _src = new TSrc(); _dst = new TDst(); _state = new TState(); CursorChannelAttribute.TrySetCursorChannel(_parent.Host, _src, Ch); CursorChannelAttribute.TrySetCursorChannel(_parent.Host, _dst, Ch); CursorChannelAttribute.TrySetCursorChannel(_parent.Host, _state, Ch); if (parent._initStateAction != null) { parent._initStateAction(_state); } var appendedDataView = new DataViewConstructionUtils.SingleRowLoopDataView <TDst>(parent.Host, _parent._addedSchema); appendedDataView.SetCurrentRowObject(_dst); Func <int, bool> appendedPredicate = col => { col = _parent._bindings.AddedColumnIndices[col]; return(predicate(col)); }; _appendedRow = appendedDataView.GetRowCursor(appendedPredicate); }
/// <summary> /// The 'reapply' constructor. /// </summary> private StatefulFilterTransform(IHostEnvironment env, StatefulFilterTransform <TSrc, TDst, TState> transform, IDataView newSource) : base(env, RegistrationName, transform) { Host.AssertValue(transform); Host.AssertValue(newSource); _source = newSource; _filterFunc = transform._filterFunc; _typedSource = TypedCursorable <TSrc> .Create(Host, newSource, false, transform._inputSchemaDefinition); _schema = MergedSchema.Create(newSource.Schema, transform._schema.AddedSchema); }
/// <summary> /// The 'reapply' constructor. /// </summary> private StatefulFilterTransform(IHostEnvironment env, StatefulFilterTransform <TSrc, TDst, TState> transform, IDataView newSource) : base(env, RegistrationName, transform) { Host.AssertValue(transform); Host.AssertValue(newSource); _source = newSource; _filterFunc = transform._filterFunc; _typedSource = TypedCursorable <TSrc> .Create(Host, newSource, false, transform._inputSchemaDefinition); _addedSchema = transform._addedSchema; _bindings = new ColumnBindings(Schema.Create(newSource.Schema), DataViewConstructionUtils.GetSchemaColumns(_addedSchema)); }