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
- DictionaryEntry.cs
- WindowsListView.cs
- messageonlyhwndwrapper.cs
- KeyEvent.cs
- GeneratedCodeAttribute.cs
- X509RawDataKeyIdentifierClause.cs
- DLinqDataModelProvider.cs
- StatusBarItem.cs
- ColumnResizeUndoUnit.cs
- TdsParameterSetter.cs
- metadatamappinghashervisitor.cs
- StylusPointProperties.cs
- SrgsSubset.cs
- IRCollection.cs
- TypeDescriptor.cs
- EventLogger.cs
- SelectionItemPattern.cs
- CheckBoxField.cs
- XmlDataImplementation.cs
- Color.cs
- Storyboard.cs
- SourceFileBuildProvider.cs
- XmlDocumentSerializer.cs
- ResourceWriter.cs
- GraphicsState.cs
- CodeTypeParameter.cs
- TerminatorSinks.cs
- CompiledIdentityConstraint.cs
- EdmComplexPropertyAttribute.cs
- ScriptReferenceEventArgs.cs
- FieldNameLookup.cs
- PerformanceCounterPermissionEntry.cs
- TrackingServices.cs
- AutomationElement.cs
- ClockController.cs
- QueueException.cs
- DataColumnMappingCollection.cs
- BitmapFrameDecode.cs
- QilPatternVisitor.cs
- Char.cs
- WithStatement.cs
- CodeTypeDeclaration.cs
- UriExt.cs
- DropShadowBitmapEffect.cs
- TemplateNameScope.cs
- SchemaMapping.cs
- OneOf.cs
- PropertyKey.cs
- ExpressionBindingCollection.cs
- FixedSchema.cs
- IPPacketInformation.cs
- ReservationCollection.cs
- XamlRtfConverter.cs
- Rotation3DAnimationUsingKeyFrames.cs
- __Filters.cs
- IPAddressCollection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- PersonalizationDictionary.cs
- VisualBasicImportReference.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- ZipIOLocalFileDataDescriptor.cs
- Bezier.cs
- InstanceStore.cs
- XmlDeclaration.cs
- XmlUtil.cs
- WeakReferenceEnumerator.cs
- DeadCharTextComposition.cs
- SettingsPropertyValueCollection.cs
- PartialList.cs
- OpenTypeLayoutCache.cs
- DbParameterCollection.cs
- ColumnWidthChangingEvent.cs
- DebugViewWriter.cs
- SystemPens.cs
- AsynchronousChannel.cs
- LoginDesigner.cs
- SecurityDocument.cs
- ResetableIterator.cs
- DeploymentSection.cs
- NavigationHelper.cs
- CompilerResults.cs
- UIElement.cs
- ClassValidator.cs
- Pipe.cs
- XmlObjectSerializerReadContextComplexJson.cs
- CLRBindingWorker.cs
- SafeRightsManagementEnvironmentHandle.cs
- SmiContextFactory.cs
- SectionInformation.cs
- TreeBuilderXamlTranslator.cs
- TCEAdapterGenerator.cs
- Error.cs
- ProxyWebPart.cs
- SubstitutionList.cs
- Matrix.cs
- SrgsElementFactory.cs
- XmlSchemaObject.cs
- PageBuildProvider.cs
- RawStylusInput.cs
- ContactManager.cs