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
- _NestedSingleAsyncResult.cs
- TranslateTransform.cs
- PieceNameHelper.cs
- PreviewPageInfo.cs
- Comparer.cs
- LineGeometry.cs
- DataViewManagerListItemTypeDescriptor.cs
- ManagementObject.cs
- PolicyStatement.cs
- ConstructorArgumentAttribute.cs
- WebPartConnectionsCancelEventArgs.cs
- TreeNode.cs
- OleDbErrorCollection.cs
- AnnotationDocumentPaginator.cs
- SnapLine.cs
- ServiceDeploymentInfo.cs
- FrameworkTextComposition.cs
- TextRenderer.cs
- XsltInput.cs
- EllipticalNodeOperations.cs
- AmbientEnvironment.cs
- CheckBoxAutomationPeer.cs
- sqlinternaltransaction.cs
- SimpleApplicationHost.cs
- TypeInfo.cs
- QilTypeChecker.cs
- BreakRecordTable.cs
- HuffCodec.cs
- MailDefinition.cs
- ColumnMapTranslator.cs
- RootProjectionNode.cs
- XmlMessageFormatter.cs
- JournalEntry.cs
- DiagnosticTraceSchemas.cs
- ImpersonateTokenRef.cs
- HasCopySemanticsAttribute.cs
- ExpressionBuilder.cs
- RootAction.cs
- DrawingBrush.cs
- _ServiceNameStore.cs
- XmlSerializableServices.cs
- XmlIterators.cs
- RequestQueryProcessor.cs
- LingerOption.cs
- DataSourceXmlClassAttribute.cs
- LabelLiteral.cs
- SetterBase.cs
- DbRetry.cs
- WSSecureConversationDec2005.cs
- WebPartUserCapability.cs
- DetailsViewUpdatedEventArgs.cs
- ArgumentException.cs
- LoadedOrUnloadedOperation.cs
- LocalizabilityAttribute.cs
- ActivityPropertyReference.cs
- MetadataCache.cs
- EntityConnection.cs
- ScrollableControlDesigner.cs
- ListBoxItemWrapperAutomationPeer.cs
- SmtpMail.cs
- DataBoundLiteralControl.cs
- ClosureBinding.cs
- util.cs
- AsyncOperation.cs
- PropertyToken.cs
- HybridObjectCache.cs
- EdmItemCollection.cs
- Run.cs
- MatrixUtil.cs
- CardSpacePolicyElement.cs
- BackgroundFormatInfo.cs
- XmlDocumentType.cs
- hresults.cs
- FormViewPagerRow.cs
- ValueCollectionParameterReader.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- EventLogPropertySelector.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- ProfilePropertySettingsCollection.cs
- ArrayMergeHelper.cs
- XmlSchemaComplexContent.cs
- TraceInternal.cs
- DataListItemCollection.cs
- CompilerState.cs
- FamilyTypeface.cs
- LayoutEngine.cs
- XmlCharCheckingReader.cs
- _SafeNetHandles.cs
- FormsAuthenticationCredentials.cs
- HtmlCalendarAdapter.cs
- Drawing.cs
- XmlAnyAttributeAttribute.cs
- BinaryUtilClasses.cs
- FocusWithinProperty.cs
- DataGridTextBoxColumn.cs
- SmtpNtlmAuthenticationModule.cs
- DbParameterHelper.cs
- WSMessageEncoding.cs
- LinkLabelLinkClickedEvent.cs
- DatePickerDateValidationErrorEventArgs.cs