Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- SqlBulkCopyColumnMapping.cs
- MemberMemberBinding.cs
- TraceSection.cs
- Table.cs
- AutomationElement.cs
- MessageQueueConverter.cs
- ComboBox.cs
- HttpInputStream.cs
- ScopelessEnumAttribute.cs
- IndexedGlyphRun.cs
- CryptoConfig.cs
- LocalizationParserHooks.cs
- ScriptResourceAttribute.cs
- SplineKeyFrames.cs
- PreviewPrintController.cs
- querybuilder.cs
- BinHexEncoder.cs
- ExceptionAggregator.cs
- ActivityBuilderHelper.cs
- TextAutomationPeer.cs
- DefaultObjectMappingItemCollection.cs
- TextElement.cs
- ToolStripSettings.cs
- IISMapPath.cs
- TypeDependencyAttribute.cs
- PageThemeBuildProvider.cs
- DCSafeHandle.cs
- EventMappingSettings.cs
- MetricEntry.cs
- WebPartDescriptionCollection.cs
- PageFunction.cs
- DirectoryNotFoundException.cs
- infer.cs
- ItemsControl.cs
- CounterCreationData.cs
- MailAddress.cs
- Frame.cs
- CacheDependency.cs
- WebDescriptionAttribute.cs
- ContractReference.cs
- Matrix.cs
- DbConnectionInternal.cs
- WebPartVerb.cs
- TreeIterator.cs
- ProjectionPruner.cs
- SignatureDescription.cs
- MimeTextImporter.cs
- Quad.cs
- _LoggingObject.cs
- RSAPKCS1SignatureDeformatter.cs
- GenerateTemporaryTargetAssembly.cs
- DynamicArgumentDialog.cs
- SessionEndingCancelEventArgs.cs
- URLString.cs
- PathTooLongException.cs
- XDRSchema.cs
- ManipulationStartedEventArgs.cs
- CompiledRegexRunnerFactory.cs
- XmlSerializerAssemblyAttribute.cs
- ComboBox.cs
- CommandField.cs
- Brushes.cs
- coordinatorscratchpad.cs
- XMLDiffLoader.cs
- QilGenerator.cs
- Cursor.cs
- StrongNameMembershipCondition.cs
- Menu.cs
- DataServiceQueryOfT.cs
- ComponentFactoryHelpers.cs
- CategoryEditor.cs
- PerspectiveCamera.cs
- MethodBuilderInstantiation.cs
- ComplexTypeEmitter.cs
- WsrmTraceRecord.cs
- LineBreak.cs
- ActivityDesignerHelper.cs
- SystemFonts.cs
- OletxEnlistment.cs
- LogicalMethodInfo.cs
- IResourceProvider.cs
- ServiceKnownTypeAttribute.cs
- DaylightTime.cs
- LayoutSettings.cs
- CodeGroup.cs
- TableSectionStyle.cs
- CaseInsensitiveHashCodeProvider.cs
- EncoderParameters.cs
- D3DImage.cs
- AuthenticodeSignatureInformation.cs
- RowCache.cs
- GatewayDefinition.cs
- XmlDataContract.cs
- TargetControlTypeCache.cs
- CharacterBuffer.cs
- Transform.cs
- XamlStyleSerializer.cs
- TokenizerHelper.cs
- XmlWrappingReader.cs
- LambdaSerializationException.cs