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 errorHandle); if (!result) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, DestroyTransformedDataNative)) { Result = PointerToString(output).AsMemory(); } return(handle); }
internal override TimePoint Transform(long input) { var success = TransformDataNative(_transformerHandler, input, out IntPtr output, out IntPtr errorHandle); if (!success) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, DestroyTransformedDataNative)) { unsafe { return(new TimePoint(new ReadOnlySpan <byte>(output.ToPointer(), StructSize), IntPtrSize)); } } }
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 errorHandle); if (!result) { throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, DestroyTransformedDataNative)) { Result = PointerToString(output).AsMemory(); } }
internal override unsafe TimePoint Transform(long input) { bool success; IntPtr errorHandle; IntPtr output = Marshal.AllocHGlobal(_structSize); if (IntPtr.Size == 4) { success = TransformDataNativeX32(_transformerHandler, new NativeDateTimeParameterX32() { DataType = DateTimeTypeValue.DateTimeInt64, Data = new DataTypeX32() { PosixData = input } }, output, out errorHandle); } else { success = TransformDataNativeX64(_transformerHandler, new NativeDateTimeParameterX64() { DataType = DateTimeTypeValue.DateTimeInt64, Data = new DataTypeX64() { PosixData = input } }, output, out errorHandle); } if (!success) { // If we error on the native side, make sure to free allocated memory. Marshal.FreeHGlobal(output); throw new Exception(GetErrorDetailsAndFreeNativeMemory(errorHandle)); } using (var handler = new TransformedDataSafeHandle(output, DestroyTransformedDataNative)) { unsafe { return(new TimePoint(new ReadOnlySpan <byte>(output.ToPointer(), _structSize), _intPtrSize)); } } }