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
- ComplexBindingPropertiesAttribute.cs
- InvalidCommandTreeException.cs
- FlowLayoutPanel.cs
- TextRangeProviderWrapper.cs
- StreamWriter.cs
- InheritedPropertyDescriptor.cs
- OleStrCAMarshaler.cs
- DelegateInArgument.cs
- followingsibling.cs
- _DisconnectOverlappedAsyncResult.cs
- FlowDocumentPaginator.cs
- ButtonAutomationPeer.cs
- InternalsVisibleToAttribute.cs
- DocumentGridContextMenu.cs
- Int32Animation.cs
- SharedTcpTransportManager.cs
- DataBindingCollection.cs
- StrokeFIndices.cs
- MatrixTransform3D.cs
- DataTableMappingCollection.cs
- StorageTypeMapping.cs
- RecipientInfo.cs
- NullableIntSumAggregationOperator.cs
- BinHexDecoder.cs
- ConfigXmlComment.cs
- ListChangedEventArgs.cs
- WindowsTab.cs
- AppDomainCompilerProxy.cs
- PropertyGridView.cs
- COM2Enum.cs
- PartitionResolver.cs
- SrgsElementFactoryCompiler.cs
- Missing.cs
- DataGridItemCollection.cs
- WindowsListViewSubItem.cs
- BitmapEffectRenderDataResource.cs
- DeploymentSection.cs
- ContextMenuStripGroupCollection.cs
- WebBrowserNavigatingEventHandler.cs
- HtmlHistory.cs
- TransactionManager.cs
- AdapterUtil.cs
- GacUtil.cs
- CollectionChangeEventArgs.cs
- TaskFormBase.cs
- DataGridViewComboBoxColumn.cs
- EntityProviderServices.cs
- ClusterRegistryConfigurationProvider.cs
- ReferencedCategoriesDocument.cs
- SHA1.cs
- CustomErrorsSection.cs
- MaterialGroup.cs
- Terminate.cs
- WebPartZone.cs
- ExpressionConverter.cs
- TextTreeObjectNode.cs
- ComponentResourceKeyConverter.cs
- CustomCategoryAttribute.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- IPGlobalProperties.cs
- ConsoleTraceListener.cs
- SimpleType.cs
- StackSpiller.Generated.cs
- BaseCAMarshaler.cs
- Automation.cs
- ResourceProviderFactory.cs
- ChameleonKey.cs
- TextAdaptor.cs
- OciLobLocator.cs
- PermissionSetEnumerator.cs
- TextBoxAutomationPeer.cs
- CommandHelpers.cs
- CroppedBitmap.cs
- Transform3D.cs
- WindowsScroll.cs
- StopStoryboard.cs
- CodeDOMProvider.cs
- ConfigurationStrings.cs
- HtmlInputHidden.cs
- Util.cs
- WebPartVerb.cs
- Lock.cs
- Pair.cs
- OwnerDrawPropertyBag.cs
- ControlValuePropertyAttribute.cs
- GlobalizationAssembly.cs
- TrackingMemoryStreamFactory.cs
- FontWeight.cs
- Pen.cs
- SqlCacheDependency.cs
- Image.cs
- MergeLocalizationDirectives.cs
- XamlSerializer.cs
- ConnectorRouter.cs
- BitmapEffectGroup.cs
- ServiceSettingsResponseInfo.cs
- StatusInfoItem.cs
- DataGridViewToolTip.cs
- UIntPtr.cs
- UserControl.cs