public void MoveToHead(object key) { LinkedDictionaryEntry de = (LinkedDictionaryEntry)_indexedValues[key]; if (de == null) { throw new ArgumentException("Key " + key + " not found"); } // if the head is the element then there is nothing to do if (_head == de) { return; } de._previous._next = de._next; if (de._next != null) { de._next._previous = de._previous; } else { _tail = de._previous; } de._next = _head; _head = de; de._previous = null; }
public object this[object key] { get { LinkedDictionaryEntry entry = (LinkedDictionaryEntry)_indexedValues[key]; if (entry == null) { return(null); // key not found } else { return(entry._entry.Value); } } set { LinkedDictionaryEntry entry = (LinkedDictionaryEntry)_indexedValues[key]; if (entry == null) { Add(key, value); } else { entry._entry.Value = value; } } }
public void Add(object key, object value) { if (key == null) { throw new ArgumentNullException("key"); } if (Contains(key)) { throw new ArgumentException("LinkedHashtable already contains key. key=" + key); } LinkedDictionaryEntry de = new LinkedDictionaryEntry(key, value); if (_head == null) { _head = de; _tail = de; } else { _tail._next = de; de._previous = _tail; _tail = de; } _indexedValues[key] = de; }
public void Remove(object key) { if (key == null) { throw new ArgumentNullException("key"); } LinkedDictionaryEntry de = (LinkedDictionaryEntry)_indexedValues[key]; if (de == null) { return; // key not found. } LinkedDictionaryEntry prev = de._previous; if (prev == null) { _head = de._next; } else { prev._next = de._next; } LinkedDictionaryEntry next = de._next; if (next == null) { _tail = de; } else { next._previous = de._previous; } }
public bool MoveNext() { if (_needsReset) { return(false); } else if (_current == null) { _current = _container.Head; } else { _current = _current._next; } _needsReset = (_current == null); return(!_needsReset); }
public void Reset() { _current = null; _needsReset = false; }
public bool MoveNext() { if (_needsReset) { return false; } else if (_current == null) { _current = _container.Head; } else { _current = _current._next; } _needsReset = (_current == null); return !_needsReset; }
public void Remove(object key) { if (key == null) throw new ArgumentNullException("key"); LinkedDictionaryEntry de = (LinkedDictionaryEntry)_indexedValues[key]; if (de == null) return; // key not found. LinkedDictionaryEntry prev = de._previous; if (prev == null) { _head = de._next; } else { prev._next = de._next; } LinkedDictionaryEntry next = de._next; if (next == null) { _tail = de; } else { next._previous = de._previous; } }
public void Add(object key, object value) { if (key == null) throw new ArgumentNullException("key"); if (Contains(key)) { throw new ArgumentException("LinkedHashtable already contains key. key=" + key); } LinkedDictionaryEntry de = new LinkedDictionaryEntry(key, value); if (_head == null) { _head = de; _tail = de; } else { _tail._next = de; de._previous = _tail; _tail = de; } _indexedValues[key] = de; }