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
- DbParameterHelper.cs
- LoadMessageLogger.cs
- WorkflowViewManager.cs
- PeerMessageDispatcher.cs
- EventLogEntry.cs
- TemplateControlParser.cs
- DataGridDesigner.cs
- ManagedIStream.cs
- Buffer.cs
- SystemIPGlobalProperties.cs
- KeySplineConverter.cs
- SafePointer.cs
- ApplyTemplatesAction.cs
- FixedStringLookup.cs
- StateBag.cs
- TreeViewItemAutomationPeer.cs
- NativeCppClassAttribute.cs
- XmlNodeReader.cs
- ScriptResourceAttribute.cs
- HijriCalendar.cs
- ResourceDescriptionAttribute.cs
- ColorAnimationUsingKeyFrames.cs
- UTF8Encoding.cs
- SqlNodeAnnotations.cs
- StorageMappingItemLoader.cs
- Brush.cs
- DataComponentGenerator.cs
- SqlError.cs
- SelectionRange.cs
- CodeDirectiveCollection.cs
- PlanCompiler.cs
- PriorityQueue.cs
- DebugControllerThread.cs
- Model3DGroup.cs
- TypefaceMetricsCache.cs
- Size.cs
- SmiEventSink.cs
- WebPartDisplayModeCancelEventArgs.cs
- RepeatButtonAutomationPeer.cs
- PartialCachingAttribute.cs
- ProfilePropertyNameValidator.cs
- IIS7UserPrincipal.cs
- XsdBuilder.cs
- Operand.cs
- VariableQuery.cs
- ControlValuePropertyAttribute.cs
- TrackingParameters.cs
- MouseBinding.cs
- ProtocolsConfigurationEntry.cs
- EntityAdapter.cs
- future.cs
- DataObjectFieldAttribute.cs
- CalendarAutomationPeer.cs
- EntityDataSource.cs
- Converter.cs
- PageThemeCodeDomTreeGenerator.cs
- ListenerPerfCounters.cs
- LocalizableAttribute.cs
- DataGridHeaderBorder.cs
- XLinq.cs
- DuplicateDetector.cs
- ArglessEventHandlerProxy.cs
- RowBinding.cs
- Operand.cs
- HashMembershipCondition.cs
- RoleManagerModule.cs
- ElapsedEventArgs.cs
- Panel.cs
- DoubleCollectionConverter.cs
- Decoder.cs
- RegexCapture.cs
- COM2ComponentEditor.cs
- HeaderUtility.cs
- RequestContext.cs
- HybridDictionary.cs
- MemoryStream.cs
- DataGridViewRowStateChangedEventArgs.cs
- ScrollChrome.cs
- MatrixTransform.cs
- ExcludeFromCodeCoverageAttribute.cs
- XmlRawWriter.cs
- PictureBox.cs
- DispatcherProcessingDisabled.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- GetCryptoTransformRequest.cs
- SafeSecurityHandles.cs
- X509ChainPolicy.cs
- CompositeFontInfo.cs
- JapaneseLunisolarCalendar.cs
- AvtEvent.cs
- TextViewBase.cs
- PreviewPageInfo.cs
- ConfigurationElementProperty.cs
- GroupBox.cs
- StrongTypingException.cs
- ZipIOLocalFileBlock.cs
- ThreadAttributes.cs
- SerializerProvider.cs
- XmlTypeMapping.cs
- RankException.cs