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
- TextEndOfSegment.cs
- XmlObjectSerializerReadContextComplexJson.cs
- ButtonField.cs
- RootNamespaceAttribute.cs
- XmlElementAttributes.cs
- ClickablePoint.cs
- DeclaredTypeElement.cs
- SoapCodeExporter.cs
- SequentialOutput.cs
- PeerCollaboration.cs
- DataGridComponentEditor.cs
- Thickness.cs
- _DigestClient.cs
- MetroSerializationManager.cs
- _KerberosClient.cs
- AggregateNode.cs
- TabControlAutomationPeer.cs
- ListParagraph.cs
- QueryStringParameter.cs
- CopyAttributesAction.cs
- HeaderCollection.cs
- SectionRecord.cs
- DataPagerFieldItem.cs
- BufferBuilder.cs
- CriticalFinalizerObject.cs
- URI.cs
- StreamAsIStream.cs
- ExceptionList.cs
- LongValidatorAttribute.cs
- NamespaceInfo.cs
- ApplicationId.cs
- GlyphRunDrawing.cs
- GetResponse.cs
- ScriptHandlerFactory.cs
- _SslSessionsCache.cs
- LookupTables.cs
- PathSegment.cs
- EntityConnectionStringBuilder.cs
- SqlIdentifier.cs
- BamlResourceDeserializer.cs
- AuthorizationRuleCollection.cs
- SQLString.cs
- LinkedResource.cs
- PropertyPushdownHelper.cs
- TargetConverter.cs
- AssemblyContextControlItem.cs
- RoleManagerEventArgs.cs
- HiddenFieldDesigner.cs
- TableProviderWrapper.cs
- Hyperlink.cs
- ClusterSafeNativeMethods.cs
- LineUtil.cs
- TextBox.cs
- GetImportFileNameRequest.cs
- DeviceContexts.cs
- MetadataUtilsSmi.cs
- HtmlForm.cs
- HttpStaticObjectsCollectionBase.cs
- StrokeNodeData.cs
- Accessible.cs
- UrlMappingsModule.cs
- WorkflowViewService.cs
- XmlAtomicValue.cs
- ValidatorUtils.cs
- URLAttribute.cs
- TypeUsageBuilder.cs
- GeneralTransformCollection.cs
- JsonReader.cs
- CodeDomSerializerBase.cs
- UiaCoreProviderApi.cs
- SendKeys.cs
- AuthenticationConfig.cs
- ButtonColumn.cs
- PtsHelper.cs
- ControlDesignerState.cs
- EventEntry.cs
- ListSourceHelper.cs
- UnsafeNativeMethods.cs
- XmlAnyElementAttribute.cs
- StylusPointProperty.cs
- AttributeEmitter.cs
- CodeAccessSecurityEngine.cs
- BitmapEffectDrawing.cs
- SafeArrayRankMismatchException.cs
- dbdatarecord.cs
- ZeroOpNode.cs
- CreationContext.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- XmlSequenceWriter.cs
- EdmPropertyAttribute.cs
- CodeParameterDeclarationExpression.cs
- FlowchartDesignerCommands.cs
- ChannelServices.cs
- SchemaImporterExtensionElementCollection.cs
- RunClient.cs
- QilGenerator.cs
- Table.cs
- AutomationElementCollection.cs
- Application.cs
- AdPostCacheSubstitution.cs