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
- TextEditorTables.cs
- ProcessHost.cs
- HtmlInputHidden.cs
- DataGridColumnsPage.cs
- Selection.cs
- ComplexObject.cs
- ClipboardProcessor.cs
- ComponentEvent.cs
- OdbcConnectionString.cs
- TableRowCollection.cs
- StateChangeEvent.cs
- WSFederationHttpSecurity.cs
- TextRunTypographyProperties.cs
- SafeFileMapViewHandle.cs
- SimpleType.cs
- ActiveXSerializer.cs
- ClientSideProviderDescription.cs
- CountdownEvent.cs
- DateTimeParse.cs
- ReadOnlyDataSourceView.cs
- WebScriptClientGenerator.cs
- Point3DCollection.cs
- StrokeNodeOperations.cs
- ColumnTypeConverter.cs
- PropertyRecord.cs
- MatrixTransform.cs
- XmlChoiceIdentifierAttribute.cs
- TableLayoutRowStyleCollection.cs
- AnonymousIdentificationModule.cs
- AdornerDecorator.cs
- AtomPub10ServiceDocumentFormatter.cs
- ClientFormsIdentity.cs
- regiisutil.cs
- ThemeDictionaryExtension.cs
- Operator.cs
- RayHitTestParameters.cs
- ExpressionPrinter.cs
- UpDownBase.cs
- CodeSnippetStatement.cs
- NamedPermissionSet.cs
- fixedPageContentExtractor.cs
- RequestNavigateEventArgs.cs
- SourceFileBuildProvider.cs
- HttpModuleActionCollection.cs
- PipelineModuleStepContainer.cs
- SpellerStatusTable.cs
- SmiXetterAccessMap.cs
- Propagator.JoinPropagator.cs
- SchemaHelper.cs
- DispatcherHookEventArgs.cs
- CSharpCodeProvider.cs
- HtmlToClrEventProxy.cs
- EpmAttributeNameBuilder.cs
- SQLDouble.cs
- PrimitiveCodeDomSerializer.cs
- InputLanguageProfileNotifySink.cs
- HostedElements.cs
- Int32CollectionConverter.cs
- lengthconverter.cs
- BitmapEncoder.cs
- XmlBindingWorker.cs
- String.cs
- ScriptControlDescriptor.cs
- PolyQuadraticBezierSegment.cs
- LoginView.cs
- WebScriptEnablingElement.cs
- DesignerMetadata.cs
- PersonalizationState.cs
- PatternMatcher.cs
- InteropDesigner.xaml.cs
- ASCIIEncoding.cs
- GraphicsContext.cs
- FixedDSBuilder.cs
- SQLBytesStorage.cs
- Page.cs
- KeyValueSerializer.cs
- IncrementalReadDecoders.cs
- XmlQueryOutput.cs
- EventLogger.cs
- NameTable.cs
- Model3D.cs
- RequestUriProcessor.cs
- ConfigurationErrorsException.cs
- DataGridRow.cs
- XmlTextReader.cs
- PolicyManager.cs
- QueryResult.cs
- xsdvalidator.cs
- AxParameterData.cs
- DetailsView.cs
- InnerItemCollectionView.cs
- AssociationSetEnd.cs
- ReaderWriterLock.cs
- TraceUtility.cs
- PasswordBoxAutomationPeer.cs
- FileVersionInfo.cs
- PathFigureCollectionConverter.cs
- RegisteredScript.cs
- EventEntry.cs
- BitmapMetadataBlob.cs