private protected override unsafe TransformerEstimatorSafeHandle CreateTransformerFromSavedDataHelper(byte *rawData, IntPtr dataSize) { var result = CreateTransformerFromSavedDataNative(rawData, dataSize, out IntPtr transformer, out IntPtr errorHandle); if (!result) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } var handle = new TransformerEstimatorSafeHandle(transformer, DestroyTransformerNative); // Get the result of the transform and cache it. Pass in null so we get the Mode back. result = TransformDataNative(handle, null, out IntPtr output, out IntPtr outputSize, out errorHandle); if (!result) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, outputSize, DestroyTransformedDataNative)) { #if NETSTANDARD2_0 byte[] buffer = new byte[outputSize.ToInt32()]; Marshal.Copy(output, buffer, 0, buffer.Length); Result = new ReadOnlyMemory <char>(Encoding.UTF8.GetString(buffer).ToArray()); #else var buffer = new ReadOnlySpan <byte>(output.ToPointer(), outputSize.ToInt32()); Result = new ReadOnlyMemory <char>(Encoding.UTF8.GetString(buffer).ToArray()); #endif } return(handle); }
internal override unsafe void CreateTransformerFromEstimator(IDataView input) { TransformerHandler = CreateTransformerFromEstimatorBase(input); // Get the result of the transform and cache it. Pass in null so we get the Mode back. var result = TransformDataNative(TransformerHandler, null, out IntPtr output, out IntPtr outputSize, out IntPtr errorHandle); if (!result) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, outputSize, DestroyTransformedDataNative)) { #if NETSTANDARD2_0 byte[] buffer = new byte[outputSize.ToInt32()]; Marshal.Copy(output, buffer, 0, buffer.Length); Result = new ReadOnlyMemory <char>(Encoding.UTF8.GetString(buffer).ToArray()); #else var buffer = new ReadOnlySpan <byte>(output.ToPointer(), outputSize.ToInt32()); Result = new ReadOnlyMemory <char>(Encoding.UTF8.GetString(buffer).ToArray()); #endif } }