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
- SplineKeyFrames.cs
- Int32CAMarshaler.cs
- MenuCommands.cs
- Header.cs
- OverrideMode.cs
- FlowchartStart.xaml.cs
- DataGridViewColumnCollectionDialog.cs
- KeyManager.cs
- prefixendpointaddressmessagefiltertable.cs
- TiffBitmapEncoder.cs
- DebugInfo.cs
- PauseStoryboard.cs
- QuestionEventArgs.cs
- ControlEvent.cs
- ClientSettingsStore.cs
- Utilities.cs
- XmlBaseReader.cs
- ArrayList.cs
- CanonicalFontFamilyReference.cs
- DetailsViewCommandEventArgs.cs
- Queue.cs
- __Error.cs
- FixedSOMElement.cs
- PhonemeConverter.cs
- HtmlTableRowCollection.cs
- ListBindableAttribute.cs
- LeafCellTreeNode.cs
- TypeBuilder.cs
- EmptyEnumerable.cs
- ValueProviderWrapper.cs
- TextTreeNode.cs
- ReadOnlyDictionary.cs
- HostingEnvironmentException.cs
- cookiecollection.cs
- CqlWriter.cs
- GridViewSelectEventArgs.cs
- GridViewCellAutomationPeer.cs
- ActivityCodeGenerator.cs
- SimpleBitVector32.cs
- GroupBox.cs
- XPathParser.cs
- PartBasedPackageProperties.cs
- UrlMapping.cs
- XPathNodePointer.cs
- IgnoreSection.cs
- RegexRunner.cs
- ItemPager.cs
- GetWorkflowTree.cs
- ObjectParameterCollection.cs
- ServiceDesigner.cs
- EncodingInfo.cs
- ToolBarTray.cs
- BindingList.cs
- SchemaTableOptionalColumn.cs
- PropertyGridView.cs
- DataBinder.cs
- CellTreeNode.cs
- Slider.cs
- SafeThreadHandle.cs
- ToolStripOverflowButton.cs
- HyperLinkColumn.cs
- BufferedGenericXmlSecurityToken.cs
- PolicyException.cs
- NumericUpDown.cs
- ResourceProviderFactory.cs
- WindowsNonControl.cs
- ImportOptions.cs
- ProbeMatches11.cs
- ZoneMembershipCondition.cs
- TdsParserSafeHandles.cs
- WebBrowserSiteBase.cs
- _RequestCacheProtocol.cs
- XmlWriterTraceListener.cs
- AttributeConverter.cs
- DynamicMethod.cs
- RemoteArgument.cs
- TraceEventCache.cs
- SqlDataReaderSmi.cs
- ItemsChangedEventArgs.cs
- Monitor.cs
- EventPrivateKey.cs
- printdlgexmarshaler.cs
- RemoteArgument.cs
- ToolStripDropDown.cs
- CfgSemanticTag.cs
- ToolStripDropDown.cs
- CodeVariableReferenceExpression.cs
- MonthChangedEventArgs.cs
- ModulesEntry.cs
- UIHelper.cs
- ServiceOperationListItemList.cs
- DataException.cs
- FontWeightConverter.cs
- TcpActivation.cs
- BindableTemplateBuilder.cs
- StronglyTypedResourceBuilder.cs
- FileDialogCustomPlacesCollection.cs
- Control.cs
- TransformCryptoHandle.cs
- CodeAccessPermission.cs