MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / WrapArray

Method WrapArray

Source/Engine/Engine/NativeInterop.Managed.cs:103–116  ·  view source on GitHub ↗
(Array arr, Type arrayType)

Source from the content-addressed store, hash-verified

101 public ManagedArray(Array arr, Type elementType) => WrapArray(arr, elementType);
102
103 internal void WrapArray(Array arr, Type arrayType)
104 {
105 if (_unmanagedData != IntPtr.Zero)
106 NativeInterop.NativeFree(_unmanagedData.ToPointer());
107 if (_managedHandle.IsAllocated)
108 _managedHandle.Free();
109 _managedHandle = ManagedHandle.Alloc(arr, GCHandleType.Pinned);
110 _unmanagedData = Marshal.UnsafeAddrOfPinnedArrayElement(arr, 0);
111 _unmanagedAllocationSize = 0;
112 _length = arr.Length;
113 _arrayType = arrayType;
114 _elementType = arr.GetType().GetElementType();
115 _elementSize = NativeInterop.GetTypeSize(_elementType);
116 }
117
118 internal void Allocate<T>(int length) where T : unmanaged
119 {

Callers 1

WrapPooledArrayMethod · 0.80

Calls 7

NativeFreeMethod · 0.80
ToPointerMethod · 0.80
GetTypeSizeMethod · 0.80
FreeMethod · 0.45
AllocMethod · 0.45
GetElementTypeMethod · 0.45
GetTypeMethod · 0.45

Tested by

no test coverage detected