Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Structures / MemberPathMap.cs / 1 / MemberPathMap.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Text; using System.Data.Common.Utils; namespace System.Data.Mapping.ViewGeneration.Structures { /// Maps member paths to a dense space of integers, e.g., so that one can /// store memberpaths in arrays and use array indexes for easy and /// efficient handling internal class MemberPathMap : MemberPathMapBase { #region Constructor // effects: Creates an empty map internal MemberPathMap() { m_indexMap = new Dictionary(MemberPath.EqualityComparer); m_members = new List (); } #endregion #region Fields // A dictionary to get us from paths to indexes and an array for the // other way around private Dictionary m_indexMap; private List m_members; #endregion #region MemberPathMapBase Properties // effects: See MemberPathMapBase.Count internal override int Count { get {return m_members.Count; } } // effects: See MemberPathMapBase.indexer internal override MemberPath this[int index] { get { return m_members[index]; } } // effects: Returns the indexes of the key slots corresponding to // fields in this for which IsPartOfKey is true internal override IEnumerable KeySlots { get { List result = new List (); for (int slotNum = 0; slotNum < Count; slotNum++) { // We pass for numboolslots since we know that this is not a // bool slot if (ProjectedSlot.IsKeySlot(slotNum, this, 0)) { result.Add(slotNum); } } return result; } } // effects: returns an enumeration of all members internal override IEnumerable Members { get { return m_members; } } #endregion #region MemberPathMapBase Methods // effects: See MemberPathMapBase.IndexOf internal override int IndexOf(MemberPath member) { int index; if (m_indexMap.TryGetValue(member, out index)) { return index; } else { return -1; } } #endregion #region Other Methods // effects: If an index already exists for member, this is a // noop. Else creates the next index available for member and returns it internal int CreateIndex(MemberPath member) { int index; if (false == m_indexMap.TryGetValue(member, out index)) { index = m_indexMap.Count; m_indexMap[member] = index; m_members.Add(member); } return index; } internal override void ToCompactString(StringBuilder builder) { builder.Append('<'); StringUtil.ToCommaSeparatedString(builder, m_members); builder.Append('>'); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Text; using System.Data.Common.Utils; namespace System.Data.Mapping.ViewGeneration.Structures { /// Maps member paths to a dense space of integers, e.g., so that one can /// store memberpaths in arrays and use array indexes for easy and /// efficient handling internal class MemberPathMap : MemberPathMapBase { #region Constructor // effects: Creates an empty map internal MemberPathMap() { m_indexMap = new Dictionary(MemberPath.EqualityComparer); m_members = new List (); } #endregion #region Fields // A dictionary to get us from paths to indexes and an array for the // other way around private Dictionary m_indexMap; private List m_members; #endregion #region MemberPathMapBase Properties // effects: See MemberPathMapBase.Count internal override int Count { get {return m_members.Count; } } // effects: See MemberPathMapBase.indexer internal override MemberPath this[int index] { get { return m_members[index]; } } // effects: Returns the indexes of the key slots corresponding to // fields in this for which IsPartOfKey is true internal override IEnumerable KeySlots { get { List result = new List (); for (int slotNum = 0; slotNum < Count; slotNum++) { // We pass for numboolslots since we know that this is not a // bool slot if (ProjectedSlot.IsKeySlot(slotNum, this, 0)) { result.Add(slotNum); } } return result; } } // effects: returns an enumeration of all members internal override IEnumerable Members { get { return m_members; } } #endregion #region MemberPathMapBase Methods // effects: See MemberPathMapBase.IndexOf internal override int IndexOf(MemberPath member) { int index; if (m_indexMap.TryGetValue(member, out index)) { return index; } else { return -1; } } #endregion #region Other Methods // effects: If an index already exists for member, this is a // noop. Else creates the next index available for member and returns it internal int CreateIndex(MemberPath member) { int index; if (false == m_indexMap.TryGetValue(member, out index)) { index = m_indexMap.Count; m_indexMap[member] = index; m_members.Add(member); } return index; } internal override void ToCompactString(StringBuilder builder) { builder.Append('<'); StringUtil.ToCommaSeparatedString(builder, m_members); builder.Append('>'); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FamilyCollection.cs
- InternalConfigSettingsFactory.cs
- CompilationSection.cs
- HandlerFactoryCache.cs
- AsyncOperationManager.cs
- RewritingPass.cs
- SafeFindHandle.cs
- LogLogRecordEnumerator.cs
- DbBuffer.cs
- WorkflowWebHostingModule.cs
- EncoderNLS.cs
- DataBindingExpressionBuilder.cs
- ToolStripComboBox.cs
- SqlDataSourceCommandEventArgs.cs
- TagMapInfo.cs
- PageCatalogPart.cs
- GlyphsSerializer.cs
- PenLineJoinValidation.cs
- ToolStripPanelCell.cs
- SmiRequestExecutor.cs
- BitmapEffectInput.cs
- Focus.cs
- IMembershipProvider.cs
- RecordConverter.cs
- PageThemeCodeDomTreeGenerator.cs
- UITypeEditor.cs
- ProgressBarHighlightConverter.cs
- Int32Collection.cs
- ThrowHelper.cs
- ColumnResult.cs
- SelectedDatesCollection.cs
- ThaiBuddhistCalendar.cs
- _Win32.cs
- FrugalList.cs
- RectAnimationUsingKeyFrames.cs
- WebPartEventArgs.cs
- PolyLineSegment.cs
- FontDialog.cs
- UIAgentAsyncParams.cs
- AttachedProperty.cs
- HttpCacheVary.cs
- CompositeFontFamily.cs
- MethodAccessException.cs
- CompilationUnit.cs
- DataMemberListEditor.cs
- PermissionRequestEvidence.cs
- StrongTypingException.cs
- AuthenticodeSignatureInformation.cs
- WsatStrings.cs
- PanelStyle.cs
- WorkflowServiceNamespace.cs
- TreeNodeClickEventArgs.cs
- FrameworkTemplate.cs
- EventEntry.cs
- ProgressBarRenderer.cs
- SessionSymmetricMessageSecurityProtocolFactory.cs
- TreeIterators.cs
- StylusPointProperty.cs
- TransformGroup.cs
- ConsoleCancelEventArgs.cs
- ZipFileInfo.cs
- LoadWorkflowByKeyAsyncResult.cs
- SingleObjectCollection.cs
- Activity.cs
- SiteMapSection.cs
- ZeroOpNode.cs
- ViewPort3D.cs
- ScrollItemProviderWrapper.cs
- storepermission.cs
- PersonalizationProvider.cs
- ReachSerializableProperties.cs
- OptimizedTemplateContent.cs
- BindingBase.cs
- ClassGenerator.cs
- Pair.cs
- TextServicesProperty.cs
- VisualStateChangedEventArgs.cs
- GeneralTransform3DTo2DTo3D.cs
- ItemsControlAutomationPeer.cs
- IntPtr.cs
- AnnotationObservableCollection.cs
- MethodAccessException.cs
- IteratorFilter.cs
- DynamicPropertyHolder.cs
- OutputCacheProviderCollection.cs
- EntitySet.cs
- OperationCanceledException.cs
- diagnosticsswitches.cs
- UserPreferenceChangingEventArgs.cs
- DomainConstraint.cs
- ProcessingInstructionAction.cs
- SemanticBasicElement.cs
- FontResourceCache.cs
- CodeConditionStatement.cs
- RangeExpression.cs
- XmlSchemaInfo.cs
- ZoneLinkButton.cs
- ColorConverter.cs
- DesignerExtenders.cs
- AssemblyGen.cs