////////////////////////////////////////////////////////////////// bool RemoveQItem(QListItem <T> foundItem) { itemQItemDict.Remove(foundItem.Item); var prev = foundItem.Prev; var next = foundItem.Next; if (prev != null) { prev.Next = next; } if (next != null) { next.Prev = prev; } if (this.qFirst == foundItem) { this.qFirst = next; } if (this.qLast == foundItem) { this.qLast = prev; } foundItem.Clear(); return(true); }
public bool Add(T Item) { if (itemQItemDict.ContainsKey(Item)) { return(false); } if (qFirst == null) { qLast = qFirst = new QListItem <T>() { Item = Item, Next = null, Prev = null }; itemQItemDict[Item] = qLast; } else { var newLast = new QListItem <T>() { Item = Item, Prev = qLast, Next = null }; qLast.Next = newLast; qLast = newLast; itemQItemDict[Item] = qLast; } return(true); }
////////////////////////////////////////////////////////////////// public bool Contains(T Item) { QListItem <T> qItem = null; if (!itemQItemDict.TryGetValue(Item, out qItem)) { return(false); } return(true); }
public bool Remove(T Item) { QListItem <T> qItem = null; if (!itemQItemDict.TryGetValue(Item, out qItem)) { return(false); } return(RemoveQItem(qItem)); }
public void Insert(int index, T item) { if (itemQItemDict.ContainsKey(item)) { return; } if (index == Count) { Add(item); return; } if (index == 0) { QListItem <T> qNew = new QListItem <T>() { Item = item, Prev = null, Next = qFirst }; itemQItemDict[item] = qNew; qFirst.Prev = qNew; qFirst = qNew; return; } Int32 i = -1; QListItem <T> qitem = qFirst; while (qitem != null) { i++; if (i == index) { QListItem <T> qNew = new QListItem <T>() { Item = item, Prev = qitem, Next = qitem.Next }; qitem.Next.Prev = qNew; qitem.Next = qNew; itemQItemDict[item] = qNew; return; } qitem = qitem.Next; } }
public bool Replace(T OldItem, T NewItem) { QListItem <T> foundItem = null; if (!itemQItemDict.TryGetValue(OldItem, out foundItem)) { return(false); } itemQItemDict.Remove(OldItem); itemQItemDict.Add(NewItem, foundItem); foundItem.Item = NewItem; return(true); }
public void Clear() { this.itemQItemDict.Clear(); QListItem <T> qItem = qFirst; while (qItem != null) { qItem.Clear(); qItem = qItem.Next; } this.qFirst = null; this.qLast = null; }
public T this[int index] { get { QListItem <T> qItem = GetByIndex(index); return(qItem.Item); } set { QListItem <T> qItem = GetByIndex(index); itemQItemDict.Remove(qItem.Item); itemQItemDict.Add(value, qItem); qItem.Item = value; } }
public void RemoveAt(int index) { Int32 i = -1; QListItem <T> qitem = qFirst; while (qitem != null) { i++; if (i == index) { RemoveQItem(qitem); return; } qitem = qitem.Next; } }
public int IndexOf(T item) { Int32 i = -1; QListItem <T> qitem = qFirst; while (qitem != null) { i++; if (item.Equals(qitem.Item)) { return(i); } qitem = qitem.Next; } return(-1); }
QListItem <T> GetByIndex(Int32 Index) { if (Index >= Count || Index < 0) { return(null); } if (Index < Count / 2) { Int32 i = -1; QListItem <T> qItem = qFirst; while (qItem != null) { i++; if (i == Index) { return(qItem); } qItem = qItem.Next; } } else { Int32 i = Count; QListItem <T> qItem = qLast; while (qItem != null) { i--; if (i == Index) { return(qItem); } qItem = qItem.Prev; } } return(null); }
internal void Clear() { Item = default(T); Next = null; Prev = null; }