Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- LineSegment.cs
- CodeTypeDelegate.cs
- RestHandlerFactory.cs
- Matrix.cs
- OutputBuffer.cs
- SetStoryboardSpeedRatio.cs
- HttpCookieCollection.cs
- SerializationAttributes.cs
- DataSourceXmlSerializationAttribute.cs
- PlatformCulture.cs
- XamlFxTrace.cs
- NativeMethods.cs
- Gdiplus.cs
- DiscardableAttribute.cs
- AlternateView.cs
- VirtualPathData.cs
- CmsUtils.cs
- ManagedCodeMarkers.cs
- WeakHashtable.cs
- ListViewItemMouseHoverEvent.cs
- CodePageEncoding.cs
- WindowsListView.cs
- IResourceProvider.cs
- ConfigurationElementCollection.cs
- datacache.cs
- FixedDocumentPaginator.cs
- SqlFlattener.cs
- MenuItemCollection.cs
- RepeatInfo.cs
- MetafileEditor.cs
- ReferencedCollectionType.cs
- InputLanguage.cs
- AssemblyCollection.cs
- DataGridTextBox.cs
- FlowDocumentPaginator.cs
- OdbcInfoMessageEvent.cs
- LabelEditEvent.cs
- SecurityDocument.cs
- DataGridTablesFactory.cs
- DataGridViewTextBoxEditingControl.cs
- AssemblySettingAttributes.cs
- XmlSchemaIdentityConstraint.cs
- Visual.cs
- Multiply.cs
- GenerateScriptTypeAttribute.cs
- DispatchWrapper.cs
- DataService.cs
- DataSourceListEditor.cs
- MarkupExtensionParser.cs
- HiddenFieldDesigner.cs
- XmlSchemaAny.cs
- SettingsAttributeDictionary.cs
- TemplateParser.cs
- SecurityContext.cs
- ClaimComparer.cs
- CacheRequest.cs
- SqlSupersetValidator.cs
- StringSource.cs
- Positioning.cs
- SafeFileMappingHandle.cs
- AlignmentXValidation.cs
- AssociatedControlConverter.cs
- XmlSchemaCollection.cs
- ExceptionHelpers.cs
- EntityCommandCompilationException.cs
- Visual3D.cs
- Int32Collection.cs
- CodeTryCatchFinallyStatement.cs
- SortFieldComparer.cs
- DynamicValidatorEventArgs.cs
- Console.cs
- ManipulationVelocities.cs
- LookupBindingPropertiesAttribute.cs
- SecurityResources.cs
- AddInBase.cs
- StrongNameHelpers.cs
- SystemInfo.cs
- SyntaxCheck.cs
- InvalidOleVariantTypeException.cs
- ActivationServices.cs
- CodeDomConfigurationHandler.cs
- MethodCallTranslator.cs
- PropertyTab.cs
- TemplatedWizardStep.cs
- ProfessionalColors.cs
- ServiceNameElement.cs
- CommandField.cs
- DefaultIfEmptyQueryOperator.cs
- HandlerBase.cs
- DuplexClientBase.cs
- Msec.cs
- PersonalizationState.cs
- ImageIndexConverter.cs
- TemplateManager.cs
- LogExtentCollection.cs
- SplitterDesigner.cs
- HGlobalSafeHandle.cs
- ToolStripSeparator.cs
- DateTimeFormat.cs
- RectIndependentAnimationStorage.cs