Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ADMembershipProvider.cs
- XmlDataImplementation.cs
- StylusEventArgs.cs
- TypeResolvingOptions.cs
- SystemUdpStatistics.cs
- ChangeDirector.cs
- PluralizationServiceUtil.cs
- TemplateAction.cs
- CodeCompileUnit.cs
- ResourceProperty.cs
- BuildProvider.cs
- sqlpipe.cs
- ping.cs
- GridViewEditEventArgs.cs
- ADMembershipUser.cs
- CustomErrorsSection.cs
- ChtmlTextBoxAdapter.cs
- CodeTypeDeclarationCollection.cs
- Duration.cs
- WebControlsSection.cs
- ProfileSettingsCollection.cs
- PageContentAsyncResult.cs
- WebServiceClientProxyGenerator.cs
- CellParagraph.cs
- SecurityContextSecurityTokenParameters.cs
- IsolatedStorageFilePermission.cs
- HTTPAPI_VERSION.cs
- FunctionDetailsReader.cs
- Resources.Designer.cs
- AtomContentProperty.cs
- UIPermission.cs
- MainMenu.cs
- Schedule.cs
- FilteredXmlReader.cs
- SymbolResolver.cs
- DoWorkEventArgs.cs
- QualifiedCellIdBoolean.cs
- GeneralTransformGroup.cs
- SqlNode.cs
- StrokeNodeData.cs
- Transform3DGroup.cs
- AssemblyCollection.cs
- ConnectionManagementElement.cs
- PersistenceException.cs
- SoapIncludeAttribute.cs
- XmlWellformedWriter.cs
- AnonymousIdentificationModule.cs
- SingleAnimationUsingKeyFrames.cs
- InfoCardServiceInstallComponent.cs
- ContentPresenter.cs
- GiveFeedbackEventArgs.cs
- XmlBinaryWriter.cs
- Model3DGroup.cs
- CacheMode.cs
- AssociatedControlConverter.cs
- keycontainerpermission.cs
- AlignmentYValidation.cs
- HwndSource.cs
- DragCompletedEventArgs.cs
- Rotation3DAnimationUsingKeyFrames.cs
- CodeGeneratorOptions.cs
- CodeEventReferenceExpression.cs
- IfJoinedCondition.cs
- HtmlInputText.cs
- ObjectReaderCompiler.cs
- UriScheme.cs
- BevelBitmapEffect.cs
- AsyncWaitHandle.cs
- MediaPlayer.cs
- TreeNodeSelectionProcessor.cs
- Misc.cs
- FormsAuthenticationCredentials.cs
- ComponentChangedEvent.cs
- ComponentEditorForm.cs
- GiveFeedbackEventArgs.cs
- ZoomPercentageConverter.cs
- Button.cs
- SiteMapPath.cs
- HorizontalAlignConverter.cs
- UntrustedRecipientException.cs
- ObjectNavigationPropertyMapping.cs
- Buffer.cs
- GeneralTransform3DGroup.cs
- QilPatternVisitor.cs
- HttpApplication.cs
- WorkflowEventArgs.cs
- DataSpaceManager.cs
- DbModificationCommandTree.cs
- FormClosingEvent.cs
- DataSysAttribute.cs
- ConversionContext.cs
- TypeNameConverter.cs
- DataBindingList.cs
- JsonByteArrayDataContract.cs
- EnumMember.cs
- AlphabeticalEnumConverter.cs
- SqlGatherProducedAliases.cs
- TrustManagerMoreInformation.cs
- SQLGuid.cs
- SelectingProviderEventArgs.cs