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
- TextPointer.cs
- InfiniteIntConverter.cs
- ServiceOperationParameter.cs
- COAUTHINFO.cs
- WebColorConverter.cs
- UnmanagedBitmapWrapper.cs
- BooleanStorage.cs
- DataGridRowClipboardEventArgs.cs
- SByteConverter.cs
- ListItemDetailViewAttribute.cs
- AttributeData.cs
- VerticalAlignConverter.cs
- WebPartPersonalization.cs
- StrongNameIdentityPermission.cs
- JavaScriptObjectDeserializer.cs
- DataRelation.cs
- HtmlShimManager.cs
- DynamicScriptObject.cs
- SinglePageViewer.cs
- ControlPaint.cs
- ThreadAbortException.cs
- CursorInteropHelper.cs
- ObjectDataSourceDisposingEventArgs.cs
- Lasso.cs
- ToggleButton.cs
- ClosureBinding.cs
- BaseProcessor.cs
- PointKeyFrameCollection.cs
- BitmapEffect.cs
- Point4DValueSerializer.cs
- FileDialogPermission.cs
- MobileCapabilities.cs
- LinqDataSourceInsertEventArgs.cs
- LogicalTreeHelper.cs
- KnownTypes.cs
- ParallelTimeline.cs
- elementinformation.cs
- CultureInfoConverter.cs
- TextRangeSerialization.cs
- DataGridViewAutoSizeModeEventArgs.cs
- DataGridViewDataConnection.cs
- SqlGenerator.cs
- DataServiceExpressionVisitor.cs
- RankException.cs
- SafeTokenHandle.cs
- MenuItem.cs
- ReliableChannelBinder.cs
- OneWayChannelListener.cs
- WebPartHelpVerb.cs
- BaseInfoTable.cs
- KeysConverter.cs
- XslTransform.cs
- LinkArea.cs
- SQLInt32Storage.cs
- LocalizabilityAttribute.cs
- ProfileSettings.cs
- LinkAreaEditor.cs
- EditorServiceContext.cs
- ValidationResult.cs
- Regex.cs
- XmlSchema.cs
- QilFunction.cs
- PeerDuplexChannel.cs
- XmlReaderDelegator.cs
- CoreSwitches.cs
- WindowsRichEdit.cs
- PopupRoot.cs
- HashHelper.cs
- XmlFormatExtensionAttribute.cs
- FormatConvertedBitmap.cs
- SizeConverter.cs
- FieldTemplateUserControl.cs
- AsyncPostBackTrigger.cs
- dataprotectionpermissionattribute.cs
- XmlDataProvider.cs
- HtmlElement.cs
- RightsManagementEncryptionTransform.cs
- PreProcessInputEventArgs.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DataControlButton.cs
- FontUnit.cs
- SystemTcpStatistics.cs
- GeometryValueSerializer.cs
- ToolStripItemDesigner.cs
- DESCryptoServiceProvider.cs
- ListQueryResults.cs
- SoapIgnoreAttribute.cs
- ColorConvertedBitmapExtension.cs
- ObjectConverter.cs
- DbConnectionOptions.cs
- SmtpTransport.cs
- MethodCallConverter.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- BinHexDecoder.cs
- DbConnectionClosed.cs
- HttpApplicationFactory.cs
- PhotoPrintingIntent.cs
- WebPartConnectionsEventArgs.cs
- UpDownEvent.cs
- TextBox.cs