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
- RightsManagementEncryptionTransform.cs
- HelpProvider.cs
- PocoEntityKeyStrategy.cs
- SignatureDescription.cs
- ItemAutomationPeer.cs
- DeploymentExceptionMapper.cs
- TextRangeBase.cs
- ResourceContainer.cs
- _NTAuthentication.cs
- DataObjectMethodAttribute.cs
- ADMembershipUser.cs
- SiteMapProvider.cs
- PointKeyFrameCollection.cs
- ModelPerspective.cs
- CompilationPass2TaskInternal.cs
- WithParamAction.cs
- Soap.cs
- StyleHelper.cs
- PageParser.cs
- WizardPanelChangingEventArgs.cs
- AssociationTypeEmitter.cs
- EdmItemCollection.cs
- InternalTypeHelper.cs
- WinFormsUtils.cs
- ErrorHandler.cs
- GridViewCancelEditEventArgs.cs
- XmlElementCollection.cs
- CustomAttributeSerializer.cs
- PropertyKey.cs
- ColorAnimation.cs
- UserNameSecurityTokenParameters.cs
- EmptyEnumerator.cs
- Pair.cs
- GroupBoxAutomationPeer.cs
- DataRowExtensions.cs
- CallbackValidatorAttribute.cs
- CustomCategoryAttribute.cs
- SubclassTypeValidator.cs
- DescriptionAttribute.cs
- KeyValueInternalCollection.cs
- BitmapFrameEncode.cs
- ConstNode.cs
- HTTPNotFoundHandler.cs
- DateTimeConverter2.cs
- DbMetaDataCollectionNames.cs
- VersionPair.cs
- CustomAttributeSerializer.cs
- ObjectItemLoadingSessionData.cs
- SourceFileInfo.cs
- BinaryObjectReader.cs
- WebRequestModulesSection.cs
- UnsafeNativeMethods.cs
- DbModificationCommandTree.cs
- ProfileBuildProvider.cs
- ListMarkerSourceInfo.cs
- IndentedTextWriter.cs
- ReadOnlyDictionary.cs
- connectionpool.cs
- XmlSchemaSimpleContentExtension.cs
- QilExpression.cs
- XmlSiteMapProvider.cs
- indexingfiltermarshaler.cs
- UndirectedGraph.cs
- AssemblyName.cs
- FixedSOMFixedBlock.cs
- ContainerSelectorGlyph.cs
- Int32Animation.cs
- AdRotator.cs
- RepeaterCommandEventArgs.cs
- DataSourceXmlSubItemAttribute.cs
- MulticastIPAddressInformationCollection.cs
- XsltLoader.cs
- DataFormats.cs
- InvariantComparer.cs
- AspNetRouteServiceHttpHandler.cs
- KernelTypeValidation.cs
- Border.cs
- PolygonHotSpot.cs
- EdmConstants.cs
- HtmlInputText.cs
- VirtualizedContainerService.cs
- TypedReference.cs
- AtomPub10ServiceDocumentFormatter.cs
- ContentControl.cs
- PolicyManager.cs
- XmlSchemaProviderAttribute.cs
- LeafCellTreeNode.cs
- UIAgentMonitorHandle.cs
- Single.cs
- FindCompletedEventArgs.cs
- EntityParameter.cs
- Assert.cs
- KeyGesture.cs
- JoinCqlBlock.cs
- externdll.cs
- StateManagedCollection.cs
- WebHttpDispatchOperationSelectorData.cs
- LocationEnvironment.cs
- HttpProfileBase.cs
- TextRangeSerialization.cs