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
- DtdParser.cs
- Brush.cs
- ErrorInfoXmlDocument.cs
- SecurityRuntime.cs
- TrackingStringDictionary.cs
- TreeViewAutomationPeer.cs
- DataGridViewImageCell.cs
- DeclaredTypeElementCollection.cs
- SHA384.cs
- ProtocolViolationException.cs
- KeyValuePair.cs
- PixelShader.cs
- Button.cs
- ToolStripControlHost.cs
- CodeNamespaceImport.cs
- RowUpdatedEventArgs.cs
- FlowPosition.cs
- CredentialSelector.cs
- Tuple.cs
- APCustomTypeDescriptor.cs
- DateTimeStorage.cs
- HierarchicalDataBoundControl.cs
- IndexOutOfRangeException.cs
- EditableTreeList.cs
- DocumentEventArgs.cs
- LinearKeyFrames.cs
- FatalException.cs
- LineInfo.cs
- ContentFileHelper.cs
- TextModifierScope.cs
- ExpandoClass.cs
- InfoCardSymmetricAlgorithm.cs
- Lookup.cs
- BuildProvider.cs
- DynamicValidatorEventArgs.cs
- OdbcConnectionStringbuilder.cs
- TextEditorDragDrop.cs
- IssuanceLicense.cs
- EnumerableRowCollectionExtensions.cs
- CodeTypeOfExpression.cs
- CodeTypeOfExpression.cs
- DocComment.cs
- ProviderBase.cs
- ActivityDesigner.cs
- QuerySubExprEliminator.cs
- WebResponse.cs
- ComplexPropertyEntry.cs
- WebServiceAttribute.cs
- GlobalAllocSafeHandle.cs
- LeaseManager.cs
- ApplicationManager.cs
- FlowNode.cs
- ZipFileInfo.cs
- Int32CollectionValueSerializer.cs
- PolicyManager.cs
- ObjectIDGenerator.cs
- SecurityIdentifierConverter.cs
- Binding.cs
- PointAnimationClockResource.cs
- FilteredAttributeCollection.cs
- DataServices.cs
- ObjectStateFormatter.cs
- VectorCollection.cs
- CachedCompositeFamily.cs
- ObjectToModelValueConverter.cs
- TraceProvider.cs
- ConfigViewGenerator.cs
- SecureStringHasher.cs
- SmiSettersStream.cs
- Lazy.cs
- AnnouncementEndpoint.cs
- DeclarationUpdate.cs
- TransactionScope.cs
- ClientScriptManager.cs
- DESCryptoServiceProvider.cs
- XmlNodeList.cs
- CompilerScope.Storage.cs
- DataServiceRequestException.cs
- ConstraintEnumerator.cs
- BindingExpressionUncommonField.cs
- TextViewBase.cs
- XmlSchemaDatatype.cs
- CompiledQueryCacheEntry.cs
- OracleConnectionStringBuilder.cs
- AdornerDecorator.cs
- OracleConnectionStringBuilder.cs
- BmpBitmapEncoder.cs
- FormatConvertedBitmap.cs
- RadialGradientBrush.cs
- DataGridViewRowStateChangedEventArgs.cs
- PrintingPermissionAttribute.cs
- TraceUtility.cs
- ElasticEase.cs
- IssuedTokenServiceElement.cs
- SafeNativeMethodsCLR.cs
- DataRowCollection.cs
- ObjectManager.cs
- ResetableIterator.cs
- PeerUnsafeNativeCryptMethods.cs
- MetadataItem.cs