Code:
/ 4.0 / 4.0 / untmp / 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 Dictionary table;
///
/// 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
- GridToolTip.cs
- SrgsNameValueTag.cs
- PenCursorManager.cs
- RegexParser.cs
- EndOfStreamException.cs
- ConfigurationLockCollection.cs
- SystemUnicastIPAddressInformation.cs
- TypefaceMap.cs
- PreviousTrackingServiceAttribute.cs
- TimelineCollection.cs
- DetailsViewPagerRow.cs
- MobileControlsSectionHelper.cs
- State.cs
- FontCacheUtil.cs
- NumericExpr.cs
- ReferencedCategoriesDocument.cs
- Mapping.cs
- AutoResizedEvent.cs
- COAUTHIDENTITY.cs
- ContextMenuStripGroupCollection.cs
- VectorCollection.cs
- TrackingRecord.cs
- NativeWindow.cs
- FrugalList.cs
- TemplateModeChangedEventArgs.cs
- Camera.cs
- SharedHttpTransportManager.cs
- ISAPIWorkerRequest.cs
- XdrBuilder.cs
- JsonReaderWriterFactory.cs
- TemplateBindingExtensionConverter.cs
- ParallelTimeline.cs
- GeneralTransformGroup.cs
- Tablet.cs
- RuleSetDialog.Designer.cs
- ToolboxBitmapAttribute.cs
- TreeViewBindingsEditor.cs
- ToolStripMenuItem.cs
- ButtonChrome.cs
- TextBox.cs
- MinMaxParagraphWidth.cs
- InternalTypeHelper.cs
- NameValueConfigurationCollection.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- OleDbPropertySetGuid.cs
- WebPartConnectionsCancelVerb.cs
- SRGSCompiler.cs
- CodePrimitiveExpression.cs
- HatchBrush.cs
- ObjectMaterializedEventArgs.cs
- BuildManagerHost.cs
- QuotaThrottle.cs
- CLSCompliantAttribute.cs
- RemoteX509Token.cs
- RankException.cs
- InkPresenter.cs
- OdbcStatementHandle.cs
- DocumentPropertiesDialog.cs
- Binding.cs
- WindowsNonControl.cs
- StackBuilderSink.cs
- ToolStripSeparator.cs
- BoundField.cs
- ConfigsHelper.cs
- IListConverters.cs
- RightsManagementInformation.cs
- TypeSemantics.cs
- StorageComplexTypeMapping.cs
- DynamicVirtualDiscoSearcher.cs
- DynamicPropertyReader.cs
- OleDbRowUpdatedEvent.cs
- _PooledStream.cs
- IsolatedStorageFileStream.cs
- IntSecurity.cs
- EdmComplexTypeAttribute.cs
- Html32TextWriter.cs
- MatchingStyle.cs
- ILGenerator.cs
- DataGridToolTip.cs
- _SingleItemRequestCache.cs
- XPathNavigatorKeyComparer.cs
- MapPathBasedVirtualPathProvider.cs
- RangeBase.cs
- AttachedPropertyInfo.cs
- NumberSubstitution.cs
- DrawingDrawingContext.cs
- Nodes.cs
- UnsafeNativeMethodsPenimc.cs
- RenderDataDrawingContext.cs
- GrammarBuilder.cs
- ImportCatalogPart.cs
- StrokeCollectionDefaultValueFactory.cs
- MimeXmlImporter.cs
- QueryContinueDragEventArgs.cs
- Label.cs
- BitmapEffectGeneralTransform.cs
- ProfileSettings.cs
- DiscriminatorMap.cs
- BridgeDataReader.cs
- Table.cs