12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System;
- using Unity.Collections.LowLevel.Unsafe;
- using Unity.Collections;
-
- namespace Burst.Compiler.IL.Tests.Helpers
- {
- // Only used to allow to call the delegate with a NativeArrayRaw
- // As we can't use a generic with pinvoke
- internal unsafe struct NativeArrayRaw : IDisposable
- {
- // MUST BE IN SYNC WITH NativeArray
- internal void* m_Buffer;
- internal int m_Length;
-
- #if ENABLE_UNITY_COLLECTIONS_CHECKS
- internal int m_MinIndex;
- internal int m_MaxIndex;
- internal AtomicSafetyHandle m_Safety;
- internal DisposeSentinel m_DisposeSentinel;
- #endif
- Allocator m_AllocatorLabel;
-
- public NativeArrayRaw(void* mBuffer, int mLength)
- {
- m_Buffer = mBuffer;
- m_Length = mLength;
- m_AllocatorLabel = Allocator.Persistent;
- #if ENABLE_UNITY_COLLECTIONS_CHECKS
- m_MinIndex = 0;
- m_MaxIndex = m_Length -1;
- m_Safety = AtomicSafetyHandle.Create();
- m_DisposeSentinel = null;
- #endif
- }
-
- public void Dispose()
- {
- #if ENABLE_UNITY_COLLECTIONS_CHECKS
- DisposeSentinel.Dispose(ref m_Safety, ref m_DisposeSentinel);
- #endif
- if (m_Buffer != (void*)0)
- {
- UnsafeUtility.Free((void*)m_Buffer, m_AllocatorLabel);
- m_Buffer = (void*)0;
- m_Length = 0;
- }
- }
- }
- }
|