aboutsummaryrefslogtreecommitdiffstatsci
path: root/vulkan/ExtensionMethods.cs
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-12-04 04:13:56 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-12-04 04:13:56 +0100
commitba592ca9099fe4e378692bd2e8c953de90a4beb5 (patch)
tree766a1bf12e789bf37b86818584b5ed1998e01cb0 /vulkan/ExtensionMethods.cs
parent0bbba34c81f356da8e00e04d0f61c6b9a66337c9 (diff)
Utf8StringPointer
Diffstat (limited to 'vulkan/ExtensionMethods.cs')
-rw-r--r--vulkan/ExtensionMethods.cs30
1 files changed, 18 insertions, 12 deletions
diff --git a/vulkan/ExtensionMethods.cs b/vulkan/ExtensionMethods.cs
index 0b9797f..4102f07 100644
--- a/vulkan/ExtensionMethods.cs
+++ b/vulkan/ExtensionMethods.cs
@@ -38,18 +38,18 @@ namespace Vulkan {
return handles[obj].AddrOfPinnedObject ();
}
- GCHandle hnd = GCHandle.Alloc (obj, GCHandleType.Pinned);
- handles.Add (obj, hnd);
- return hnd.AddrOfPinnedObject ();
- }
- public static IntPtr Pin<T> (this List<T> obj) {
- if (handles.ContainsKey (obj))
- Debug.WriteLine ("Pinning already pinned object: {0}", obj);
+ GCHandle hnd = GCHandle.Alloc (obj, GCHandleType.Pinned);
+ handles.Add (obj, hnd);
+ return hnd.AddrOfPinnedObject ();
+ }
+ public static IntPtr Pin<T> (this List<T> obj) {
+ if (handles.ContainsKey (obj))
+ Debug.WriteLine ("Pinning already pinned object: {0}", obj);
- GCHandle hnd = GCHandle.Alloc (obj.ToArray(), GCHandleType.Pinned);
- handles.Add (obj, hnd);
- return hnd.AddrOfPinnedObject ();
- }
+ GCHandle hnd = GCHandle.Alloc (obj.ToArray(), GCHandleType.Pinned);
+ handles.Add (obj, hnd);
+ return hnd.AddrOfPinnedObject ();
+ }
public static IntPtr Pin<T> (this T[] obj) {
if (handles.ContainsKey (obj))
Debug.WriteLine ("Pinning already pinned object: {0}", obj);
@@ -63,9 +63,15 @@ namespace Vulkan {
Debug.WriteLine ("Trying to pin already pinned object: {0}", obj);
return handles[obj].AddrOfPinnedObject ();
}
+ byte[] n = System.Text.Encoding.UTF8.GetBytes(obj +'\0');
+ GCHandle hnd = GCHandle.Alloc (n, GCHandleType.Pinned);
+ handles.Add (obj, hnd);
+ return hnd.AddrOfPinnedObject ();
+ }
+ public static IntPtr PinPointer (this string obj) {
byte[] n = System.Text.Encoding.UTF8.GetBytes(obj +'\0');
GCHandle hnd = GCHandle.Alloc (n, GCHandleType.Pinned);
- handles.Add (obj, hnd);
+ handles.Add (hnd.AddrOfPinnedObject (), hnd);
return hnd.AddrOfPinnedObject ();
}