Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Shared / MS / Utility / Maps.cs / 1 / Maps.cs
/****************************************************************************\
*
* File: Maps.cs
*
* Description:
* Contains specialized data structures for mapping a key to data.
*
* Copyright (C) 2002 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Collections;
using System.Windows;
namespace MS.Utility
{
/***************************************************************************\
*****************************************************************************
*
* DTypeMap (DType --> Object)
*
* Maps the first N used DependencyObject-derived types via an array
* (low constant time lookup) for mapping. After which falls back on a
* hash table.
*
* - Fastest gets and sets (normally single array access).
* - Large memory footprint.
*
* Starting mapping is all map to null
*
*****************************************************************************
\***************************************************************************/
using MS.Internal.PresentationCore;
[FriendAccessAllowed] // Built into Core, also used by Framework.
internal class DTypeMap
{
public DTypeMap(int entryCount)
{
// Constant Time Lookup entries (array size)
_entryCount = entryCount;
_entries = new object[_entryCount];
_activeDTypes = new ItemStructList(128);
}
public object this[DependencyObjectType dType]
{
get
{
if (dType.Id < _entryCount)
{
return _entries[dType.Id];
}
else
{
if (_overFlow != null)
{
return _overFlow[dType];
}
return null;
}
}
set
{
if (dType.Id < _entryCount)
{
_entries[dType.Id] = value;
}
else
{
if (_overFlow == null)
{
_overFlow = new Hashtable();
}
_overFlow[dType] = value;
}
_activeDTypes.Add(dType);
}
}
// Return list of non-null DType mappings
public ItemStructList ActiveDTypes
{
get { return _activeDTypes; }
}
// Clear the data-structures to be able to start over
public void Clear()
{
for (int i=0; i<_entryCount; i++)
{
_entries[i] = null;
}
for (int i=0; i<_activeDTypes.Count; i++)
{
_activeDTypes.List[i] = null;
}
if (_overFlow != null)
{
_overFlow.Clear();
}
}
private int _entryCount;
private object[] _entries;
private Hashtable _overFlow;
private ItemStructList _activeDTypes;
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: Maps.cs
*
* Description:
* Contains specialized data structures for mapping a key to data.
*
* Copyright (C) 2002 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Collections;
using System.Windows;
namespace MS.Utility
{
/***************************************************************************\
*****************************************************************************
*
* DTypeMap (DType --> Object)
*
* Maps the first N used DependencyObject-derived types via an array
* (low constant time lookup) for mapping. After which falls back on a
* hash table.
*
* - Fastest gets and sets (normally single array access).
* - Large memory footprint.
*
* Starting mapping is all map to null
*
*****************************************************************************
\***************************************************************************/
using MS.Internal.PresentationCore;
[FriendAccessAllowed] // Built into Core, also used by Framework.
internal class DTypeMap
{
public DTypeMap(int entryCount)
{
// Constant Time Lookup entries (array size)
_entryCount = entryCount;
_entries = new object[_entryCount];
_activeDTypes = new ItemStructList(128);
}
public object this[DependencyObjectType dType]
{
get
{
if (dType.Id < _entryCount)
{
return _entries[dType.Id];
}
else
{
if (_overFlow != null)
{
return _overFlow[dType];
}
return null;
}
}
set
{
if (dType.Id < _entryCount)
{
_entries[dType.Id] = value;
}
else
{
if (_overFlow == null)
{
_overFlow = new Hashtable();
}
_overFlow[dType] = value;
}
_activeDTypes.Add(dType);
}
}
// Return list of non-null DType mappings
public ItemStructList ActiveDTypes
{
get { return _activeDTypes; }
}
// Clear the data-structures to be able to start over
public void Clear()
{
for (int i=0; i<_entryCount; i++)
{
_entries[i] = null;
}
for (int i=0; i<_activeDTypes.Count; i++)
{
_activeDTypes.List[i] = null;
}
if (_overFlow != null)
{
_overFlow.Clear();
}
}
private int _entryCount;
private object[] _entries;
private Hashtable _overFlow;
private ItemStructList _activeDTypes;
}
}
// 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
- MaskedTextBox.cs
- EntityDataSourceChangingEventArgs.cs
- OracleInternalConnection.cs
- CodeTypeReference.cs
- ArithmeticException.cs
- VirtualPath.cs
- MimeMultiPart.cs
- InputManager.cs
- StrokeCollection.cs
- ClientClassGenerator.cs
- StaticDataManager.cs
- DataGridRowAutomationPeer.cs
- WsdlExporter.cs
- TextBox.cs
- COM2ExtendedBrowsingHandler.cs
- FixedSOMTableRow.cs
- DataServiceClientException.cs
- IntegerValidatorAttribute.cs
- Int64.cs
- SymLanguageType.cs
- AdjustableArrowCap.cs
- SqlCaseSimplifier.cs
- InternalBufferManager.cs
- UserPreferenceChangedEventArgs.cs
- SerializationInfo.cs
- ProfileInfo.cs
- UshortList2.cs
- ProtectedProviderSettings.cs
- ResXResourceReader.cs
- SelectionChangedEventArgs.cs
- UnSafeCharBuffer.cs
- PageBorderless.cs
- Main.cs
- HttpHandlersSection.cs
- BuildDependencySet.cs
- SegmentInfo.cs
- OleDbConnectionFactory.cs
- ReachSerializationUtils.cs
- ScriptControlManager.cs
- HeaderedContentControl.cs
- BindingExpressionUncommonField.cs
- ResourceContainer.cs
- LogReserveAndAppendState.cs
- KerberosSecurityTokenParameters.cs
- MiniMapControl.xaml.cs
- DnsPermission.cs
- _ListenerRequestStream.cs
- DataBindingCollection.cs
- templategroup.cs
- GridItemCollection.cs
- XPathNodeIterator.cs
- JsonFormatGeneratorStatics.cs
- SqlParameterizer.cs
- ReachFixedDocumentSerializerAsync.cs
- TextDecorationLocationValidation.cs
- SystemWebCachingSectionGroup.cs
- ISCIIEncoding.cs
- CompatibleComparer.cs
- OrCondition.cs
- XmlSchemaExternal.cs
- DocumentSequence.cs
- SharedPersonalizationStateInfo.cs
- FullTextLine.cs
- XmlNodeList.cs
- ListViewDeletedEventArgs.cs
- RunClient.cs
- XmlUrlResolver.cs
- recordstatefactory.cs
- ConnectionOrientedTransportManager.cs
- DocumentApplication.cs
- MetadataItemEmitter.cs
- Win32SafeHandles.cs
- Rules.cs
- WindowInteractionStateTracker.cs
- TransactionFlowElement.cs
- InkCanvasInnerCanvas.cs
- FileIOPermission.cs
- XmlStreamNodeWriter.cs
- FixedDocumentSequencePaginator.cs
- EdmToObjectNamespaceMap.cs
- SchemaNamespaceManager.cs
- TcpConnectionPool.cs
- StylusSystemGestureEventArgs.cs
- ContextInformation.cs
- MemberHolder.cs
- RectIndependentAnimationStorage.cs
- CriticalHandle.cs
- ObjectCloneHelper.cs
- X509CertificateCollection.cs
- _NetworkingPerfCounters.cs
- Queue.cs
- ColumnTypeConverter.cs
- X509CertificateClaimSet.cs
- TextViewSelectionProcessor.cs
- HealthMonitoringSectionHelper.cs
- EdmError.cs
- EventLogPermissionAttribute.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- TraceSource.cs
- XmlSerializerAssemblyAttribute.cs