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
- Font.cs
- HtmlInputReset.cs
- EqualityComparer.cs
- XmlFormatWriterGenerator.cs
- TimeSpanConverter.cs
- LinkLabelLinkClickedEvent.cs
- WebControl.cs
- FontEmbeddingManager.cs
- DecryptRequest.cs
- VersionedStreamOwner.cs
- InstallerTypeAttribute.cs
- ImageListUtils.cs
- EventPropertyMap.cs
- XmlNamespaceManager.cs
- CommandLineParser.cs
- MailAddressCollection.cs
- ResponseStream.cs
- HiddenField.cs
- ReadingWritingEntityEventArgs.cs
- KeyConstraint.cs
- PerspectiveCamera.cs
- TypePropertyEditor.cs
- formatter.cs
- CodeParameterDeclarationExpression.cs
- DesignBindingValueUIHandler.cs
- SqlFileStream.cs
- SplitterPanel.cs
- _AcceptOverlappedAsyncResult.cs
- MembershipPasswordException.cs
- EntryWrittenEventArgs.cs
- VisualStateChangedEventArgs.cs
- ObjectComplexPropertyMapping.cs
- MenuItemAutomationPeer.cs
- StaticSiteMapProvider.cs
- DataGridItemCollection.cs
- SelectedGridItemChangedEvent.cs
- PhoneCall.cs
- GraphicsPathIterator.cs
- NativeMethods.cs
- AppDomain.cs
- Renderer.cs
- KeyConverter.cs
- UpdateCommandGenerator.cs
- RSAPKCS1KeyExchangeFormatter.cs
- DataGridViewLinkColumn.cs
- KnownBoxes.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- CircleHotSpot.cs
- SerializableAttribute.cs
- LockCookie.cs
- BuildManager.cs
- Metadata.cs
- ObfuscationAttribute.cs
- StyleHelper.cs
- Equal.cs
- ContractTypeNameElement.cs
- XmlChildNodes.cs
- Stylesheet.cs
- BooleanSwitch.cs
- HtmlInputImage.cs
- TextServicesHost.cs
- Exceptions.cs
- LineGeometry.cs
- TraceEventCache.cs
- IBuiltInEvidence.cs
- ComplexBindingPropertiesAttribute.cs
- CaseInsensitiveHashCodeProvider.cs
- DoubleStorage.cs
- SmtpAuthenticationManager.cs
- SRGSCompiler.cs
- XmlSerializerVersionAttribute.cs
- ParameterModifier.cs
- InternalMappingException.cs
- ConfigurationSectionGroup.cs
- AudioStateChangedEventArgs.cs
- ComPlusServiceHost.cs
- IntSecurity.cs
- FloaterBaseParaClient.cs
- AnimationClock.cs
- WebServiceAttribute.cs
- RectangleGeometry.cs
- StatusStrip.cs
- PolicyAssertionCollection.cs
- ControlCodeDomSerializer.cs
- X509Certificate.cs
- Bits.cs
- AbandonedMutexException.cs
- KoreanCalendar.cs
- TemplateLookupAction.cs
- HwndKeyboardInputProvider.cs
- SafeRightsManagementEnvironmentHandle.cs
- MenuStrip.cs
- CommandPlan.cs
- DataGridViewMethods.cs
- XmlSchemas.cs
- ListBox.cs
- SqlTopReducer.cs
- WorkflowRuntimeEndpoint.cs
- GraphicsPath.cs
- WebCategoryAttribute.cs