fix(core): Fixes type caching & cleanup (#422)

- [X] Fixes some issues with the type caching
- [X] Changes type check default to ignore case
- [X] Splits out type caching of insensitive and sensitive lists. This means less stuff to iterate through when checking a type against the string.
- [X] Adds an ArrayEnumerator, mostly for reference purposes (copy/paste as needed)
This commit is contained in:
Kamron Batman 2021-01-20 00:10:33 -08:00 committed by GitHub
parent b921c38879
commit e869c105d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 253 additions and 96 deletions

View file

@ -609,7 +609,7 @@ namespace Server.Collections
public struct Enumerator : IEnumerator<TValue>
{
private readonly OrderedHashSet<TValue> _OrderedHashSet;
private readonly OrderedHashSet<TValue> _orderedHashSet;
private readonly int _version;
private int _index;
private TValue _current;
@ -618,10 +618,10 @@ namespace Server.Collections
object IEnumerator.Current => _current;
internal Enumerator(OrderedHashSet<TValue> OrderedHashSet)
internal Enumerator(OrderedHashSet<TValue> orderedHashSet)
{
_OrderedHashSet = OrderedHashSet;
_version = OrderedHashSet._version;
_orderedHashSet = orderedHashSet;
_version = orderedHashSet._version;
_index = 0;
_current = default;
}
@ -632,14 +632,14 @@ namespace Server.Collections
public bool MoveNext()
{
if (_version != _OrderedHashSet._version)
if (_version != _orderedHashSet._version)
{
throw new InvalidOperationException(InvalidOperation_EnumFailedVersion);
}
if (_index < _OrderedHashSet.Count)
if (_index < _orderedHashSet.Count)
{
Entry entry = _OrderedHashSet._entries[_index];
Entry entry = _orderedHashSet._entries[_index];
_current = entry.Value;
++_index;
return true;
@ -650,7 +650,7 @@ namespace Server.Collections
void IEnumerator.Reset()
{
if (_version != _OrderedHashSet._version)
if (_version != _orderedHashSet._version)
{
throw new InvalidOperationException(InvalidOperation_EnumFailedVersion);
}