Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Structures / MemberPathMap.cs / 2 / 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
- CollectionViewSource.cs
- CachedRequestParams.cs
- TransportSecurityHelpers.cs
- DataSourceListEditor.cs
- ToolStripDropTargetManager.cs
- TextContainerChangedEventArgs.cs
- FaultContext.cs
- XmlUtf8RawTextWriter.cs
- StorageEndPropertyMapping.cs
- WebPartMenu.cs
- StringUtil.cs
- FormViewAutoFormat.cs
- TimeZone.cs
- ConnectionStringsExpressionBuilder.cs
- CellParagraph.cs
- NameNode.cs
- Size3D.cs
- backend.cs
- VisualStyleRenderer.cs
- TypeDependencyAttribute.cs
- TypedDataSetSchemaImporterExtension.cs
- Span.cs
- RowUpdatingEventArgs.cs
- EnumType.cs
- RightsManagementEncryptionTransform.cs
- NativeCppClassAttribute.cs
- DesignerWidgets.cs
- ILGenerator.cs
- HttpListenerPrefixCollection.cs
- ControlIdConverter.cs
- XPathBuilder.cs
- DataListItemEventArgs.cs
- ViewValidator.cs
- ToolStripSplitButton.cs
- RelOps.cs
- HtmlHistory.cs
- WebBrowser.cs
- Pair.cs
- RootBuilder.cs
- WindowsListView.cs
- _DisconnectOverlappedAsyncResult.cs
- UnionExpr.cs
- QueueProcessor.cs
- grammarelement.cs
- DynamicPropertyReader.cs
- CodeBinaryOperatorExpression.cs
- LineBreak.cs
- FileSystemWatcher.cs
- KeyedQueue.cs
- ComponentEditorForm.cs
- SystemInfo.cs
- DataService.cs
- ChangeInterceptorAttribute.cs
- CommunicationObject.cs
- X509Certificate2Collection.cs
- DataGridCellsPresenter.cs
- WindowsAuthenticationEventArgs.cs
- TrustSection.cs
- LineServicesRun.cs
- EditingCoordinator.cs
- HashSetEqualityComparer.cs
- UpdatePanelControlTrigger.cs
- BrowserCapabilitiesFactory35.cs
- DataGridViewTextBoxCell.cs
- GridView.cs
- ShapingWorkspace.cs
- MediaTimeline.cs
- DataGridViewButtonColumn.cs
- SecurityHelper.cs
- SqlProvider.cs
- LicenseContext.cs
- MenuBase.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- JsonByteArrayDataContract.cs
- SecurityTokenResolver.cs
- EventPropertyMap.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- MetadataImporter.cs
- Vertex.cs
- SqlServer2KCompatibilityCheck.cs
- XmlILOptimizerVisitor.cs
- ReceiveCompletedEventArgs.cs
- UIElementParaClient.cs
- DateTimeOffset.cs
- Timer.cs
- CachingHintValidation.cs
- ObjectDataSourceStatusEventArgs.cs
- AdRotator.cs
- ParameterElementCollection.cs
- TableDetailsRow.cs
- IResourceProvider.cs
- CaseStatementSlot.cs
- FontResourceCache.cs
- LongValidator.cs
- WebServicesSection.cs
- AttributeCollection.cs
- WindowsTokenRoleProvider.cs
- PostBackOptions.cs
- TimeSpanStorage.cs
- DropShadowBitmapEffect.cs