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
- ParentQuery.cs
- PropertyMapper.cs
- UniqueConstraint.cs
- CapabilitiesSection.cs
- ImageFormat.cs
- DatePickerTextBox.cs
- AdvancedBindingPropertyDescriptor.cs
- FrameworkElement.cs
- AutoGeneratedFieldProperties.cs
- SqlDataSourceView.cs
- Size3DValueSerializer.cs
- DataGridViewIntLinkedList.cs
- BindingManagerDataErrorEventArgs.cs
- SelectionItemPattern.cs
- TogglePattern.cs
- OracleColumn.cs
- wmiprovider.cs
- SoapRpcMethodAttribute.cs
- AuthenticationService.cs
- ReceiveDesigner.xaml.cs
- UpdateCommandGenerator.cs
- ServiceDeploymentInfo.cs
- EmptyEnumerator.cs
- HtmlDocument.cs
- Separator.cs
- UnorderedHashRepartitionStream.cs
- HttpProcessUtility.cs
- GridPattern.cs
- FakeModelItemImpl.cs
- ComponentEditorPage.cs
- SubpageParaClient.cs
- ControlPropertyNameConverter.cs
- COM2ICategorizePropertiesHandler.cs
- LineServicesCallbacks.cs
- HtmlInputPassword.cs
- StructuralCache.cs
- NonBatchDirectoryCompiler.cs
- CallbackException.cs
- TemplateBindingExpression.cs
- Socket.cs
- AffineTransform3D.cs
- _IPv6Address.cs
- PersistencePipeline.cs
- AutomationElementIdentifiers.cs
- NetCodeGroup.cs
- SymmetricKey.cs
- LayoutInformation.cs
- MonthChangedEventArgs.cs
- WmfPlaceableFileHeader.cs
- GeneratedView.cs
- WebConfigurationFileMap.cs
- BitStream.cs
- ColumnMapTranslator.cs
- ColorContextHelper.cs
- DependencyPropertyChangedEventArgs.cs
- PassportAuthentication.cs
- PaperSize.cs
- MachineKeySection.cs
- SinglePageViewer.cs
- QilXmlReader.cs
- SqlException.cs
- XDRSchema.cs
- DoubleStorage.cs
- HttpContextServiceHost.cs
- DataColumnMappingCollection.cs
- DataGridComboBoxColumn.cs
- HTTPNotFoundHandler.cs
- PreloadHost.cs
- WindowsStartMenu.cs
- TraceContext.cs
- EventHandlersStore.cs
- AttributeCollection.cs
- MemberInfoSerializationHolder.cs
- SoapHeaders.cs
- ArrayExtension.cs
- TagMapInfo.cs
- WebPartHelpVerb.cs
- PageWrapper.cs
- Int32AnimationUsingKeyFrames.cs
- Operators.cs
- RegisteredDisposeScript.cs
- BidirectionalDictionary.cs
- XmlDocumentSerializer.cs
- SqlConnectionFactory.cs
- ContentIterators.cs
- AutoSizeToolBoxItem.cs
- ZipFileInfo.cs
- UrlAuthFailedErrorFormatter.cs
- InfoCardAsymmetricCrypto.cs
- TransformCryptoHandle.cs
- OSFeature.cs
- CreateParams.cs
- EventSinkHelperWriter.cs
- GregorianCalendarHelper.cs
- Aggregates.cs
- SourceFilter.cs
- RegexWriter.cs
- UrlPath.cs
- ThreadSafeList.cs
- DriveInfo.cs