Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FileClassifier.cs
- XmlSchemaProviderAttribute.cs
- AsymmetricSignatureFormatter.cs
- DBProviderConfigurationHandler.cs
- PromptBuilder.cs
- Route.cs
- DataBoundControlHelper.cs
- DebugController.cs
- UntrustedRecipientException.cs
- Style.cs
- XslCompiledTransform.cs
- SecurityState.cs
- wgx_sdk_version.cs
- AnonymousIdentificationSection.cs
- TextEditorMouse.cs
- UpDownBase.cs
- sqlstateclientmanager.cs
- TriggerBase.cs
- SafeCryptContextHandle.cs
- RIPEMD160Managed.cs
- DrawToolTipEventArgs.cs
- EntityParameter.cs
- MultipleCopiesCollection.cs
- UndoEngine.cs
- GenericUriParser.cs
- DescendentsWalker.cs
- StringDictionaryEditor.cs
- DataGridItemAutomationPeer.cs
- TextBoxBaseDesigner.cs
- ToolboxItemFilterAttribute.cs
- AddValidationError.cs
- ProxyFragment.cs
- InstanceLockLostException.cs
- ApplicationDirectory.cs
- Constants.cs
- FormCollection.cs
- PagesSection.cs
- HttpListenerElement.cs
- EntityDataSourceState.cs
- PrtTicket_Public_Simple.cs
- SmiEventStream.cs
- Stylesheet.cs
- Thread.cs
- CallTemplateAction.cs
- DeferredSelectedIndexReference.cs
- XmlSchemaImporter.cs
- ClockGroup.cs
- FieldNameLookup.cs
- ProviderSettingsCollection.cs
- FormViewInsertedEventArgs.cs
- WebBrowserNavigatingEventHandler.cs
- ContentWrapperAttribute.cs
- StyleHelper.cs
- ManipulationDeltaEventArgs.cs
- Pen.cs
- DataColumn.cs
- indexingfiltermarshaler.cs
- ImageDrawing.cs
- TextServicesDisplayAttribute.cs
- ProtectedProviderSettings.cs
- DataGridViewSelectedRowCollection.cs
- regiisutil.cs
- RegexTypeEditor.cs
- ToolStripControlHost.cs
- Win32.cs
- ImplicitInputBrush.cs
- Point3DAnimationUsingKeyFrames.cs
- TraceUtils.cs
- CallbackValidatorAttribute.cs
- TextEditorContextMenu.cs
- StyleSheetDesigner.cs
- DataGridViewCellConverter.cs
- AppModelKnownContentFactory.cs
- HybridCollection.cs
- WebSysDisplayNameAttribute.cs
- UrlMappingCollection.cs
- SqlClientFactory.cs
- MonthChangedEventArgs.cs
- CallContext.cs
- QilFactory.cs
- SQLCharsStorage.cs
- KnownTypes.cs
- AlignmentXValidation.cs
- DataColumnPropertyDescriptor.cs
- ResXResourceWriter.cs
- ConditionalAttribute.cs
- EastAsianLunisolarCalendar.cs
- ErrorStyle.cs
- TextElementEditingBehaviorAttribute.cs
- EmptyCollection.cs
- ClientData.cs
- DataGridViewSelectedColumnCollection.cs
- WindowsSlider.cs
- ConfigurationSection.cs
- GreenMethods.cs
- Delegate.cs
- TriggerBase.cs
- CodeMemberEvent.cs
- ITextView.cs
- WpfSharedXamlSchemaContext.cs