Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Windows / LocalValueEnumerator.cs / 1305600 / LocalValueEnumerator.cs
using System;
using System.Collections;
using System.Diagnostics;
using MS.Internal.WindowsBase;
#pragma warning disable 1634, 1691 // suppressing PreSharp warnings
namespace System.Windows
{
///
/// Local value enumeration object
///
///
/// Modifying local values (via SetValue or ClearValue) during enumeration
/// is unsupported
///
public struct LocalValueEnumerator : IEnumerator
{
///
/// Overrides Object.GetHashCode
///
/// An integer that represents the hashcode for this object
public override int GetHashCode()
{
return base.GetHashCode();
}
///
/// Determine equality
///
public override bool Equals(object obj)
{
if(obj is LocalValueEnumerator)
{
LocalValueEnumerator other = (LocalValueEnumerator) obj;
return (_count == other._count &&
_index == other._index &&
_snapshot == other._snapshot);
}
else
{
// being compared against something that isn't a LocalValueEnumerator.
return false;
}
}
///
/// Determine equality
///
public static bool operator ==(LocalValueEnumerator obj1, LocalValueEnumerator obj2)
{
return obj1.Equals(obj2);
}
///
/// Determine inequality
///
public static bool operator !=(LocalValueEnumerator obj1, LocalValueEnumerator obj2)
{
return !(obj1 == obj2);
}
///
/// Get current entry
///
public LocalValueEntry Current
{
get
{
if(_index == -1 )
{
#pragma warning suppress 6503 // IEnumerator.Current is documented to throw this exception
throw new InvalidOperationException(SR.Get(SRID.LocalValueEnumerationReset));
}
if(_index >= Count )
{
#pragma warning suppress 6503 // IEnumerator.Current is documented to throw this exception
throw new InvalidOperationException(SR.Get(SRID.LocalValueEnumerationOutOfBounds));
}
return _snapshot[_index];
}
}
///
/// Get current entry (object reference based)
///
object IEnumerator.Current
{
get { return Current; }
}
///
/// Move to the next item in the enumerator
///
/// Success of the method
public bool MoveNext()
{
_index++;
return _index < Count;
}
///
/// Reset enumeration
///
public void Reset()
{
_index = -1;
}
///
/// Return number of items represented in the collection
///
public int Count
{
get { return _count; }
}
internal LocalValueEnumerator(LocalValueEntry[] snapshot, int count)
{
_index = -1;
_count = count;
_snapshot = snapshot;
}
private int _index;
private LocalValueEntry[] _snapshot;
private int _count;
}
///
/// Represents a Property-Value pair for local value enumeration
///
public struct LocalValueEntry
{
///
/// Overrides Object.GetHashCode
///
/// An integer that represents the hashcode for this object
public override int GetHashCode()
{
return base.GetHashCode();
}
///
/// Determine equality
///
public override bool Equals(object obj)
{
LocalValueEntry other = (LocalValueEntry) obj;
return (_dp == other._dp &&
_value == other._value);
}
///
/// Determine equality
///
public static bool operator ==(LocalValueEntry obj1, LocalValueEntry obj2)
{
return obj1.Equals(obj2);
}
///
/// Determine inequality
///
public static bool operator !=(LocalValueEntry obj1, LocalValueEntry obj2)
{
return !(obj1 == obj2);
}
///
/// Dependency property
///
public DependencyProperty Property
{
get { return _dp; }
}
///
/// Value of the property
///
public object Value
{
get { return _value; }
}
internal LocalValueEntry(DependencyProperty dp, object value)
{
_dp = dp;
_value = value;
}
// Internal here because we need to change these around when building
// the snapshot for the LocalValueEnumerator, and we can't make internal
// setters when we have public getters.
internal DependencyProperty _dp;
internal object _value;
}
}
// 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
- DocumentApplicationJournalEntry.cs
- EnumType.cs
- AnnotationComponentChooser.cs
- RadialGradientBrush.cs
- FtpRequestCacheValidator.cs
- Encoding.cs
- CacheForPrimitiveTypes.cs
- XmlEncodedRawTextWriter.cs
- CharUnicodeInfo.cs
- KeyValueInternalCollection.cs
- ListControlActionList.cs
- EmptyElement.cs
- PropertyChangingEventArgs.cs
- UTF8Encoding.cs
- FontCacheUtil.cs
- OpCodes.cs
- Lease.cs
- DomainConstraint.cs
- BitmapEffectDrawingContextState.cs
- CodeTypeOfExpression.cs
- KeyValueInternalCollection.cs
- embossbitmapeffect.cs
- BaseCollection.cs
- DesignTimeData.cs
- ListViewSortEventArgs.cs
- MimeMultiPart.cs
- sqlser.cs
- ImportCatalogPart.cs
- MultiPropertyDescriptorGridEntry.cs
- CharConverter.cs
- InstanceCreationEditor.cs
- SqlDataSourceCommandEventArgs.cs
- UserPersonalizationStateInfo.cs
- ResXResourceSet.cs
- DrawingContextDrawingContextWalker.cs
- DataStreamFromComStream.cs
- PasswordRecoveryDesigner.cs
- WindowProviderWrapper.cs
- CookielessHelper.cs
- DBParameter.cs
- HandledMouseEvent.cs
- ResizeGrip.cs
- SqlUserDefinedTypeAttribute.cs
- SignatureConfirmations.cs
- AspNetPartialTrustHelpers.cs
- AlphabeticalEnumConverter.cs
- WebBrowserHelper.cs
- UserInitiatedNavigationPermission.cs
- PerformanceCounterManager.cs
- FontFaceLayoutInfo.cs
- PiiTraceSource.cs
- XhtmlBasicLinkAdapter.cs
- formatstringdialog.cs
- WebPartChrome.cs
- LZCodec.cs
- BasePattern.cs
- RtfNavigator.cs
- SqlBinder.cs
- ViewManagerAttribute.cs
- KeyNotFoundException.cs
- filewebrequest.cs
- StylusShape.cs
- ObjectQueryState.cs
- Assert.cs
- Hashtable.cs
- _NestedMultipleAsyncResult.cs
- DataMemberAttribute.cs
- ProcessDesigner.cs
- SystemGatewayIPAddressInformation.cs
- ScalarRestriction.cs
- CompoundFileStreamReference.cs
- odbcmetadatacollectionnames.cs
- ManifestResourceInfo.cs
- ParallelForEach.cs
- FacetDescription.cs
- TripleDES.cs
- CodeSnippetStatement.cs
- AuthenticateEventArgs.cs
- BrowserDefinitionCollection.cs
- CultureMapper.cs
- AuthenticationException.cs
- LogFlushAsyncResult.cs
- AuthenticationServiceManager.cs
- HtmlMeta.cs
- SizeAnimation.cs
- mediaeventshelper.cs
- SimpleWebHandlerParser.cs
- SmtpFailedRecipientException.cs
- SimpleTextLine.cs
- WsrmFault.cs
- CryptographicAttribute.cs
- KeyboardDevice.cs
- DataGridViewCheckBoxColumn.cs
- ListViewDeleteEventArgs.cs
- DataGridItemEventArgs.cs
- DataComponentNameHandler.cs
- ResourceReferenceExpression.cs
- compensatingcollection.cs
- EntityDataReader.cs
- PrintEvent.cs