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
- HitTestWithPointDrawingContextWalker.cs
- PerfProviderCollection.cs
- odbcmetadatafactory.cs
- Comparer.cs
- WorkflowQueue.cs
- Application.cs
- HostSecurityManager.cs
- XmlDictionary.cs
- ParsedAttributeCollection.cs
- EventTrigger.cs
- FormViewPagerRow.cs
- CompositeCollectionView.cs
- ClientTarget.cs
- ExtendedProperty.cs
- HelpKeywordAttribute.cs
- WindowsSecurityToken.cs
- TreeNodeCollectionEditorDialog.cs
- ServiceDurableInstance.cs
- ResourceDescriptionAttribute.cs
- EventMappingSettingsCollection.cs
- ConfigurationStrings.cs
- DataColumnCollection.cs
- TargetInvocationException.cs
- FrameworkElement.cs
- HtmlTitle.cs
- SchemaRegistration.cs
- TemplateXamlParser.cs
- BindableAttribute.cs
- CompModSwitches.cs
- GridProviderWrapper.cs
- EntityDesignerBuildProvider.cs
- SqlDataSourceConfigureFilterForm.cs
- DocumentXPathNavigator.cs
- EventData.cs
- TimelineGroup.cs
- IndexObject.cs
- _DomainName.cs
- OracleException.cs
- PointLight.cs
- RecognizedWordUnit.cs
- DataGridViewBindingCompleteEventArgs.cs
- ExpressionNode.cs
- sqlnorm.cs
- CharConverter.cs
- HtmlTableCell.cs
- NonVisualControlAttribute.cs
- SqlPersonalizationProvider.cs
- InternalsVisibleToAttribute.cs
- Point3DValueSerializer.cs
- CqlQuery.cs
- MaskDescriptor.cs
- KeyInstance.cs
- PropertyEmitterBase.cs
- InputBuffer.cs
- Pkcs7Recipient.cs
- SrgsElementFactory.cs
- SqlWorkflowPersistenceService.cs
- Int32EqualityComparer.cs
- PassportPrincipal.cs
- TypeSystem.cs
- HtmlTable.cs
- Point3DConverter.cs
- PeerApplicationLaunchInfo.cs
- XamlFilter.cs
- XmlSchemaSet.cs
- EmbeddedMailObjectsCollection.cs
- DateTimeConstantAttribute.cs
- TextEffect.cs
- ManagedFilter.cs
- WaitHandleCannotBeOpenedException.cs
- SettingsAttributes.cs
- BrushMappingModeValidation.cs
- MouseCaptureWithinProperty.cs
- CharKeyFrameCollection.cs
- Lasso.cs
- ModelVisual3D.cs
- NavigatorInput.cs
- DbTransaction.cs
- ArglessEventHandlerProxy.cs
- RegexCapture.cs
- WindowCollection.cs
- CapabilitiesRule.cs
- CompletedAsyncResult.cs
- PageHandlerFactory.cs
- ProtocolsConfigurationEntry.cs
- WebPartTransformerCollection.cs
- GeometryValueSerializer.cs
- XmlObjectSerializerWriteContext.cs
- TextShapeableCharacters.cs
- AppPool.cs
- BooleanSwitch.cs
- LinqDataSource.cs
- DesignerVerb.cs
- PropertyTabChangedEvent.cs
- SecurityIdentifierElement.cs
- DomNameTable.cs
- StylusPointCollection.cs
- SQLDoubleStorage.cs
- EqualityArray.cs
- TypeSemantics.cs