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
- DocumentOrderQuery.cs
- ConnectionManagementElement.cs
- PersonalizationStateInfoCollection.cs
- TreeNodeStyleCollection.cs
- WebBodyFormatMessageProperty.cs
- PropertyDescriptorCollection.cs
- DbFunctionCommandTree.cs
- ConfigurationErrorsException.cs
- SHA1Managed.cs
- DocumentXmlWriter.cs
- PeerToPeerException.cs
- LiteralTextContainerControlBuilder.cs
- XmlSchemaSimpleContentRestriction.cs
- TableLayoutCellPaintEventArgs.cs
- SHA1Cng.cs
- PathParser.cs
- FloaterBaseParagraph.cs
- WindowsButton.cs
- DataList.cs
- HyperLinkColumn.cs
- EasingKeyFrames.cs
- DataGridrowEditEndingEventArgs.cs
- VerbConverter.cs
- PeerContact.cs
- ReaderWriterLock.cs
- ELinqQueryState.cs
- MouseDevice.cs
- DataSourceCacheDurationConverter.cs
- CreateParams.cs
- OdbcErrorCollection.cs
- BuildResultCache.cs
- CodeDirectionExpression.cs
- SqlFormatter.cs
- SecurityPermission.cs
- InternalTypeHelper.cs
- mansign.cs
- PreservationFileWriter.cs
- OneWayBindingElement.cs
- ClientUtils.cs
- XmlBinaryWriter.cs
- TableStyle.cs
- HttpCookieCollection.cs
- AuthenticationConfig.cs
- DbConnectionPoolCounters.cs
- StorageBasedPackageProperties.cs
- latinshape.cs
- BaseHashHelper.cs
- BaseHashHelper.cs
- RowUpdatingEventArgs.cs
- RegexWorker.cs
- MouseWheelEventArgs.cs
- GeneralTransformGroup.cs
- WebPartEditVerb.cs
- TdsParserSessionPool.cs
- TypeExtension.cs
- UnicodeEncoding.cs
- AudioFormatConverter.cs
- ProtocolsConfigurationEntry.cs
- Vector3DCollectionValueSerializer.cs
- TemplateFactory.cs
- WorkflowTransactionOptions.cs
- RegexMatchCollection.cs
- OutputScopeManager.cs
- TemplateBaseAction.cs
- DiscoveryDocumentReference.cs
- StringFreezingAttribute.cs
- UIElementHelper.cs
- Border.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SHA256Cng.cs
- TreeView.cs
- StylusPointCollection.cs
- DropSource.cs
- SafeCryptoHandles.cs
- WebPartConnectionsCloseVerb.cs
- NonParentingControl.cs
- JsonWriterDelegator.cs
- DataRowChangeEvent.cs
- MenuAutomationPeer.cs
- ColorConvertedBitmapExtension.cs
- StringArrayEditor.cs
- TextServicesPropertyRanges.cs
- xamlnodes.cs
- Image.cs
- Condition.cs
- unsafenativemethodstextservices.cs
- ArrayConverter.cs
- EncodingDataItem.cs
- Marshal.cs
- CommentEmitter.cs
- CaretElement.cs
- xml.cs
- HierarchicalDataBoundControlAdapter.cs
- ResourceType.cs
- BitmapSourceSafeMILHandle.cs
- CodeGeneratorOptions.cs
- MissingMethodException.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- EventLogPermissionEntry.cs
- SourceFilter.cs