A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

28 lines
1.0 KiB

using System;
using System.Runtime.InteropServices;
using Avalonia.Platform.Interop;
namespace ControlCatalog.Desktop;
internal static partial class ObjC
{
private const string LibObjC = "/usr/lib/libobjc.dylib";
public static IntPtr CreateString(string value)
{
using var utf8 = new Utf8Buffer(value);
return MsgSend(GetClass("NSString"), GetUid("stringWithUTF8String:"), utf8);
}
[LibraryImport(LibObjC, EntryPoint = "objc_getClass", StringMarshalling = StringMarshalling.Utf8)]
internal static partial IntPtr GetClass(string name);
[LibraryImport(LibObjC, EntryPoint = "sel_getUid", StringMarshalling = StringMarshalling.Utf8)]
internal static partial IntPtr GetUid(string selector);
[LibraryImport(LibObjC, EntryPoint = "objc_msgSend")]
internal static partial IntPtr MsgSend(IntPtr receiver, IntPtr selector);
[LibraryImport(LibObjC, EntryPoint = "objc_msgSend")]
internal static partial IntPtr MsgSend(IntPtr receiver, IntPtr selector, IntPtr arg);
}