Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Utility / Maps.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PartialList.cs
- SectionVisual.cs
- DirectionalLight.cs
- EntityDataSourceSelectingEventArgs.cs
- CompilerCollection.cs
- ThreadExceptionDialog.cs
- LogLogRecordHeader.cs
- PixelFormats.cs
- CacheAxisQuery.cs
- HtmlDocument.cs
- AuthenticationService.cs
- Cloud.cs
- LeafCellTreeNode.cs
- Source.cs
- PolicyException.cs
- CodeAttributeDeclarationCollection.cs
- DrawListViewSubItemEventArgs.cs
- LogicalChannel.cs
- SelectionUIHandler.cs
- MessageQueue.cs
- TimeSpanMinutesConverter.cs
- ToolStripArrowRenderEventArgs.cs
- BlurBitmapEffect.cs
- Msec.cs
- EdmType.cs
- WebPartCatalogAddVerb.cs
- FlowchartSizeFeature.cs
- ServiceReflector.cs
- NamedPipeChannelListener.cs
- DllNotFoundException.cs
- HitTestWithPointDrawingContextWalker.cs
- HttpValueCollection.cs
- ReadOnlyDictionary.cs
- CircleHotSpot.cs
- ShimAsPublicXamlType.cs
- InvalidDataException.cs
- MarkupCompilePass2.cs
- AnimatedTypeHelpers.cs
- ParentQuery.cs
- ScriptingSectionGroup.cs
- COM2ExtendedUITypeEditor.cs
- DataGridCommandEventArgs.cs
- RelOps.cs
- WebEventCodes.cs
- DictionaryKeyPropertyAttribute.cs
- LowerCaseStringConverter.cs
- TdsValueSetter.cs
- PointLight.cs
- ToolStripPanelCell.cs
- XmlDocumentFragment.cs
- MemoryMappedViewStream.cs
- SQLBytes.cs
- MultipartIdentifier.cs
- TypeConverterHelper.cs
- FunctionNode.cs
- BamlVersionHeader.cs
- FilteredAttributeCollection.cs
- JournalEntryListConverter.cs
- UnsafeNativeMethods.cs
- UrlAuthFailedErrorFormatter.cs
- AttachedAnnotationChangedEventArgs.cs
- WindowsIPAddress.cs
- MarkupObject.cs
- CacheRequest.cs
- WsdlWriter.cs
- GACMembershipCondition.cs
- WeakRefEnumerator.cs
- Propagator.cs
- IDReferencePropertyAttribute.cs
- XmlReaderSettings.cs
- shaperfactory.cs
- CompositionAdorner.cs
- Int32AnimationBase.cs
- SwitchLevelAttribute.cs
- DataBoundControlAdapter.cs
- NameNode.cs
- ReadOnlyDataSource.cs
- oledbmetadatacollectionnames.cs
- EntityModelBuildProvider.cs
- WorkflowRuntimeService.cs
- SqlMethods.cs
- PageContent.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DesignerDataRelationship.cs
- BulletDecorator.cs
- SiteMembershipCondition.cs
- TextParentUndoUnit.cs
- __TransparentProxy.cs
- HttpWriter.cs
- UIElementParaClient.cs
- RTLAwareMessageBox.cs
- WebServiceData.cs
- Rotation3DKeyFrameCollection.cs
- WebControlAdapter.cs
- ByteAnimationUsingKeyFrames.cs
- StateDesignerConnector.cs
- CallbackValidatorAttribute.cs
- ConstrainedDataObject.cs
- SizeLimitedCache.cs
- ImpersonateTokenRef.cs