/// <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; }
/// <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>(); } }
/// <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>(); } }
/// <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);