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
- PropertyValueChangedEvent.cs
- ByteAnimationBase.cs
- RawStylusInput.cs
- AutomationIdentifierGuids.cs
- ContractSearchPattern.cs
- ConnectionPointCookie.cs
- DNS.cs
- CheckBoxField.cs
- Timeline.cs
- ValueUtilsSmi.cs
- CodeMemberField.cs
- initElementDictionary.cs
- XmlCompatibilityReader.cs
- InvalidProgramException.cs
- SafeFileHandle.cs
- SelectionRange.cs
- PageFunction.cs
- XsdDataContractImporter.cs
- AssemblyCache.cs
- TemplateXamlParser.cs
- QueryOperationResponseOfT.cs
- ConstraintManager.cs
- FileSystemInfo.cs
- HMAC.cs
- PreservationFileReader.cs
- DataTableReaderListener.cs
- ObjectReaderCompiler.cs
- ValidationService.cs
- XPathNavigatorReader.cs
- ControlPaint.cs
- ThemeDirectoryCompiler.cs
- XNameConverter.cs
- MulticastIPAddressInformationCollection.cs
- KeyedHashAlgorithm.cs
- RuntimeCompatibilityAttribute.cs
- Color.cs
- TextSimpleMarkerProperties.cs
- MemoryMappedViewAccessor.cs
- XmlObjectSerializerWriteContext.cs
- ColumnReorderedEventArgs.cs
- ClassImporter.cs
- ContainerAction.cs
- QilInvokeLateBound.cs
- StateMachineAction.cs
- InvalidProgramException.cs
- FactoryGenerator.cs
- ApplicationBuildProvider.cs
- CapabilitiesPattern.cs
- ButtonDesigner.cs
- DataGridViewEditingControlShowingEventArgs.cs
- CalendarDateChangedEventArgs.cs
- ParentUndoUnit.cs
- AssemblyBuilder.cs
- DataGridViewUtilities.cs
- XPathArrayIterator.cs
- RemotingConfigParser.cs
- NoResizeHandleGlyph.cs
- SqlRowUpdatedEvent.cs
- CodeParameterDeclarationExpressionCollection.cs
- ServiceInstallComponent.cs
- TreeNodeSelectionProcessor.cs
- MenuBase.cs
- ConnectionDemuxer.cs
- MulticastDelegate.cs
- CurrencyWrapper.cs
- SendOperation.cs
- SoundPlayerAction.cs
- Vector.cs
- NavigationExpr.cs
- InputLanguageEventArgs.cs
- PriorityRange.cs
- MimeReflector.cs
- FileVersionInfo.cs
- ManipulationCompletedEventArgs.cs
- XmlText.cs
- PenContexts.cs
- GridViewColumnHeaderAutomationPeer.cs
- DocumentPageView.cs
- BoolLiteral.cs
- StringFreezingAttribute.cs
- PersonalizationDictionary.cs
- ButtonBase.cs
- MultiPropertyDescriptorGridEntry.cs
- ApplicationSecurityManager.cs
- DrawingGroup.cs
- ImageCodecInfo.cs
- XmlCharType.cs
- TrustSection.cs
- RotationValidation.cs
- XmlPropertyBag.cs
- CacheChildrenQuery.cs
- NameValueCollection.cs
- DataContractAttribute.cs
- EndpointInfo.cs
- Token.cs
- ChannelSinkStacks.cs
- Help.cs
- DataGridTable.cs
- ScrollItemPattern.cs
- AmbientProperties.cs