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
- NameValueCollection.cs
- WriteTimeStream.cs
- ParserExtension.cs
- NotFiniteNumberException.cs
- OneOf.cs
- CreationContext.cs
- TreeNode.cs
- HScrollBar.cs
- ExecutorLocksHeldException.cs
- XmlCustomFormatter.cs
- HMACSHA384.cs
- SortFieldComparer.cs
- ElementNotEnabledException.cs
- SqlStatistics.cs
- DocumentReferenceCollection.cs
- NoClickablePointException.cs
- Point3D.cs
- AttributeTable.cs
- sqlser.cs
- SvcMapFileLoader.cs
- PathData.cs
- RSAOAEPKeyExchangeFormatter.cs
- InstanceNormalEvent.cs
- QilScopedVisitor.cs
- SystemIcmpV4Statistics.cs
- PeerContact.cs
- PageParserFilter.cs
- RequestBringIntoViewEventArgs.cs
- AudioSignalProblemOccurredEventArgs.cs
- AdRotator.cs
- DataTableCollection.cs
- SqlGatherConsumedAliases.cs
- FormatterConverter.cs
- CodeLinePragma.cs
- CookieParameter.cs
- XmlHelper.cs
- TextWriter.cs
- GroupItemAutomationPeer.cs
- AssociationType.cs
- BinaryParser.cs
- DateTimeValueSerializerContext.cs
- ActivityExecutorDelegateInfo.cs
- UpdateCommandGenerator.cs
- EntityProxyTypeInfo.cs
- BamlBinaryReader.cs
- CommonXSendMessage.cs
- DrawingContextWalker.cs
- SolidColorBrush.cs
- XXXOnTypeBuilderInstantiation.cs
- HttpVersion.cs
- ResourceKey.cs
- RegexMatch.cs
- WebConfigurationHostFileChange.cs
- RankException.cs
- CompilationUnit.cs
- FixedSOMImage.cs
- DataGridViewCell.cs
- DesignerCommandAdapter.cs
- ValidationErrorEventArgs.cs
- Root.cs
- UnsafeNativeMethodsTablet.cs
- SymDocumentType.cs
- ElementMarkupObject.cs
- ContextBase.cs
- BlurBitmapEffect.cs
- MediaPlayer.cs
- TypeValidationEventArgs.cs
- XamlSerializerUtil.cs
- EnumValAlphaComparer.cs
- TraceContextRecord.cs
- TransactionScope.cs
- ExpressionVisitorHelpers.cs
- GridView.cs
- PackWebResponse.cs
- TypeHelper.cs
- Cursor.cs
- XPathChildIterator.cs
- SEHException.cs
- Misc.cs
- CallbackValidator.cs
- XslAstAnalyzer.cs
- XmlWrappingReader.cs
- CommonRemoteMemoryBlock.cs
- HttpProfileGroupBase.cs
- CurrencyWrapper.cs
- FrameworkTemplate.cs
- DataExpression.cs
- TransformConverter.cs
- Contracts.cs
- Camera.cs
- WindowsListViewGroup.cs
- RewritingPass.cs
- TreeNodeStyle.cs
- SchemaHelper.cs
- PieceDirectory.cs
- DynamicRouteExpression.cs
- TemplatePartAttribute.cs
- DocumentPage.cs
- FixedSOMTableCell.cs
- ListControl.cs