StringHelper.cs 940 B

123456789101112131415161718192021222324252627282930
  1. using SharpMetal.Foundation;
  2. using SharpMetal.ObjectiveCCore;
  3. using System.Runtime.Versioning;
  4. namespace Ryujinx.Graphics.Metal
  5. {
  6. [SupportedOSPlatform("macos")]
  7. class StringHelper
  8. {
  9. public static NSString NSString(string source)
  10. {
  11. return new(ObjectiveC.IntPtr_objc_msgSend(new ObjectiveCClass("NSString"), "stringWithUTF8String:", source));
  12. }
  13. public static unsafe string String(NSString source)
  14. {
  15. char[] sourceBuffer = new char[source.Length];
  16. fixed (char* pSourceBuffer = sourceBuffer)
  17. {
  18. ObjectiveC.bool_objc_msgSend(source,
  19. "getCString:maxLength:encoding:",
  20. pSourceBuffer,
  21. source.MaximumLengthOfBytes(NSStringEncoding.UTF16) + 1,
  22. (ulong)NSStringEncoding.UTF16);
  23. }
  24. return new string(sourceBuffer);
  25. }
  26. }
  27. }