Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / Runtime / XmlILIndex.cs / 1305376 / XmlILIndex.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Xml.XPath; namespace System.Xml.Xsl.Runtime { ////// This class manages nodes from one input document, indexed by key value(s). /// [EditorBrowsable(EditorBrowsableState.Never)] public sealed class XmlILIndex { private Dictionarytable; /// /// This constructor is internal so that external users cannot construct it (and therefore we do not have to test it separately). /// internal XmlILIndex() { this.table = new Dictionary(); } /// /// Add a node indexed by the specified key value. /// public void Add(string key, XPathNavigator navigator) { XmlQueryNodeSequence seq; if (!this.table.TryGetValue(key, out seq)) { // Create a new sequence and add it to the index seq = new XmlQueryNodeSequence(); seq.AddClone(navigator); this.table.Add(key, seq); } else { // The nodes are guaranteed to be added in document order with possible duplicates. // Add node to the existing sequence if it differs from the last one. Debug.Assert(navigator.ComparePosition(seq[seq.Count - 1]) >= 0, "Index nodes must be added in document order"); if (!navigator.IsSamePosition(seq[seq.Count - 1])) { seq.AddClone(navigator); } } } ////// Lookup a sequence of nodes that are indexed by the specified key value. /// Return a non-null empty sequence, if there are no nodes associated with the key. /// public XmlQueryNodeSequence Lookup(string key) { XmlQueryNodeSequence seq; if (!this.table.TryGetValue(key, out seq)) seq = new XmlQueryNodeSequence(); return seq; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Xml.XPath; namespace System.Xml.Xsl.Runtime { ////// This class manages nodes from one input document, indexed by key value(s). /// [EditorBrowsable(EditorBrowsableState.Never)] public sealed class XmlILIndex { private Dictionarytable; /// /// This constructor is internal so that external users cannot construct it (and therefore we do not have to test it separately). /// internal XmlILIndex() { this.table = new Dictionary(); } /// /// Add a node indexed by the specified key value. /// public void Add(string key, XPathNavigator navigator) { XmlQueryNodeSequence seq; if (!this.table.TryGetValue(key, out seq)) { // Create a new sequence and add it to the index seq = new XmlQueryNodeSequence(); seq.AddClone(navigator); this.table.Add(key, seq); } else { // The nodes are guaranteed to be added in document order with possible duplicates. // Add node to the existing sequence if it differs from the last one. Debug.Assert(navigator.ComparePosition(seq[seq.Count - 1]) >= 0, "Index nodes must be added in document order"); if (!navigator.IsSamePosition(seq[seq.Count - 1])) { seq.AddClone(navigator); } } } ////// Lookup a sequence of nodes that are indexed by the specified key value. /// Return a non-null empty sequence, if there are no nodes associated with the key. /// public XmlQueryNodeSequence Lookup(string key) { XmlQueryNodeSequence seq; if (!this.table.TryGetValue(key, out seq)) seq = new XmlQueryNodeSequence(); return seq; } } } // 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
- SoapUnknownHeader.cs
- CodePageEncoding.cs
- RichTextBox.cs
- ToggleButtonAutomationPeer.cs
- TextServicesDisplayAttributePropertyRanges.cs
- TextPointer.cs
- GeneratedCodeAttribute.cs
- MessageQueueException.cs
- ProcessProtocolHandler.cs
- BamlBinaryReader.cs
- WorkflowShape.cs
- HttpApplication.cs
- ELinqQueryState.cs
- HwndSubclass.cs
- HandledEventArgs.cs
- New.cs
- FormViewDesigner.cs
- RegistryKey.cs
- IDispatchConstantAttribute.cs
- TypedTableBase.cs
- SecurityElement.cs
- CalloutQueueItem.cs
- LineInfo.cs
- RegexTree.cs
- BamlResourceDeserializer.cs
- Metafile.cs
- SetterBase.cs
- VectorCollectionValueSerializer.cs
- HttpContextServiceHost.cs
- EntitySqlQueryBuilder.cs
- DetailsViewUpdateEventArgs.cs
- ToolStripItemCollection.cs
- RegistrySecurity.cs
- TableSectionStyle.cs
- ButtonBaseAutomationPeer.cs
- SecUtil.cs
- OracleLob.cs
- DataObject.cs
- FieldTemplateUserControl.cs
- CleanUpVirtualizedItemEventArgs.cs
- TransformDescriptor.cs
- EmptyElement.cs
- ErrorFormatterPage.cs
- IgnoreDataMemberAttribute.cs
- PenContext.cs
- TranslateTransform3D.cs
- SafeTimerHandle.cs
- TextEditorCharacters.cs
- XhtmlBasicTextBoxAdapter.cs
- PagePropertiesChangingEventArgs.cs
- Single.cs
- PrincipalPermission.cs
- ProcessModuleDesigner.cs
- XmlSerializerNamespaces.cs
- IdentityValidationException.cs
- CssStyleCollection.cs
- PeerName.cs
- CellRelation.cs
- GACIdentityPermission.cs
- RuntimeArgumentHandle.cs
- TableRow.cs
- MemoryPressure.cs
- lengthconverter.cs
- ScriptBehaviorDescriptor.cs
- ContentType.cs
- SqlMetaData.cs
- ColumnReorderedEventArgs.cs
- TemplateField.cs
- NamespaceCollection.cs
- ResourcePart.cs
- ThreadStartException.cs
- EventLogEntry.cs
- ValidationRuleCollection.cs
- MsmqBindingElementBase.cs
- MsmqProcessProtocolHandler.cs
- InvalidOleVariantTypeException.cs
- GroupBoxRenderer.cs
- Semaphore.cs
- RowUpdatedEventArgs.cs
- VolatileEnlistmentMultiplexing.cs
- RubberbandSelector.cs
- Pens.cs
- DesignTimeTemplateParser.cs
- WorkflowInvoker.cs
- CodeDOMProvider.cs
- SizeConverter.cs
- TypefaceMap.cs
- CodeLabeledStatement.cs
- UnsafeNativeMethods.cs
- Shape.cs
- ServicesUtilities.cs
- ElementAtQueryOperator.cs
- MetadataCache.cs
- TextRangeProviderWrapper.cs
- FixedHighlight.cs
- SoapDocumentMethodAttribute.cs
- sqlpipe.cs
- GridSplitter.cs
- ListControlStringCollectionEditor.cs
- XsltSettings.cs