Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Utility / Maps.cs / 1305600 / 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
- QilParameter.cs
- WebPageTraceListener.cs
- BitSet.cs
- SerializationInfoEnumerator.cs
- CloseCryptoHandleRequest.cs
- sitestring.cs
- ControlValuePropertyAttribute.cs
- BitmapMetadataEnumerator.cs
- DataServiceContext.cs
- CodeNamespaceImportCollection.cs
- Span.cs
- XPathNodeInfoAtom.cs
- AudioFileOut.cs
- ValidationPropertyAttribute.cs
- ColumnResizeAdorner.cs
- FontUnit.cs
- DbConnectionPoolGroupProviderInfo.cs
- Light.cs
- CodeGenerator.cs
- StructuredTypeEmitter.cs
- TransformDescriptor.cs
- XmlCharacterData.cs
- AnnotationDocumentPaginator.cs
- TableLayoutPanelResizeGlyph.cs
- ObjectHandle.cs
- XPathSelectionIterator.cs
- DecoderFallbackWithFailureFlag.cs
- OleDbTransaction.cs
- OleDbConnectionInternal.cs
- DefaultExpressionVisitor.cs
- EditorPart.cs
- UnsafeNativeMethods.cs
- GeneralTransform.cs
- Attributes.cs
- TokenBasedSetEnumerator.cs
- DrawingDrawingContext.cs
- basevalidator.cs
- EventSinkHelperWriter.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- RectValueSerializer.cs
- MetadataUtil.cs
- NonSerializedAttribute.cs
- DebugView.cs
- HMACSHA512.cs
- ColumnBinding.cs
- HtmlEmptyTagControlBuilder.cs
- BufferBuilder.cs
- DataTableTypeConverter.cs
- ToolboxService.cs
- MenuBase.cs
- TextRunTypographyProperties.cs
- ProfileWorkflowElement.cs
- RawKeyboardInputReport.cs
- DSACryptoServiceProvider.cs
- XmlImplementation.cs
- XmlAtomErrorReader.cs
- _BufferOffsetSize.cs
- TreeView.cs
- TreeNodeBinding.cs
- MembershipSection.cs
- XmlSchemas.cs
- CompressedStack.cs
- RadioButton.cs
- Message.cs
- ByteBufferPool.cs
- WebPartEditorApplyVerb.cs
- NodeFunctions.cs
- ChangePassword.cs
- DynamicActionMessageFilter.cs
- Axis.cs
- ExceptionHandler.cs
- Knowncolors.cs
- EmbeddedMailObject.cs
- IsolatedStorageFile.cs
- TimeoutException.cs
- ChangePassword.cs
- PixelShader.cs
- SvcMapFileSerializer.cs
- AspNetCacheProfileAttribute.cs
- CodeMethodInvokeExpression.cs
- CustomTokenProvider.cs
- XmlSchemaNotation.cs
- PropertyGroupDescription.cs
- InputLanguage.cs
- Matrix3DValueSerializer.cs
- ConfigUtil.cs
- Collection.cs
- SqlDataSourceCommandParser.cs
- OutputCacheModule.cs
- MemberNameValidator.cs
- FrugalList.cs
- Control.cs
- dbenumerator.cs
- XmlnsDictionary.cs
- TrustSection.cs
- XXXOnTypeBuilderInstantiation.cs
- IIS7WorkerRequest.cs
- ElementFactory.cs
- XmlEncodedRawTextWriter.cs
- RSAPKCS1SignatureDeformatter.cs