in language-extensions/dotnet-core-CSharp/src/managed/CSharpInputDataSet.cs [77:130]
private unsafe void AddColumn(
ushort columnNumber,
ulong rowsNumber,
void *colData,
int *colMap)
{
Logging.Trace("CSharpInputDataSet::AddColumn");
switch(_columns[columnNumber].DataType)
{
case SqlDataType.DotNetInteger:
AddDataFrameColumn<int>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetUInteger:
AddDataFrameColumn<uint>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetBigInt:
AddDataFrameColumn<long>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetUBigInt:
AddDataFrameColumn<ulong>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetTinyInt:
AddDataFrameColumn<sbyte>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetUTinyInt:
AddDataFrameColumn<byte>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetSmallInt:
AddDataFrameColumn<short>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetUSmallInt:
AddDataFrameColumn<ushort>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetBit:
AddDataFrameColumn<bool>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetFloat:
AddDataFrameColumn<double>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetDouble:
AddDataFrameColumn<double>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetReal:
AddDataFrameColumn<float>(columnNumber, rowsNumber, colData, colMap);
break;
case SqlDataType.DotNetChar:
int[] strLens = new int[rowsNumber];
Interop.Copy((int*)colMap, strLens, 0, (int)rowsNumber);
CSharpDataFrame.Columns.Add(new StringDataFrameColumn(_columns[columnNumber].Name, DataSetUtils.StringSplitToArray(Interop.UTF8PtrToStr((char*)colData), strLens)));
break;
default:
throw new NotImplementedException("Column type for " + _columns[columnNumber].DataType.ToString() + " has not been implemented yet");
}
}