Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / Util / DoubleLinkList.cs / 1 / DoubleLinkList.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* DoubleLinkList
*
* Copyright (c) 1998-1999, Microsoft Corporation
*
*/
namespace System.Web.Util {
using System.Text;
using System.Runtime.Serialization.Formatters;
internal class DoubleLinkList : DoubleLink {
internal DoubleLinkList() {
}
#if UNUSED_CODE
internal void Clear() {
_next = _prev = this;
}
#endif
internal bool IsEmpty() {
return _next == this;
}
#if UNUSED_CODE
internal DoubleLink GetHead() {
return _next;
}
#endif
#if UNUSED_CODE
internal DoubleLink GetTail() {
return _prev;
}
#endif
#if UNUSED_CODE
internal Object RemoveHead() {
_next.Remove(); return _next.Item;
}
#endif
#if UNUSED_CODE
internal Object RemoveTail() {
_prev.Remove(); return _prev.Item;
}
#endif
internal virtual void InsertHead(DoubleLink entry) {
entry.InsertAfter(this);
}
internal virtual void InsertTail(DoubleLink entry) {
entry.InsertBefore(this);
}
#if UNUSED_CODE
internal DoubleLinkList RemoveSublist(DoubleLink head, DoubleLink tail) {
DoubleLinkList list = new DoubleLinkList();
head._prev._next = tail._next;
tail._next._prev = head._prev;
list._next = head;
list._prev = tail;
head._prev = list;
tail._next = list;
return list;
}
#endif
internal DoubleLinkListEnumerator GetEnumerator() {
return new DoubleLinkListEnumerator(this);
}
#if DBG
internal override void DebugValidate() {
DoubleLink l1, l2;
base.DebugValidate();
/*
* Detect loops by moving one pointer forward 2 for every 1
* of the other.
*/
l1 = l2 = this;
for (;;) {
/* move l2 forward */
l2 = l2._next;
if (l2 == this)
break;
Debug.CheckValid(l2 != l1, "Invalid loop in list, first move.");
l2.DebugValidate();
/* move l2 forward again */
l2 = l2._next;
if (l2 == this)
break;
Debug.CheckValid(l2 != l1, "Invalid loop in list, second move.");
l2.DebugValidate();
/* move l1 forward */
l1 = l1._next;
}
}
internal override string DebugDescription(String indent) {
string desc;
DoubleLinkListEnumerator lenum;
int c;
StringBuilder sb;
string i2 = indent + " ";
if (IsEmpty()) {
desc = indent + "DoubleLinkList is empty\n";
}
else {
c = Length;
sb = new StringBuilder(indent + "DoubleLinkList has " + c + " entries.\n");
lenum = GetEnumerator();
while (lenum.MoveNext()) {
sb.Append(Debug.GetDescription(lenum.GetDoubleLink(), i2));
}
desc = sb.ToString();
}
return desc;
}
#endif
internal int Length {
get {
DoubleLinkListEnumerator lenum;
int c;
Debug.Validate(this);
c = 0;
lenum = GetEnumerator();
while (lenum.MoveNext()) {
c++;
}
return c;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* DoubleLinkList
*
* Copyright (c) 1998-1999, Microsoft Corporation
*
*/
namespace System.Web.Util {
using System.Text;
using System.Runtime.Serialization.Formatters;
internal class DoubleLinkList : DoubleLink {
internal DoubleLinkList() {
}
#if UNUSED_CODE
internal void Clear() {
_next = _prev = this;
}
#endif
internal bool IsEmpty() {
return _next == this;
}
#if UNUSED_CODE
internal DoubleLink GetHead() {
return _next;
}
#endif
#if UNUSED_CODE
internal DoubleLink GetTail() {
return _prev;
}
#endif
#if UNUSED_CODE
internal Object RemoveHead() {
_next.Remove(); return _next.Item;
}
#endif
#if UNUSED_CODE
internal Object RemoveTail() {
_prev.Remove(); return _prev.Item;
}
#endif
internal virtual void InsertHead(DoubleLink entry) {
entry.InsertAfter(this);
}
internal virtual void InsertTail(DoubleLink entry) {
entry.InsertBefore(this);
}
#if UNUSED_CODE
internal DoubleLinkList RemoveSublist(DoubleLink head, DoubleLink tail) {
DoubleLinkList list = new DoubleLinkList();
head._prev._next = tail._next;
tail._next._prev = head._prev;
list._next = head;
list._prev = tail;
head._prev = list;
tail._next = list;
return list;
}
#endif
internal DoubleLinkListEnumerator GetEnumerator() {
return new DoubleLinkListEnumerator(this);
}
#if DBG
internal override void DebugValidate() {
DoubleLink l1, l2;
base.DebugValidate();
/*
* Detect loops by moving one pointer forward 2 for every 1
* of the other.
*/
l1 = l2 = this;
for (;;) {
/* move l2 forward */
l2 = l2._next;
if (l2 == this)
break;
Debug.CheckValid(l2 != l1, "Invalid loop in list, first move.");
l2.DebugValidate();
/* move l2 forward again */
l2 = l2._next;
if (l2 == this)
break;
Debug.CheckValid(l2 != l1, "Invalid loop in list, second move.");
l2.DebugValidate();
/* move l1 forward */
l1 = l1._next;
}
}
internal override string DebugDescription(String indent) {
string desc;
DoubleLinkListEnumerator lenum;
int c;
StringBuilder sb;
string i2 = indent + " ";
if (IsEmpty()) {
desc = indent + "DoubleLinkList is empty\n";
}
else {
c = Length;
sb = new StringBuilder(indent + "DoubleLinkList has " + c + " entries.\n");
lenum = GetEnumerator();
while (lenum.MoveNext()) {
sb.Append(Debug.GetDescription(lenum.GetDoubleLink(), i2));
}
desc = sb.ToString();
}
return desc;
}
#endif
internal int Length {
get {
DoubleLinkListEnumerator lenum;
int c;
Debug.Validate(this);
c = 0;
lenum = GetEnumerator();
while (lenum.MoveNext()) {
c++;
}
return c;
}
}
}
}
// 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
- OdbcRowUpdatingEvent.cs
- ClientSection.cs
- ExpressionDumper.cs
- DbDataAdapter.cs
- ToolboxItem.cs
- TraceSource.cs
- WebProxyScriptElement.cs
- LicFileLicenseProvider.cs
- RedirectionProxy.cs
- WebPartDisplayModeEventArgs.cs
- XmlArrayAttribute.cs
- WebPartMenuStyle.cs
- NumericPagerField.cs
- TreeViewItemAutomationPeer.cs
- SerializationInfo.cs
- BaseTemplateCodeDomTreeGenerator.cs
- TextTreeTextNode.cs
- LabelDesigner.cs
- XPathNodeList.cs
- Roles.cs
- SvcMapFileLoader.cs
- Brush.cs
- baseaxisquery.cs
- ExtensionSimplifierMarkupObject.cs
- SkewTransform.cs
- IHttpResponseInternal.cs
- HMACSHA512.cs
- MessageDecoder.cs
- CompiledQuery.cs
- GridItemPatternIdentifiers.cs
- DurableInstanceProvider.cs
- AQNBuilder.cs
- CommandLineParser.cs
- LazyTextWriterCreator.cs
- WebPageTraceListener.cs
- DefaultHttpHandler.cs
- cookie.cs
- GridPattern.cs
- DbMetaDataFactory.cs
- DataSysAttribute.cs
- ConfigUtil.cs
- Win32PrintDialog.cs
- IdentifierCollection.cs
- ICollection.cs
- FormatException.cs
- ImageList.cs
- COAUTHINFO.cs
- CLSCompliantAttribute.cs
- SafeFileHandle.cs
- PartialCachingControl.cs
- MSAANativeProvider.cs
- RightsManagementEncryptionTransform.cs
- ValidatingReaderNodeData.cs
- X509ThumbprintKeyIdentifierClause.cs
- MessageSecurityProtocol.cs
- SmiContext.cs
- CancelEventArgs.cs
- TraversalRequest.cs
- ServiceDeploymentInfo.cs
- GeneralTransform3D.cs
- StyleXamlTreeBuilder.cs
- TemplateBaseAction.cs
- WindowsScrollBarBits.cs
- AdPostCacheSubstitution.cs
- DragCompletedEventArgs.cs
- HostingEnvironmentException.cs
- SafeNativeMethods.cs
- ColumnMapVisitor.cs
- ConditionCollection.cs
- Int64Animation.cs
- SupportingTokenDuplexChannel.cs
- ChooseAction.cs
- ProfileManager.cs
- Vector3DValueSerializer.cs
- DocumentsTrace.cs
- Int32AnimationUsingKeyFrames.cs
- WebPartAuthorizationEventArgs.cs
- UnorderedHashRepartitionStream.cs
- FilteredAttributeCollection.cs
- XmlComment.cs
- ServiceChannelManager.cs
- DataViewManager.cs
- CuspData.cs
- Int32Rect.cs
- ReadWriteSpinLock.cs
- EnumMemberAttribute.cs
- MeasureItemEvent.cs
- ControlValuePropertyAttribute.cs
- XmlElementAttribute.cs
- SmtpReplyReaderFactory.cs
- Certificate.cs
- ThreadStaticAttribute.cs
- UnsafeNativeMethods.cs
- ParameterEditorUserControl.cs
- BindingEntityInfo.cs
- CompareInfo.cs
- BamlBinaryReader.cs
- Vector3D.cs
- Stream.cs
- TextEditorThreadLocalStore.cs