Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- BitmapMetadataBlob.cs
- EventLogPermissionAttribute.cs
- ComponentChangedEvent.cs
- TextCompositionManager.cs
- Debug.cs
- TableCell.cs
- TextSpanModifier.cs
- EmbeddedMailObjectsCollection.cs
- LocalizedNameDescriptionPair.cs
- FrameSecurityDescriptor.cs
- DocumentsTrace.cs
- TypeInitializationException.cs
- DetailsViewRow.cs
- ColumnMapCopier.cs
- XmlLoader.cs
- CoTaskMemUnicodeSafeHandle.cs
- InvokeGenerator.cs
- TextSelection.cs
- FileDialog_Vista.cs
- EventLogPermission.cs
- StringConverter.cs
- _SslState.cs
- Window.cs
- HashHelper.cs
- CategoryAttribute.cs
- Bold.cs
- ContainerParaClient.cs
- DateTimeConverter2.cs
- EdmFunctionAttribute.cs
- HandlerWithFactory.cs
- HttpProxyTransportBindingElement.cs
- SecurityUtils.cs
- JsonQNameDataContract.cs
- PropertyInfoSet.cs
- ToggleProviderWrapper.cs
- HtmlGenericControl.cs
- UInt64.cs
- StylesEditorDialog.cs
- TrackingValidationObjectDictionary.cs
- CalendarTable.cs
- BufferedGraphics.cs
- Span.cs
- TableLayout.cs
- XmlNodeList.cs
- PopOutPanel.cs
- DataGridViewLinkColumn.cs
- AdCreatedEventArgs.cs
- TriggerAction.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- PartialTrustVisibleAssembly.cs
- BaseValidator.cs
- ColumnMap.cs
- DSACryptoServiceProvider.cs
- BulletedList.cs
- EncodingNLS.cs
- GraphicsPath.cs
- DetailsViewUpdatedEventArgs.cs
- XmlDictionaryReaderQuotasElement.cs
- RadioButtonFlatAdapter.cs
- CodeObject.cs
- SetUserPreferenceRequest.cs
- OperationGenerator.cs
- ListControlConvertEventArgs.cs
- AutoGeneratedFieldProperties.cs
- Stream.cs
- StorageRoot.cs
- Thread.cs
- EntityDataSourceValidationException.cs
- srgsitem.cs
- SortKey.cs
- XPathNavigatorReader.cs
- CrossAppDomainChannel.cs
- HashHelper.cs
- HtmlButton.cs
- HwndSourceKeyboardInputSite.cs
- GifBitmapEncoder.cs
- SqlBuffer.cs
- ContentElementCollection.cs
- URIFormatException.cs
- ValueType.cs
- InstanceKeyView.cs
- HttpRuntime.cs
- QuaternionConverter.cs
- PowerModeChangedEventArgs.cs
- basecomparevalidator.cs
- TemplateNameScope.cs
- DbConnectionPoolGroup.cs
- DesignOnlyAttribute.cs
- SqlLiftWhereClauses.cs
- InternalConfigSettingsFactory.cs
- WebColorConverter.cs
- Paragraph.cs
- SID.cs
- CardSpaceShim.cs
- PropertyPathConverter.cs
- TextRangeSerialization.cs
- Vector3DIndependentAnimationStorage.cs
- MaskedTextBox.cs
- TraceSwitch.cs
- CacheChildrenQuery.cs