MTLBuffer.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. using System.Runtime.InteropServices;
  3. namespace Veldrid.MetalBindings
  4. {
  5. [StructLayout(LayoutKind.Sequential)]
  6. public unsafe struct MTLBuffer
  7. {
  8. public readonly IntPtr NativePtr;
  9. public MTLBuffer(IntPtr ptr) => NativePtr = ptr;
  10. public bool IsNull => NativePtr == IntPtr.Zero;
  11. public void* contents() => ObjectiveCRuntime.IntPtr_objc_msgSend(NativePtr, sel_contents).ToPointer();
  12. public UIntPtr length => ObjectiveCRuntime.UIntPtr_objc_msgSend(NativePtr, sel_length);
  13. public void didModifyRange(NSRange range)
  14. => ObjectiveCRuntime.objc_msgSend(NativePtr, sel_didModifyRange, range);
  15. public void addDebugMarker(NSString marker, NSRange range)
  16. => ObjectiveCRuntime.objc_msgSend(NativePtr, sel_addDebugMarker, marker.NativePtr, range);
  17. public void removeAllDebugMarkers()
  18. => ObjectiveCRuntime.objc_msgSend(NativePtr, sel_removeAllDebugMarkers);
  19. private static readonly Selector sel_contents = "contents";
  20. private static readonly Selector sel_length = "length";
  21. private static readonly Selector sel_didModifyRange = "didModifyRange:";
  22. private static readonly Selector sel_addDebugMarker = "addDebugMarker:range:";
  23. private static readonly Selector sel_removeAllDebugMarkers = "removeAllDebugMarkers";
  24. }
  25. }