Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridViewIntLinkedList.cs / 1 / DataGridViewIntLinkedList.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms
{
using System;
using System.Diagnostics;
using System.Collections;
using System.Windows.Forms;
using System.ComponentModel;
///
///
/// Represents a linked list of integers
///
internal class DataGridViewIntLinkedList : IEnumerable
{
private DataGridViewIntLinkedListElement lastAccessedElement;
private DataGridViewIntLinkedListElement headElement;
private int count, lastAccessedIndex;
///
IEnumerator IEnumerable.GetEnumerator()
{
return new DataGridViewIntLinkedListEnumerator(this.headElement);
}
///
public DataGridViewIntLinkedList()
{
lastAccessedIndex = -1;
}
///
public DataGridViewIntLinkedList(DataGridViewIntLinkedList source)
{
Debug.Assert(source != null);
int elements = source.Count;
for (int element = 0; element < elements; element++)
{
Add(source[element]);
}
}
///
public int this[int index]
{
get
{
Debug.Assert(index >= 0);
Debug.Assert(index < this.count);
if (this.lastAccessedIndex == -1 || index < this.lastAccessedIndex)
{
DataGridViewIntLinkedListElement tmp = this.headElement;
int tmpIndex = index;
while (tmpIndex > 0)
{
tmp = tmp.Next;
tmpIndex--;
}
this.lastAccessedElement = tmp;
this.lastAccessedIndex = index;
return tmp.Int;
}
else
{
while (this.lastAccessedIndex < index)
{
this.lastAccessedElement = this.lastAccessedElement.Next;
this.lastAccessedIndex++;
}
return this.lastAccessedElement.Int;
}
}
set
{
Debug.Assert(index >= 0);
if (index != this.lastAccessedIndex)
{
int currentInt = this[index];
Debug.Assert(index == this.lastAccessedIndex);
}
this.lastAccessedElement.Int = value;
}
}
///
public int Count
{
get
{
return this.count;
}
}
///
public int HeadInt
{
get
{
Debug.Assert(this.headElement != null);
return this.headElement.Int;
}
}
///
public void Add(int integer)
{
DataGridViewIntLinkedListElement newHead = new DataGridViewIntLinkedListElement(integer);
if (this.headElement != null)
{
newHead.Next = this.headElement;
}
this.headElement = newHead;
this.count++;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
}
///
public void Clear()
{
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
this.headElement = null;
this.count = 0;
}
///
public bool Contains(int integer)
{
int index = 0;
DataGridViewIntLinkedListElement tmp = this.headElement;
while (tmp != null)
{
if (tmp.Int == integer)
{
this.lastAccessedElement = tmp;
this.lastAccessedIndex = index;
return true;
}
tmp = tmp.Next;
index++;
}
return false;
}
///
public int IndexOf(int integer)
{
if (Contains(integer))
{
return this.lastAccessedIndex;
}
else
{
return -1;
}
}
///
public bool Remove(int integer)
{
DataGridViewIntLinkedListElement tmp1 = null, tmp2 = this.headElement;
while (tmp2 != null)
{
if (tmp2.Int == integer)
{
break;
}
tmp1 = tmp2;
tmp2 = tmp2.Next;
}
if (tmp2.Int == integer)
{
DataGridViewIntLinkedListElement tmp3 = tmp2.Next;
if (tmp1 == null)
{
this.headElement = tmp3;
}
else
{
tmp1.Next = tmp3;
}
this.count--;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
return true;
}
return false;
}
///
public void RemoveAt(int index)
{
DataGridViewIntLinkedListElement tmp1 = null, tmp2 = this.headElement;
while (index > 0)
{
tmp1 = tmp2;
tmp2 = tmp2.Next;
index--;
}
DataGridViewIntLinkedListElement tmp3 = tmp2.Next;
if (tmp1 == null)
{
this.headElement = tmp3;
}
else
{
tmp1.Next = tmp3;
}
this.count--;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
}
}
///
///
/// Represents an emunerator of elements in a linked list.
///
internal class DataGridViewIntLinkedListEnumerator : IEnumerator
{
private DataGridViewIntLinkedListElement headElement;
private DataGridViewIntLinkedListElement current;
private bool reset;
///
public DataGridViewIntLinkedListEnumerator(DataGridViewIntLinkedListElement headElement)
{
this.headElement = headElement;
this.reset = true;
}
///
object IEnumerator.Current
{
get
{
Debug.Assert(this.current != null); // Since this is for internal use only.
return this.current.Int;
}
}
///
bool IEnumerator.MoveNext()
{
if (this.reset)
{
Debug.Assert(this.current == null);
this.current = this.headElement;
this.reset = false;
}
else
{
Debug.Assert(this.current != null); // Since this is for internal use only.
this.current = this.current.Next;
}
return (this.current != null);
}
///
void IEnumerator.Reset()
{
this.reset = true;
this.current = null;
}
}
///
///
/// Represents an element in a linked list.
///
internal class DataGridViewIntLinkedListElement
{
private int integer;
private DataGridViewIntLinkedListElement next;
///
public DataGridViewIntLinkedListElement(int integer)
{
this.integer = integer;
}
///
public int Int
{
get
{
return this.integer;
}
set
{
this.integer = value;
}
}
///
public DataGridViewIntLinkedListElement Next
{
get
{
return this.next;
}
set
{
this.next = value;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms
{
using System;
using System.Diagnostics;
using System.Collections;
using System.Windows.Forms;
using System.ComponentModel;
///
///
/// Represents a linked list of integers
///
internal class DataGridViewIntLinkedList : IEnumerable
{
private DataGridViewIntLinkedListElement lastAccessedElement;
private DataGridViewIntLinkedListElement headElement;
private int count, lastAccessedIndex;
///
IEnumerator IEnumerable.GetEnumerator()
{
return new DataGridViewIntLinkedListEnumerator(this.headElement);
}
///
public DataGridViewIntLinkedList()
{
lastAccessedIndex = -1;
}
///
public DataGridViewIntLinkedList(DataGridViewIntLinkedList source)
{
Debug.Assert(source != null);
int elements = source.Count;
for (int element = 0; element < elements; element++)
{
Add(source[element]);
}
}
///
public int this[int index]
{
get
{
Debug.Assert(index >= 0);
Debug.Assert(index < this.count);
if (this.lastAccessedIndex == -1 || index < this.lastAccessedIndex)
{
DataGridViewIntLinkedListElement tmp = this.headElement;
int tmpIndex = index;
while (tmpIndex > 0)
{
tmp = tmp.Next;
tmpIndex--;
}
this.lastAccessedElement = tmp;
this.lastAccessedIndex = index;
return tmp.Int;
}
else
{
while (this.lastAccessedIndex < index)
{
this.lastAccessedElement = this.lastAccessedElement.Next;
this.lastAccessedIndex++;
}
return this.lastAccessedElement.Int;
}
}
set
{
Debug.Assert(index >= 0);
if (index != this.lastAccessedIndex)
{
int currentInt = this[index];
Debug.Assert(index == this.lastAccessedIndex);
}
this.lastAccessedElement.Int = value;
}
}
///
public int Count
{
get
{
return this.count;
}
}
///
public int HeadInt
{
get
{
Debug.Assert(this.headElement != null);
return this.headElement.Int;
}
}
///
public void Add(int integer)
{
DataGridViewIntLinkedListElement newHead = new DataGridViewIntLinkedListElement(integer);
if (this.headElement != null)
{
newHead.Next = this.headElement;
}
this.headElement = newHead;
this.count++;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
}
///
public void Clear()
{
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
this.headElement = null;
this.count = 0;
}
///
public bool Contains(int integer)
{
int index = 0;
DataGridViewIntLinkedListElement tmp = this.headElement;
while (tmp != null)
{
if (tmp.Int == integer)
{
this.lastAccessedElement = tmp;
this.lastAccessedIndex = index;
return true;
}
tmp = tmp.Next;
index++;
}
return false;
}
///
public int IndexOf(int integer)
{
if (Contains(integer))
{
return this.lastAccessedIndex;
}
else
{
return -1;
}
}
///
public bool Remove(int integer)
{
DataGridViewIntLinkedListElement tmp1 = null, tmp2 = this.headElement;
while (tmp2 != null)
{
if (tmp2.Int == integer)
{
break;
}
tmp1 = tmp2;
tmp2 = tmp2.Next;
}
if (tmp2.Int == integer)
{
DataGridViewIntLinkedListElement tmp3 = tmp2.Next;
if (tmp1 == null)
{
this.headElement = tmp3;
}
else
{
tmp1.Next = tmp3;
}
this.count--;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
return true;
}
return false;
}
///
public void RemoveAt(int index)
{
DataGridViewIntLinkedListElement tmp1 = null, tmp2 = this.headElement;
while (index > 0)
{
tmp1 = tmp2;
tmp2 = tmp2.Next;
index--;
}
DataGridViewIntLinkedListElement tmp3 = tmp2.Next;
if (tmp1 == null)
{
this.headElement = tmp3;
}
else
{
tmp1.Next = tmp3;
}
this.count--;
this.lastAccessedElement = null;
this.lastAccessedIndex = -1;
}
}
///
///
/// Represents an emunerator of elements in a linked list.
///
internal class DataGridViewIntLinkedListEnumerator : IEnumerator
{
private DataGridViewIntLinkedListElement headElement;
private DataGridViewIntLinkedListElement current;
private bool reset;
///
public DataGridViewIntLinkedListEnumerator(DataGridViewIntLinkedListElement headElement)
{
this.headElement = headElement;
this.reset = true;
}
///
object IEnumerator.Current
{
get
{
Debug.Assert(this.current != null); // Since this is for internal use only.
return this.current.Int;
}
}
///
bool IEnumerator.MoveNext()
{
if (this.reset)
{
Debug.Assert(this.current == null);
this.current = this.headElement;
this.reset = false;
}
else
{
Debug.Assert(this.current != null); // Since this is for internal use only.
this.current = this.current.Next;
}
return (this.current != null);
}
///
void IEnumerator.Reset()
{
this.reset = true;
this.current = null;
}
}
///
///
/// Represents an element in a linked list.
///
internal class DataGridViewIntLinkedListElement
{
private int integer;
private DataGridViewIntLinkedListElement next;
///
public DataGridViewIntLinkedListElement(int integer)
{
this.integer = integer;
}
///
public int Int
{
get
{
return this.integer;
}
set
{
this.integer = value;
}
}
///
public DataGridViewIntLinkedListElement Next
{
get
{
return this.next;
}
set
{
this.next = value;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RowTypeElement.cs
- AttachedPropertyMethodSelector.cs
- WindowsAuthenticationEventArgs.cs
- HostUtils.cs
- TypeReference.cs
- InputQueue.cs
- OdbcConnectionFactory.cs
- listitem.cs
- TraceUtility.cs
- DoWorkEventArgs.cs
- OrderPreservingPipeliningSpoolingTask.cs
- TdsParserSessionPool.cs
- Span.cs
- RegexGroupCollection.cs
- ReferentialConstraint.cs
- OrderPreservingMergeHelper.cs
- TypeInfo.cs
- HealthMonitoringSectionHelper.cs
- ReceiveContext.cs
- ConfigurationLocationCollection.cs
- InstanceNotReadyException.cs
- DesignOnlyAttribute.cs
- HostVisual.cs
- ButtonRenderer.cs
- ActivityBuilderHelper.cs
- HwndHostAutomationPeer.cs
- QueryContinueDragEventArgs.cs
- IssuanceLicense.cs
- ThreadAbortException.cs
- XmlAttributeAttribute.cs
- StringFormat.cs
- VersionConverter.cs
- RecognizedAudio.cs
- IteratorFilter.cs
- AndMessageFilterTable.cs
- URLString.cs
- DataObjectPastingEventArgs.cs
- CharacterShapingProperties.cs
- ImageDrawing.cs
- ConsumerConnectionPoint.cs
- WebDescriptionAttribute.cs
- DragDrop.cs
- ColumnMapCopier.cs
- ProjectionPathSegment.cs
- HitTestResult.cs
- ReadOnlyCollection.cs
- CallbackHandler.cs
- SqlDataSourceConfigureFilterForm.cs
- FileNotFoundException.cs
- _NativeSSPI.cs
- SqlClientFactory.cs
- DeobfuscatingStream.cs
- DrawingContextDrawingContextWalker.cs
- ErrorHandlerModule.cs
- CollectionChangedEventManager.cs
- MissingMethodException.cs
- XsltOutput.cs
- SelectorItemAutomationPeer.cs
- SecurityUtils.cs
- XslAstAnalyzer.cs
- StrokeIntersection.cs
- _LocalDataStore.cs
- DictionarySurrogate.cs
- ObjectListSelectEventArgs.cs
- SqlUtils.cs
- MessageQueueConverter.cs
- SiteMap.cs
- IndependentAnimationStorage.cs
- Encoding.cs
- RijndaelManagedTransform.cs
- ProcessStartInfo.cs
- HttpCapabilitiesEvaluator.cs
- WindowsListView.cs
- HtmlHead.cs
- DrawingAttributesDefaultValueFactory.cs
- XPathBinder.cs
- PieceDirectory.cs
- PackageRelationshipSelector.cs
- SessionEndingEventArgs.cs
- DispatcherOperation.cs
- GeneralTransform2DTo3DTo2D.cs
- RelationshipSet.cs
- BaseConfigurationRecord.cs
- PrimitiveXmlSerializers.cs
- ValueUtilsSmi.cs
- SchemaExporter.cs
- WebBaseEventKeyComparer.cs
- DoubleLink.cs
- PropertyChangedEventManager.cs
- Pair.cs
- EventLogStatus.cs
- CustomAttributeSerializer.cs
- SeekableReadStream.cs
- XmlDownloadManager.cs
- HtmlTableRowCollection.cs
- CqlIdentifiers.cs
- TreeNodeCollectionEditorDialog.cs
- InstanceKeyView.cs
- Html32TextWriter.cs
- TabItemWrapperAutomationPeer.cs