public static UnboundDataItemNode GetUnboundDataItemNode(object dataItem, out UnboundDataItem unboundDataItem) { lock (UnboundDataItem.UnboundDataItems) { UnboundDataItemNode current = UnboundDataItem.UnboundDataItems.FirstNode; while (current != null) { object currentDataItem = current.DataItem; unboundDataItem = current.UnboundDataItem; if (!current.IsAlive) { UnboundDataItemNode next = current.Next; UnboundDataItem.UnboundDataItems.Remove(current); current = next; continue; } if (object.Equals(currentDataItem, dataItem)) { return(current); } current = current.Next; } unboundDataItem = new UnboundDataItem(dataItem); UnboundDataItemNode unboundDataItemNode = new UnboundDataItemNode(unboundDataItem); UnboundDataItem.UnboundDataItems.Add(unboundDataItemNode); return(unboundDataItemNode); } }
public static UnboundDataItemNode GetUnboundDataItemNode( object dataItem, out UnboundDataItem unboundDataItem ) { lock( UnboundDataItem.UnboundDataItems ) { UnboundDataItemNode current = UnboundDataItem.UnboundDataItems.FirstNode; while( current != null ) { object currentDataItem = current.DataItem; unboundDataItem = current.UnboundDataItem; if( !current.IsAlive ) { UnboundDataItemNode next = current.Next; UnboundDataItem.UnboundDataItems.Remove( current ); current = next; continue; } if( object.Equals( currentDataItem, dataItem ) ) return current; current = current.Next; } unboundDataItem = new UnboundDataItem( dataItem ); UnboundDataItemNode unboundDataItemNode = new UnboundDataItemNode( unboundDataItem ); UnboundDataItem.UnboundDataItems.Add( unboundDataItemNode ); return unboundDataItemNode; } }
public static void FreeUnboundDataItem(UnboundDataItemNode unboundDataItemNode) { lock (UnboundDataItem.UnboundDataItems) { UnboundDataItems.Remove(unboundDataItemNode); } }
public static void FreeUnboundDataItem( UnboundDataItemNode unboundDataItemNode ) { lock( UnboundDataItem.UnboundDataItems ) { UnboundDataItems.Remove( unboundDataItemNode ); } }
public void Add(UnboundDataItemNode newNode) { newNode.Next = this.FirstNode; if (this.FirstNode != null) { this.FirstNode.Previous = newNode; } this.FirstNode = newNode; if (this.LastNode == null) { this.LastNode = this.FirstNode; } m_count++; }
public void Remove(UnboundDataItemNode unboundDataItemNode) { bool removed = false; if (this.LastNode == unboundDataItemNode) { this.LastNode = unboundDataItemNode.Previous; removed = true; } if (this.FirstNode == unboundDataItemNode) { this.FirstNode = unboundDataItemNode.Next; removed = true; } UnboundDataItemNode previous = unboundDataItemNode.Previous; if (previous != null) { previous.Next = unboundDataItemNode.Next; removed = true; } UnboundDataItemNode next = unboundDataItemNode.Next; if (next != null) { next.Previous = unboundDataItemNode.Previous; removed = true; } if (removed) { unboundDataItemNode.Previous = null; unboundDataItemNode.Next = null; m_count--; } }
public void Remove( UnboundDataItemNode unboundDataItemNode ) { bool removed = false; if( this.LastNode == unboundDataItemNode ) { this.LastNode = unboundDataItemNode.Previous; removed = true; } if( this.FirstNode == unboundDataItemNode ) { this.FirstNode = unboundDataItemNode.Next; removed = true; } UnboundDataItemNode previous = unboundDataItemNode.Previous; if( previous != null ) { previous.Next = unboundDataItemNode.Next; removed = true; } UnboundDataItemNode next = unboundDataItemNode.Next; if( next != null ) { next.Previous = unboundDataItemNode.Previous; removed = true; } if( removed ) { unboundDataItemNode.Previous = null; unboundDataItemNode.Next = null; m_count--; } }
public void Add( UnboundDataItemNode newNode ) { newNode.Next = this.FirstNode; if( this.FirstNode != null ) this.FirstNode.Previous = newNode; this.FirstNode = newNode; if( this.LastNode == null ) this.LastNode = this.FirstNode; m_count++; }