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
- _RegBlobWebProxyDataBuilder.cs
- NotifyIcon.cs
- DeferredElementTreeState.cs
- FusionWrap.cs
- IdentityHolder.cs
- InkCanvasSelection.cs
- UmAlQuraCalendar.cs
- LinkConverter.cs
- TriggerBase.cs
- ProviderUtil.cs
- ReversePositionQuery.cs
- ObjectDataSourceDisposingEventArgs.cs
- WasEndpointConfigContainer.cs
- ListViewTableRow.cs
- HandlerWithFactory.cs
- CounterSample.cs
- TTSEngineProxy.cs
- MergeFailedEvent.cs
- ProxyWebPartManager.cs
- DataServices.cs
- CachedCompositeFamily.cs
- ToolStripContentPanel.cs
- LogPolicy.cs
- CodeBinaryOperatorExpression.cs
- CharUnicodeInfo.cs
- JavascriptCallbackResponseProperty.cs
- CompareValidator.cs
- WebPartZoneCollection.cs
- QuadraticBezierSegment.cs
- ProcessInfo.cs
- BindingSourceDesigner.cs
- SchemaObjectWriter.cs
- FontStyle.cs
- ListInitExpression.cs
- PackageRelationship.cs
- HandlerBase.cs
- AsymmetricKeyExchangeDeformatter.cs
- ServiceModelEnumValidatorAttribute.cs
- CompensationHandlingFilter.cs
- DuplicateDetector.cs
- ListComponentEditorPage.cs
- SaveWorkflowAsyncResult.cs
- XPathNode.cs
- CopyNamespacesAction.cs
- EncoderReplacementFallback.cs
- WebZone.cs
- ConditionalAttribute.cs
- FixedElement.cs
- TableDetailsCollection.cs
- GridViewColumn.cs
- XmlQueryStaticData.cs
- COM2TypeInfoProcessor.cs
- ViewGenerator.cs
- LoginUtil.cs
- BinaryWriter.cs
- AuthenticationConfig.cs
- ConstraintCollection.cs
- ReflectEventDescriptor.cs
- AuthenticationService.cs
- DescendantOverDescendantQuery.cs
- SerialReceived.cs
- LinqDataView.cs
- DefaultTraceListener.cs
- ProcessHostMapPath.cs
- UriParserTemplates.cs
- EventSetterHandlerConverter.cs
- CustomSignedXml.cs
- RunInstallerAttribute.cs
- CLRBindingWorker.cs
- EmissiveMaterial.cs
- ManagedIStream.cs
- QilIterator.cs
- DrawingContext.cs
- PeerCollaboration.cs
- DrawingDrawingContext.cs
- XmlSchemaSimpleTypeRestriction.cs
- RowUpdatedEventArgs.cs
- SizeAnimationBase.cs
- FunctionParameter.cs
- TimeSpanValidatorAttribute.cs
- SqlMetaData.cs
- CodeMemberField.cs
- CompareValidator.cs
- OutputCacheModule.cs
- RequestSecurityTokenForGetBrowserToken.cs
- TypedReference.cs
- RichTextBoxConstants.cs
- CompilerGeneratedAttribute.cs
- HostedController.cs
- XmlCharacterData.cs
- FileEnumerator.cs
- BitmapSource.cs
- RecognizedWordUnit.cs
- MoveSizeWinEventHandler.cs
- RedirectionProxy.cs
- StylusPointCollection.cs
- XmlNamedNodeMap.cs
- SamlAttributeStatement.cs
- QuinticEase.cs
- BitmapMetadataEnumerator.cs