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
- PointAnimationClockResource.cs
- XmlTextAttribute.cs
- WebEventTraceProvider.cs
- CodeCatchClauseCollection.cs
- FilterElement.cs
- TextServicesCompartmentEventSink.cs
- OperationCanceledException.cs
- WorkItem.cs
- ListDictionary.cs
- PriorityChain.cs
- ErrorEventArgs.cs
- XmlSchemas.cs
- ListItemConverter.cs
- TaskDesigner.cs
- Int32.cs
- MenuItemAutomationPeer.cs
- ServerValidateEventArgs.cs
- NullableIntMinMaxAggregationOperator.cs
- Composition.cs
- ActivationArguments.cs
- RequestNavigateEventArgs.cs
- CatalogPartCollection.cs
- RightsManagementEncryptionTransform.cs
- ApplicationActivator.cs
- OdbcStatementHandle.cs
- HiddenFieldPageStatePersister.cs
- SQLInt16Storage.cs
- HttpContext.cs
- TextCompositionEventArgs.cs
- Restrictions.cs
- ITextView.cs
- TreeViewDataItemAutomationPeer.cs
- DataGridLength.cs
- AnonymousIdentificationModule.cs
- CompiledQuery.cs
- RegexMatch.cs
- Metafile.cs
- OrderedEnumerableRowCollection.cs
- InfoCardAsymmetricCrypto.cs
- TreeViewImageIndexConverter.cs
- XmlILModule.cs
- ZoneMembershipCondition.cs
- WindowsPrincipal.cs
- ConfigurationException.cs
- IisTraceWebEventProvider.cs
- CountAggregationOperator.cs
- AncestorChangedEventArgs.cs
- RectangleF.cs
- HashCodeCombiner.cs
- DaylightTime.cs
- DoubleCollectionValueSerializer.cs
- XmlSortKey.cs
- NamespaceList.cs
- SafeHandles.cs
- PathGradientBrush.cs
- Brush.cs
- _OSSOCK.cs
- SecurityDescriptor.cs
- DnsEndPoint.cs
- ImageMap.cs
- EditorBrowsableAttribute.cs
- BitStack.cs
- ArrayElementGridEntry.cs
- OdbcConnectionHandle.cs
- ListView.cs
- PointKeyFrameCollection.cs
- RowParagraph.cs
- MobileUITypeEditor.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- AssemblyUtil.cs
- EditorZoneDesigner.cs
- SystemInfo.cs
- RegexStringValidatorAttribute.cs
- WindowClosedEventArgs.cs
- HideDisabledControlAdapter.cs
- SoapEnumAttribute.cs
- FolderLevelBuildProvider.cs
- ObjectQueryState.cs
- RangeBase.cs
- FormsAuthenticationConfiguration.cs
- SimpleType.cs
- XmlBinaryReaderSession.cs
- WindowsGraphicsCacheManager.cs
- RadioButtonPopupAdapter.cs
- XmlHierarchicalDataSourceView.cs
- XmlSchemaRedefine.cs
- WeakReferenceList.cs
- StyleSelector.cs
- Renderer.cs
- hwndwrapper.cs
- LoadGrammarCompletedEventArgs.cs
- AdornerHitTestResult.cs
- HttpFileCollection.cs
- ObjectIDGenerator.cs
- StrokeCollection.cs
- TransformerTypeCollection.cs
- MemoryMappedFile.cs
- Point.cs
- JumpItem.cs
- ControlBuilder.cs