Beispiel #1
0
            public Cursor(IChannelProvider provider, RowToRowScorerBase parent, RowCursor input, bool[] active, Func <int, bool> predicateMapper)
                : base(provider, input)
            {
                Ch.AssertValue(parent);
                Ch.AssertValue(active);
                Ch.AssertValue(predicateMapper);

                _bindings = parent.GetBindings();
                Schema    = parent.OutputSchema;
                Ch.Assert(active.Length == _bindings.ColumnCount);
                _active = active;

                var output = _bindings.RowMapper.GetRow(input, predicateMapper, out _disposer);

                try
                {
                    Ch.Assert(output.Schema == _bindings.RowMapper.OutputSchema);
                    _getters = parent.GetGetters(output, iinfo => active[_bindings.MapIinfoToCol(iinfo)]);
                }
                catch (Exception)
                {
                    _disposer?.Invoke();
                    throw;
                }
            }
        /// <summary>
        /// Produces the set of active columns for the scorer (as a bool[] of length bindings.ColumnCount).
        /// </summary>
        private static bool[] GetActive(BindingsBase bindings,
                                        IEnumerable <DataViewSchema.Column> columns,
                                        out IEnumerable <DataViewSchema.Column> inputColumns,
                                        out IEnumerable <DataViewSchema.Column> activeRowMapperCols)
        {
            var active = bindings.GetActive(columns);

            Contracts.Assert(active.Length == bindings.ColumnCount);

            var activeInput = bindings.GetActiveInput(columns);

            Contracts.Assert(activeInput.Length == bindings.Input.Count);

            // Get a predicate that determines which Mapper outputs are active.
            var predicateMapper          = bindings.GetActiveMapperColumns(active);
            Func <int, bool> localMapper = predicateMapper;

            // Get the active output columns
            activeRowMapperCols = bindings.RowMapper.OutputSchema.Where(c => predicateMapper(c.Index));
            var colsInputForMapper = bindings.RowMapper.GetDependenciesForNewColumns(activeRowMapperCols);

            var activeInCols = bindings.Input.Where(c => c.Index < activeInput.Length && activeInput[c.Index]);

            inputColumns = activeInCols.Union(colsInputForMapper);

            return(active);
        }
Beispiel #3
0
        public override IntPtr GetAddress(string funcName)
        {
            IntPtr dynAddress = Wgl.wglGetProcAddress(funcName);

            if (!BindingsBase.IsInvalidAddress(dynAddress))
            {
                return(dynAddress);
            }
            return(API.GetProcAddress(opengl32Handle, funcName));
        }
Beispiel #4
0
        /// <summary>
        /// Produces the set of active columns for the scorer (as a bool[] of length bindings.ColumnCount),
        /// a predicate for the needed active input columns, and a predicate for the needed active
        /// mapper columns.
        /// </summary>
        private static bool[] GetActive(BindingsBase bindings, Func<int, bool> predicate,
            out Func<int, bool> predicateInput, out Func<int, bool> predicateMapper)
        {
            var active = bindings.GetActive(predicate);
            Contracts.Assert(active.Length == bindings.ColumnCount);

            var activeInput = bindings.GetActiveInput(predicate);
            Contracts.Assert(activeInput.Length == bindings.Input.ColumnCount);

            // Get a predicate that determines which Mapper outputs are active.
            predicateMapper = bindings.GetActiveMapperColumns(active);

            // Now map those to active input columns.
            var predicateInputForMapper = bindings.RowMapper.GetDependencies(predicateMapper);

            // Combine the two sets of input columns.
            predicateInput =
                col => 0 <= col && col < activeInput.Length && (activeInput[col] || predicateInputForMapper(col));

            return active;
        }
            public Cursor(IChannelProvider provider, RowToRowScorerBase parent, DataViewRowCursor input, bool[] active, IEnumerable <DataViewSchema.Column> activeMapperColumns)
                : base(provider, input)
            {
                Ch.AssertValue(parent);
                Ch.AssertValue(active);
                Ch.AssertValue(activeMapperColumns);

                _bindings = parent.GetBindings();
                Schema    = parent.OutputSchema;
                Ch.Assert(active.Length == _bindings.ColumnCount);
                _active = active;

                _output = _bindings.RowMapper.GetRow(input, activeMapperColumns);
                try
                {
                    Ch.Assert(_output.Schema == _bindings.RowMapper.OutputSchema);
                    _getters = parent.GetGetters(_output, iinfo => active[_bindings.MapIinfoToCol(iinfo)]);
                }
                catch (Exception)
                {
                    _output.Dispose();
                    throw;
                }
            }