Beispiel #1
0
 /// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
 public void Dispose()
 {
     _values  = null;
     _freeIDs = null;
     _ends    = null;
     _entries = null;
     _starts  = null;
 }
Beispiel #2
0
        /// <summary>
        /// Constructs a data buffer of the specified length.
        /// </summary>
        /// <param name="pagePower">the size of pages as a power of 2</param>
        /// <param name="pageCount">the initial number of pages, may affect early adds if new pages need to be added</param>
        public DataBuffer(int pagePower = 8, int pageCount = 1)
        {
            for (int i = 0; i < 3; i++)
            {
                _values[i] = new PagedArray <TValue>(pagePower, pageCount);
            }

            for (int i = 0; i < 2; i++)
            {
                _dirtyMarks[i]   = new PagedArray <bool>(pagePower, pageCount);
                _dirtyEntries[i] = new Queue <int>();
            }
        }
        /// <summary>
        /// Constructs a double data buffer of the specified length.
        /// </summary>
        /// <param name="pagePower">the size of pages as a power of 2</param>
        /// <param name="pageCount">the initial number of pages, may affect early adds if new pages need to be added</param>
        public DoubleDataBuffer(int pagePower = 8, int pageCount = 1)
        {
            for (int i = 0; i < 3; i++)
            {
                _value1s[i] = new PagedArray <TPrimary>(pagePower, pageCount);
                _value2s[i] = new PagedArray <TSecondary>(pagePower, pageCount);
            }

            for (int i = 0; i < 2; i++)
            {
                _dirtyMarks[i]   = new PagedArray <bool>(pagePower, pageCount);
                _dirtyEntries[i] = new Queue <int>();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Constructs a data buffer of the specified length.
        /// </summary>
        /// <param name="pagePower">the size of pages as a power of 2</param>
        /// <param name="pageCount">the initial number of pages, may affect early adds if new pages need to be added</param>
        /// <param name="initialValue">the value to start each entry at</param>
        public DataBuffer(TValue initialValue, int pagePower = 8, int pageCount = 1)
        {
            for (int i = 0; i < 3; i++)
            {
                _values[i] = new PagedArray <TValue>(pagePower, pageCount);
                for (int j = 0; j < _values[i].Length; j++)
                {
                    _values[i].Set(j, initialValue);
                }
            }

            for (int i = 0; i < 2; i++)
            {
                _dirtyMarks[i]   = new PagedArray <bool>(pagePower, pageCount);
                _dirtyEntries[i] = new Queue <int>();
            }
        }
Beispiel #5
0
        /// <summary>
        /// Constructs a <see cref="NamedDataRegistry{TValue}"/> of the specified size
        /// </summary>
        /// <param name="pagePower">the size of pages as a power of 2</param>
        /// <param name="pageCount">the initial number of pages to add</param>
        /// <param name="hashSize">the size of the hashtable used for finding values by name.
        /// The larger this is the faster name lookups but the more memory used</param>
        public NamedDataRegistry(int pagePower = 8, int pageCount = 1, int hashSize = 47)
        {
            _entries = new PagedArray <Entry>(pagePower, pageCount);
            _values  = new PagedArray <TValue>(pagePower, pageCount);
            _starts  = new int[hashSize];
            _ends    = new int[hashSize];

            for (int i = 0; i < hashSize; i++)
            {
                _starts[i] = _ends[i] = -1;
            }
            _count    = _top = _next = 0;
            _hashSize = hashSize;

            _entries[0] = new Entry()
            {
                ID = -1
            };
        }
        /// <summary>
        /// Constructs a double data buffer of the specified length.
        /// </summary>
        /// <param name="pagePower">the size of pages as a power of 2</param>
        /// <param name="pageCount">the initial number of pages, may affect early adds if new pages need to be added</param>
        /// <param name="initialPrimary">The initial value for the primary buffer</param>
        public DoubleDataBuffer(TPrimary initialPrimary, int pagePower = 8, int pageCount = 1)
        {
            for (int i = 0; i < 3; i++)
            {
                _value1s[i] = new PagedArray <TPrimary>(pagePower, pageCount);
                _value2s[i] = new PagedArray <TSecondary>(pagePower, pageCount);

                for (int j = 0; j < _value1s.Length; j++)
                {
                    _value1s[i].Set(j, initialPrimary);
                }
            }

            for (int i = 0; i < 2; i++)
            {
                _dirtyMarks[i]   = new PagedArray <bool>(pagePower, pageCount);
                _dirtyEntries[i] = new Queue <int>();
            }
        }
 /// <summary>
 /// Constructs a CompleteBinarySearchTree
 /// </summary>
 /// <param name="pagePower">the size of the pages in the Array expressed as a power of 2</param>
 /// <param name="initialPageCount">the initial number of pages to be added</param>
 public CompleteBinarySearchTree(int pagePower, int initialPageCount)
 {
     _entries       = new PagedArray <Entry>(pagePower, initialPageCount);
     _entries[0]    = new Entry(-1, default, int.MinValue);