Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Shared / MS / Internal / GenericEnumerator.cs / 1 / GenericEnumerator.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GenericEnumerator.cs
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using MS.Utility;
#if PRESENTATION_CORE
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
#else
using SR=System.Windows.SR;
using SRID=System.Windows.SRID;
#endif
namespace MS.Internal
{
///
/// GenericEnumerator
///
internal class GenericEnumerator : IEnumerator
{
#region Delegates
internal delegate int GetGenerationIDDelegate();
#endregion
#region Constructors
private GenericEnumerator()
{
}
internal GenericEnumerator(IList array, GetGenerationIDDelegate getGenerationID)
{
_array = array;
_count = _array.Count;
_position = -1;
_getGenerationID = getGenerationID;
_originalGenerationID = _getGenerationID();
}
#endregion
#region Private
private void VerifyCurrent()
{
if ( (-1 == _position)
|| (_position >= _count))
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext));
}
}
#endregion
#region IEnumerator
///
/// Returns the object at the current location of the key times list.
/// Use the strongly typed version instead.
///
object
IEnumerator.Current
{
get
{
VerifyCurrent();
return _current;
}
}
///
/// Move to the next value in the key times list
///
/// true if succeeded, false if at the end of the list
public bool MoveNext()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
_position++;
if (_position >= _count)
{
_position = _count;
return false;
}
else
{
Debug.Assert(_position >= 0);
_current = _array[_position];
return true;
}
}
///
/// Move to the position before the first value in the list.
///
public void Reset()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
else
{
_position = -1;
}
}
#endregion
#region Data
private IList _array;
private object _current;
private int _count;
private int _position;
private int _originalGenerationID;
private GetGenerationIDDelegate _getGenerationID;
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001
//
// File: GenericEnumerator.cs
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Windows;
using MS.Utility;
#if PRESENTATION_CORE
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
#else
using SR=System.Windows.SR;
using SRID=System.Windows.SRID;
#endif
namespace MS.Internal
{
///
/// GenericEnumerator
///
internal class GenericEnumerator : IEnumerator
{
#region Delegates
internal delegate int GetGenerationIDDelegate();
#endregion
#region Constructors
private GenericEnumerator()
{
}
internal GenericEnumerator(IList array, GetGenerationIDDelegate getGenerationID)
{
_array = array;
_count = _array.Count;
_position = -1;
_getGenerationID = getGenerationID;
_originalGenerationID = _getGenerationID();
}
#endregion
#region Private
private void VerifyCurrent()
{
if ( (-1 == _position)
|| (_position >= _count))
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_VerifyContext));
}
}
#endregion
#region IEnumerator
///
/// Returns the object at the current location of the key times list.
/// Use the strongly typed version instead.
///
object
IEnumerator.Current
{
get
{
VerifyCurrent();
return _current;
}
}
///
/// Move to the next value in the key times list
///
/// true if succeeded, false if at the end of the list
public bool MoveNext()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
_position++;
if (_position >= _count)
{
_position = _count;
return false;
}
else
{
Debug.Assert(_position >= 0);
_current = _array[_position];
return true;
}
}
///
/// Move to the position before the first value in the list.
///
public void Reset()
{
if (_getGenerationID() != _originalGenerationID)
{
throw new InvalidOperationException(SR.Get(SRID.Enumerator_CollectionChanged));
}
else
{
_position = -1;
}
}
#endregion
#region Data
private IList _array;
private object _current;
private int _count;
private int _position;
private int _originalGenerationID;
private GetGenerationIDDelegate _getGenerationID;
#endregion
}
}
// 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
- XmlIlGenerator.cs
- SimpleHandlerFactory.cs
- RemotingServices.cs
- _LoggingObject.cs
- ExceptionHelpers.cs
- Label.cs
- HebrewNumber.cs
- OleDbEnumerator.cs
- WindowsSecurityTokenAuthenticator.cs
- LocalizableResourceBuilder.cs
- SiteMapDesignerDataSourceView.cs
- InputBinder.cs
- PartManifestEntry.cs
- ScrollData.cs
- EditBehavior.cs
- LifetimeServices.cs
- AssociationSetEnd.cs
- UnescapedXmlDiagnosticData.cs
- StylusPointPropertyUnit.cs
- ProtocolException.cs
- SoapInteropTypes.cs
- InkCanvasFeedbackAdorner.cs
- TransportationConfigurationTypeInstallComponent.cs
- DBDataPermissionAttribute.cs
- ConfigurationSection.cs
- LocalBuilder.cs
- MouseButton.cs
- DataGridViewCellValidatingEventArgs.cs
- ParseNumbers.cs
- PropertyDescriptor.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- WorkflowOperationFault.cs
- DesignerRegionCollection.cs
- WindowsFormsSectionHandler.cs
- TheQuery.cs
- SslStream.cs
- WorkflowDefinitionDispenser.cs
- WriterOutput.cs
- CollectionViewSource.cs
- ErrorRuntimeConfig.cs
- ExpandCollapseProviderWrapper.cs
- ListViewDeletedEventArgs.cs
- BitmapSizeOptions.cs
- DetailsViewInsertEventArgs.cs
- NullableFloatAverageAggregationOperator.cs
- CodeDelegateCreateExpression.cs
- ClientConfigurationSystem.cs
- InputLangChangeEvent.cs
- NegotiateStream.cs
- FileInfo.cs
- SamlAdvice.cs
- CachedFontFamily.cs
- EventData.cs
- XhtmlBasicCommandAdapter.cs
- DrawingAttributesDefaultValueFactory.cs
- X509ChainPolicy.cs
- PeerNameResolver.cs
- CompiledIdentityConstraint.cs
- DbProviderFactories.cs
- CodeDOMProvider.cs
- PriorityBinding.cs
- WebColorConverter.cs
- IncrementalCompileAnalyzer.cs
- Label.cs
- TrimSurroundingWhitespaceAttribute.cs
- ValueUtilsSmi.cs
- XmlSchemaAnnotation.cs
- Authorization.cs
- WindowsTab.cs
- SpecialNameAttribute.cs
- RequestUriProcessor.cs
- StandardCommands.cs
- Rotation3DAnimationBase.cs
- ToolStripDropDownClosingEventArgs.cs
- SymLanguageVendor.cs
- StateFinalizationDesigner.cs
- OverrideMode.cs
- LoadedEvent.cs
- SerializationAttributes.cs
- WindowHideOrCloseTracker.cs
- ChtmlSelectionListAdapter.cs
- MemberAccessException.cs
- AssociationType.cs
- EnumUnknown.cs
- CodeIndexerExpression.cs
- JournalEntryListConverter.cs
- WrappedIUnknown.cs
- ThicknessAnimation.cs
- GregorianCalendar.cs
- DrawingAttributesDefaultValueFactory.cs
- CreateParams.cs
- HttpApplicationFactory.cs
- WSSecureConversation.cs
- RadioButtonRenderer.cs
- ListItemParagraph.cs
- MeasureItemEvent.cs
- ImageMap.cs
- ValidatingReaderNodeData.cs
- ListControlConvertEventArgs.cs
- TextDecorationLocationValidation.cs