Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- EntityContainerEntitySet.cs
- XslTransform.cs
- HwndSourceKeyboardInputSite.cs
- SoapException.cs
- AsyncOperationManager.cs
- PlatformCulture.cs
- BinaryUtilClasses.cs
- XslVisitor.cs
- SystemParameters.cs
- MeshGeometry3D.cs
- InternalResources.cs
- ConstraintEnumerator.cs
- SessionPageStatePersister.cs
- HostProtectionPermission.cs
- ProviderBase.cs
- Encoder.cs
- NavigationHelper.cs
- Repeater.cs
- OleServicesContext.cs
- HashLookup.cs
- Line.cs
- Errors.cs
- SmiContextFactory.cs
- _LocalDataStore.cs
- FileStream.cs
- WindowsImpersonationContext.cs
- DataColumnChangeEvent.cs
- PerformanceCounterCategory.cs
- DbUpdateCommandTree.cs
- ResponseBodyWriter.cs
- FontUnit.cs
- ConfigXmlAttribute.cs
- precedingquery.cs
- DataBoundControlHelper.cs
- MenuItemBinding.cs
- OdbcConnectionOpen.cs
- MulticastNotSupportedException.cs
- BoundField.cs
- SerializationAttributes.cs
- SoapHeaderAttribute.cs
- DataPagerCommandEventArgs.cs
- ColumnBinding.cs
- RootDesignerSerializerAttribute.cs
- DiscoveryDefaults.cs
- FormViewInsertEventArgs.cs
- ClientSettingsStore.cs
- CollectionType.cs
- CacheSection.cs
- MessagingDescriptionAttribute.cs
- RuleConditionDialog.cs
- DynamicObject.cs
- WebPartEditVerb.cs
- PathParser.cs
- NamespaceListProperty.cs
- ACL.cs
- HostingPreferredMapPath.cs
- TextSelectionProcessor.cs
- DbProviderFactories.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ManagementOptions.cs
- TypedDatasetGenerator.cs
- VirtualPathProvider.cs
- DocumentOrderComparer.cs
- WmlTextViewAdapter.cs
- TreeViewImageKeyConverter.cs
- CurrencyManager.cs
- FileRecordSequenceCompletedAsyncResult.cs
- SizeAnimationBase.cs
- SessionEndedEventArgs.cs
- FastEncoderWindow.cs
- DataMisalignedException.cs
- XmlSchemaObject.cs
- DataGridParentRows.cs
- SHA256.cs
- SByte.cs
- SizeIndependentAnimationStorage.cs
- CodeArgumentReferenceExpression.cs
- ArrayList.cs
- DelegatingTypeDescriptionProvider.cs
- DataGridTextBox.cs
- EventSinkHelperWriter.cs
- PhysicalAddress.cs
- Method.cs
- SimpleHandlerBuildProvider.cs
- InsufficientMemoryException.cs
- Hash.cs
- ObjectContext.cs
- Utils.cs
- RegexWriter.cs
- TransformedBitmap.cs
- ProviderManager.cs
- SaveFileDialogDesigner.cs
- WMIGenerator.cs
- TypeValidationEventArgs.cs
- Listbox.cs
- HttpHandlersSection.cs
- InfoCardTraceRecord.cs
- SqlDataSourceTableQuery.cs
- XmlLanguageConverter.cs
- ThicknessAnimationBase.cs