checkpoint

This commit is contained in:
2020-04-30 13:33:30 -04:00
parent 19a9fc06ba
commit 9bc522180d
21 changed files with 337 additions and 276 deletions

View File

@@ -0,0 +1,38 @@
using System;
using System.Runtime.InteropServices;
namespace Foodsoft.Alpm.Marshalling
{
internal readonly struct UTF8In : ICustomMarshaler
{
private static readonly UTF8In _instance = default;
public void CleanUpManagedData(object managedObj) { }
public void CleanUpNativeData(IntPtr pNativeData)
{
if (pNativeData == IntPtr.Zero)
return;
Marshal.FreeCoTaskMem(pNativeData);
}
public int GetNativeDataSize() => -1;
public IntPtr MarshalManagedToNative(object? managedObj)
{
return Marshal.StringToCoTaskMemUTF8((string?) managedObj);
}
public object MarshalNativeToManaged(IntPtr pNativeData)
{
return Marshal.PtrToStringUTF8(pNativeData)!;
}
// ReSharper disable once UnusedMember.Local
// ReSharper disable once UnusedParameter.Local
private static ICustomMarshaler GetInstance(string cookie)
{
return _instance;
}
}
}