Esempio n. 1
0
        public NativeBinaryHeap(int initialCapacity, Allocator allocator)
        {
            // Insist on a minimum capacity
            initialCapacity = ceilpow2(initialCapacity);
            initialCapacity = max(initialCapacity, 4);

            var sizeOf    = SizeOf <T>();
            var totalSize = sizeOf * (long)initialCapacity;

#if ENABLE_UNITY_COLLECTIONS_CHECKS
            if (allocator <= Allocator.None)
            {
                throw new ArgumentException(
                          "Allocator must be Temp, TempJob or Persistent",
                          nameof(allocator));
            }

            if (totalSize > int.MaxValue)
            {
                throw new ArgumentOutOfRangeException(nameof(initialCapacity), $"Capacity * sizeof(T) cannot exceed {int.MaxValue} bytes");
            }
            DisposeSentinel.Create(out this.safety, out this.disposeSentinel, 0, allocator);
#endif

            var alignOf = AlignOf <T>();

            this.binaryHeapData = UnsafeBinaryHeap.Create(sizeOf, alignOf, initialCapacity, allocator);
        }
Esempio n. 2
0
 void Deallocate()
 {
     UnsafeBinaryHeap.Destroy(this.binaryHeapData);
     this.binaryHeapData = null;
 }