示例#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 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);
            }
示例#2
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 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
                }
            }