Example #1
0
            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);
            }
Example #2
0
            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));
                    }
                }
            }
Example #3
0
            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));
                    }
                }
            }