| File: System\Runtime\InteropServices\PInvokeMarshal.Unix.cs | Web Access |
| Project: src\runtime\src\coreclr\nativeaot\System.Private.CoreLib\src\System.Private.CoreLib.csproj (System.Private.CoreLib) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.CompilerServices; using System.Security; namespace System.Runtime.InteropServices { /// <summary> /// This PInvokeMarshal class should provide full public Marshal /// implementation for all things related to P/Invoke marshalling /// </summary> internal static partial class PInvokeMarshal { public static void SaveLastError() { t_lastError = Interop.Sys.GetErrNo(); } public static void ClearLastError() { Interop.Sys.SetErrNo(0); } #region String marshalling public static unsafe int ConvertMultiByteToWideChar(byte* multiByteStr, int multiByteLen, char* wideCharStr, int wideCharLen) { return System.Text.Encoding.UTF8.GetChars(multiByteStr, multiByteLen, wideCharStr, wideCharLen); } #pragma warning disable IDE0060 public static unsafe int ConvertWideCharToMultiByte(char* wideCharStr, int wideCharLen, byte* multiByteStr, int multiByteLen, bool bestFit, bool throwOnUnmappableChar) { return System.Text.Encoding.UTF8.GetBytes(wideCharStr, wideCharLen, multiByteStr, multiByteLen); } #pragma warning restore IDE0060 public static unsafe int ConvertWideCharToMultiByte(char* wideCharStr, int wideCharLen, byte* multiByteStr, int multiByteLen) { return System.Text.Encoding.UTF8.GetBytes(wideCharStr, wideCharLen, multiByteStr, multiByteLen); } public static unsafe int GetByteCount(char* wideCharStr, int wideCharLen) { return System.Text.Encoding.UTF8.GetByteCount(wideCharStr, wideCharLen); } public static unsafe int GetCharCount(byte* multiByteStr, int multiByteLen) { return System.Text.Encoding.UTF8.GetCharCount(multiByteStr, multiByteLen); } #endregion } }