Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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. //------------------------------------------------------------------------------ //// 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Command.cs
- ErrorTableItemStyle.cs
- MsmqTransportElement.cs
- DecimalConstantAttribute.cs
- HiddenFieldPageStatePersister.cs
- DesignConnection.cs
- WebProxyScriptElement.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- UTF8Encoding.cs
- FreeFormDesigner.cs
- PrintController.cs
- EntityContainerRelationshipSet.cs
- base64Transforms.cs
- JapaneseLunisolarCalendar.cs
- UIPropertyMetadata.cs
- AutomationEvent.cs
- FileDialogCustomPlace.cs
- FtpRequestCacheValidator.cs
- designeractionlistschangedeventargs.cs
- UnsafeNativeMethods.cs
- ReflectEventDescriptor.cs
- BooleanStorage.cs
- NullableDecimalMinMaxAggregationOperator.cs
- MaterialGroup.cs
- InheritedPropertyDescriptor.cs
- CookieParameter.cs
- QilSortKey.cs
- PartialCachingAttribute.cs
- Configuration.cs
- TranslateTransform.cs
- ObjectViewQueryResultData.cs
- WsdlExporter.cs
- CompositeScriptReference.cs
- PrivilegeNotHeldException.cs
- ExpandCollapsePattern.cs
- FixUp.cs
- VirtualPathExtension.cs
- NullableDecimalAverageAggregationOperator.cs
- HtmlTableRow.cs
- SystemTcpConnection.cs
- RawStylusInputCustomDataList.cs
- TypeSchema.cs
- ConfigXmlWhitespace.cs
- CommandValueSerializer.cs
- ClientTargetSection.cs
- EarlyBoundInfo.cs
- RadioButtonStandardAdapter.cs
- TypeCacheManager.cs
- TraceSection.cs
- CompilationRelaxations.cs
- XhtmlBasicSelectionListAdapter.cs
- AssemblyGen.cs
- Parser.cs
- WebControlsSection.cs
- GridViewCancelEditEventArgs.cs
- DataGridViewColumnCollection.cs
- PathNode.cs
- Viewport2DVisual3D.cs
- DirectionalLight.cs
- ColorAnimation.cs
- PointConverter.cs
- FakeModelItemImpl.cs
- MetadataSerializer.cs
- RowToParametersTransformer.cs
- Cursors.cs
- TypeContext.cs
- XmlWrappingReader.cs
- JsonFormatWriterGenerator.cs
- InputLanguage.cs
- AlignmentYValidation.cs
- UrlAuthorizationModule.cs
- MouseEventArgs.cs
- ResourceIDHelper.cs
- GridView.cs
- XNodeNavigator.cs
- GridViewRow.cs
- ColumnResizeAdorner.cs
- DictionaryContent.cs
- ThicknessAnimationBase.cs
- ZipIOBlockManager.cs
- Single.cs
- SettingsPropertyValueCollection.cs
- SamlAuthorizationDecisionStatement.cs
- ListItemCollection.cs
- DataGridViewControlCollection.cs
- FontSizeConverter.cs
- ComponentGlyph.cs
- FormsAuthenticationConfiguration.cs
- KnownTypesHelper.cs
- DocumentXmlWriter.cs
- BatchParser.cs
- CharAnimationBase.cs
- StylusPointCollection.cs
- StrongNameMembershipCondition.cs
- PaintEvent.cs
- XmlValidatingReader.cs
- SizeLimitedCache.cs
- TableLayoutSettingsTypeConverter.cs
- QueryContinueDragEvent.cs
- SafePEFileHandle.cs