public NativeMinHeap(COMPARER comparer, Allocator allocator, int capacity)
    {
        _allocator = allocator;
        _stack     = new NativeStack <VALUE>(capacity, allocator);

        _comparer = (COMPARER *)UnsafeUtility.Malloc(sizeof(COMPARER), UnsafeUtility.AlignOf <COMPARER>(), allocator);
        UnsafeUtility.CopyStructureToPtr(ref comparer, _comparer);
    }
Example #2
0
 public void NativeStackTest()
 {
     using NativeStack <int> stack = new NativeStack <int>(4);
     Assert.IsTrue(stack.IsValid);
     Assert.IsTrue(stack.IsEmpty);
     Assert.AreEqual(0, stack.Length);
     Assert.AreEqual(4, stack.Capacity);
 }
 public EntityPool(ILoggerFactory logFactory, IAllocator allocator)
 {
     _logFactory = logFactory;
     _logger     = _logFactory.CreateLogger <EntityPool>();
     _memory     = allocator;
     _freeIds    = new NativeStack <uint>(_memory, ENTITIES_PER_POOL);
     _entityMap  = new List <NativeArray <Entity> >();
     //AddPage();
     Take();
 }
Example #4
0
        public unsafe void Test()
        {
            const int cnt = 1000;

            using var stack = new NativeStack <int>(0);
            var managed = new Stack <int>(cnt);

            var arr  = new int[cnt];
            var rand = new Random();

            for (int i = 0; i < cnt; i++)
            {
                arr[i] = rand.Next(cnt);
            }

            for (int i = 0; i < cnt; i++)
            {
                managed.Push(arr[i]);
                stack.Push(arr[i]);
            }

            var se = stack.GetEnumerator();
            var me = managed.GetEnumerator();

            for (var i = 0; i < cnt; i++)
            {
                se.MoveNext();
                me.MoveNext();
                Assert.True(se.Current == me.Current);
            }

            se.Dispose();
            me.Dispose();

            for (int i = 0; i < cnt; i++)
            {
                Assert.True(managed.Count == stack.Count);
                var l = managed.Pop();
                var r = stack.Peek();
                Assert.True(l == r);
                stack.Pop();
            }

            stack.Clear();
            stack.TrimExcess();

            Assert.True(!stack.IsDisposed);

            stack.Dispose();

            Assert.True(stack.Ptr == null);
            Assert.True(stack.IsDisposed);
        }
        public void Dispose()
        {
            var stack = new NativeStack <int>(Allocator.Temp);

            Assert.IsTrue(stack.IsCreated);

            stack.Dispose();
            Assert.IsFalse(stack.IsCreated);

            Assert.Throws <System.ObjectDisposedException>(() =>
            {
                stack.Dispose();
            });

            stack = new NativeStack <int>(Allocator.TempJob);
            Assert.IsTrue(stack.IsCreated);

            stack.Dispose(default).Complete();
        public void IsEmpty()
        {
            var stack = new NativeStack <int>(Allocator.Temp);

            Assert.AreEqual(0, stack.Count);
            Assert.IsTrue(stack.IsEmpty);

            stack.Push(0);
            stack.Pop();

            Assert.AreEqual(0, stack.Count);
            Assert.IsTrue(stack.IsEmpty);

            stack.Push(1);
            stack.Push(2);
            stack.Clear();

            Assert.AreEqual(0, stack.Count);
            Assert.IsTrue(stack.IsEmpty);

            stack.Dispose();
        }
Example #7
0
 public Enumerator(ref NativeStack <T> stack)
 {
     _stack = stack;
     _idx   = -2;
 }
 public bool Equals(NativeStack <T> other)
 {
     return(Equals(other));
 }
 public NativeStackDebugView(NativeStack <T> stack)
 {
     m_Stack = stack;
 }
 public Enumerator(ref NativeStack <T> stack)
 {
     m_Buffer = stack.m_Buffer;
     m_Index  = stack.Count;
 }