public Cursor(PerGroupTransformBase <TLabel, TScore, TState> parent, DataViewRowCursor input, DataViewRowCursor groupCursor, bool[] active) : base(parent.Host) { Ch.AssertValue(parent); // REVIEW: Try to see if we can relax this requirement in case there are no // active columns from the input (that are not required for output computation). Ch.AssertValue(input); Ch.AssertValue(groupCursor); Ch.AssertValue(active); _parent = parent; _input = input; _groupCursor = groupCursor; _active = active; _state = _parent.InitializeState(_input); var bindings = _parent.GetBindings(); _getters = _parent.CreateGetters(_state, iinfo => active[bindings.MapIinfoToCol(iinfo)]); _newGroupInGroupCursorDel = RowCursorUtils.GetIsNewGroupDelegate(_groupCursor, bindings.GroupIndex); _newGroupInInputCursorDel = RowCursorUtils.GetIsNewGroupDelegate(_input, bindings.GroupIndex); _labelGetter = _parent.GetLabelGetter(_groupCursor); _scoreGetter = _parent.GetScoreGetter(_groupCursor); }