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
- TempFiles.cs
- PointF.cs
- ManagementBaseObject.cs
- AccessDataSourceView.cs
- DataGridViewCellEventArgs.cs
- Transform3D.cs
- WebSysDisplayNameAttribute.cs
- OdbcConnectionStringbuilder.cs
- XmlDictionary.cs
- Splitter.cs
- AssertSection.cs
- WindowsFormsHostPropertyMap.cs
- LabelLiteral.cs
- FieldNameLookup.cs
- TextDpi.cs
- URLAttribute.cs
- OwnerDrawPropertyBag.cs
- CharAnimationBase.cs
- RecordManager.cs
- Preprocessor.cs
- Timer.cs
- WorkflowRuntimeService.cs
- DrawingGroupDrawingContext.cs
- _NestedSingleAsyncResult.cs
- ConfigurationStrings.cs
- DataViewSettingCollection.cs
- RotationValidation.cs
- DataGridViewColumnConverter.cs
- HtmlToClrEventProxy.cs
- IntegerValidatorAttribute.cs
- ItemsControlAutomationPeer.cs
- VectorCollectionValueSerializer.cs
- InternalBufferOverflowException.cs
- WorkflowRuntimeServiceElement.cs
- SortDescription.cs
- OracleFactory.cs
- CryptoApi.cs
- DiscreteKeyFrames.cs
- OdbcConnectionHandle.cs
- ISO2022Encoding.cs
- DeferredReference.cs
- FormsAuthenticationCredentials.cs
- ConfigsHelper.cs
- BindingsCollection.cs
- QilLiteral.cs
- OrderByExpression.cs
- CommandBinding.cs
- AsyncDataRequest.cs
- BitmapImage.cs
- ButtonFieldBase.cs
- ExpandedWrapper.cs
- TypeGeneratedEventArgs.cs
- ListChangedEventArgs.cs
- PerformanceCounterTraceRecord.cs
- PrintDialog.cs
- ServiceModelEnumValidatorAttribute.cs
- AuthorizationContext.cs
- ObjectContextServiceProvider.cs
- WebPartPersonalization.cs
- SafeArrayTypeMismatchException.cs
- QilScopedVisitor.cs
- Panel.cs
- ForceCopyBuildProvider.cs
- DBNull.cs
- _NtlmClient.cs
- RoutedUICommand.cs
- RewritingSimplifier.cs
- DataContext.cs
- PriorityBindingExpression.cs
- HttpContext.cs
- InvalidateEvent.cs
- StrokeNodeEnumerator.cs
- MultiPropertyDescriptorGridEntry.cs
- SecurityHeaderLayout.cs
- StorageComplexPropertyMapping.cs
- SiteMapProvider.cs
- IgnoreDataMemberAttribute.cs
- ApplyTemplatesAction.cs
- LinkDesigner.cs
- FileSystemWatcher.cs
- NativeMethodsOther.cs
- TaskbarItemInfo.cs
- Formatter.cs
- ThreadStateException.cs
- TextBoxBase.cs
- WebScriptServiceHost.cs
- PlacementWorkspace.cs
- ManualResetEvent.cs
- ProfileSettingsCollection.cs
- ListViewItemEventArgs.cs
- ScrollChangedEventArgs.cs
- TimeSpanValidatorAttribute.cs
- StaticExtension.cs
- ShaderRenderModeValidation.cs
- SecurityUtils.cs
- DataGridLength.cs
- ClassHandlersStore.cs
- FormatVersion.cs
- OrCondition.cs
- List.cs