/// <summary> /// This method extracts metadata and actual data for each column supplied /// by extracting data and information from every DataFrameColumn. /// </summary> public unsafe void ExtractColumns(DataFrame CSharpDataFrame) { Logging.Trace("CSharpOutputDataSet::ExtractColumns"); _strLenOrNullMapPtrs = new int *[ColumnsNumber]; _dataPtrs = new void *[ColumnsNumber]; for (ushort columnNumber = 0; columnNumber < ColumnsNumber; ++columnNumber) { DataFrameColumn column = CSharpDataFrame.Columns[columnNumber]; // Add column metadata to a CSharpColumn dictionary // _columns[columnNumber] = new CSharpColumn { Name = column.Name, DataType = DataTypeMap[column.DataType], Nullable = (short)(column.NullCount > 0 ? 1 : 0), DecimalDigits = 0, Size = (ulong)DataTypeSize[DataTypeMap[column.DataType]], Id = columnNumber }; // Extract actual column data from a DataFrameColumn and store into a void pointers array // ExtractColumn(columnNumber, column); } }
/// <summary> /// This method appends each column as a CSharpColumn object to a dictionary. /// </summary> public void InitColumn( ushort columnNumber, string columnName, ulong columnSize, SqlDataType dataType, short nullable, short decimalDigits) { Logging.Trace("CSharpInputDataSet::InitColumn"); if (columnName == null) { throw new ArgumentException("Invalid input column name supplied"); } else if (columnNumber >= ColumnsNumber || columnNumber < 0) { throw new ArgumentException("Invalid input column id supplied: " + columnNumber.ToString()); } _columns[columnNumber] = new CSharpColumn { Name = columnName, DataType = dataType, DecimalDigits = decimalDigits, Nullable = nullable, Size = columnSize, Id = columnNumber }; }