Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilList.cs / 1305376 / QilList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Diagnostics; namespace System.Xml.Xsl.Qil { ////// View over a Qil operator having N children. /// ////// Don't construct QIL nodes directly; instead, use the internal class QilList : QilNode { private int count; private QilNode[] members; //----------------------------------------------- // Constructor //----------------------------------------------- ///QilFactory . ////// Construct a new (empty) QilList /// public QilList(QilNodeType nodeType) : base(nodeType) { this.members = new QilNode[4]; this.xmlType = null; } //----------------------------------------------- // QilNode methods //----------------------------------------------- ////// Lazily create the XmlQueryType. /// public override XmlQueryType XmlType { get { if (this.xmlType == null) { XmlQueryType xt = XmlQueryTypeFactory.Empty; if (this.count > 0) { if (this.nodeType == QilNodeType.Sequence) { for (int i = 0; i < this.count; i++) xt = XmlQueryTypeFactory.Sequence(xt, this.members[i].XmlType); Debug.Assert(!xt.IsDod, "Sequences do not preserve DocOrderDistinct"); } else if (this.nodeType == QilNodeType.BranchList) { xt = this.members[0].XmlType; for (int i = 1; i < this.count; i++) xt = XmlQueryTypeFactory.Choice(xt, this.members[i].XmlType); } } this.xmlType = xt; } return this.xmlType; } } ////// Override in order to clone the "members" array. /// public override QilNode ShallowClone(QilFactory f) { QilList n = (QilList) MemberwiseClone(); n.members = (QilNode[]) this.members.Clone(); f.TraceNode(n); return n; } //----------------------------------------------- // IListmethods -- override //----------------------------------------------- public override int Count { get { return this.count; } } public override QilNode this[int index] { get { if (index >= 0 && index < this.count) return this.members[index]; throw new IndexOutOfRangeException(); } set { if (index >= 0 && index < this.count) this.members[index] = value; else throw new IndexOutOfRangeException(); // Invalidate XmlType this.xmlType = null; } } public override void Insert(int index, QilNode node) { if (index < 0 || index > this.count) throw new IndexOutOfRangeException(); if (this.count == this.members.Length) { QilNode[] membersNew = new QilNode[this.count * 2]; Array.Copy(this.members, membersNew, this.count); this.members = membersNew; } if (index < this.count) Array.Copy(this.members, index, this.members, index + 1, this.count - index); this.count++; this.members[index] = node; // Invalidate XmlType this.xmlType = null; } public override void RemoveAt(int index) { if (index < 0 || index >= this.count) throw new IndexOutOfRangeException(); this.count--; if (index < this.count) Array.Copy(this.members, index + 1, this.members, index, this.count - index); this.members[this.count] = null; // Invalidate XmlType this.xmlType = null; } } } // 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
- ToolStripContentPanel.cs
- UnescapedXmlDiagnosticData.cs
- RepeatEnumerable.cs
- ClientUIRequest.cs
- XmlILConstructAnalyzer.cs
- KnownIds.cs
- XhtmlTextWriter.cs
- FrameworkElementAutomationPeer.cs
- ButtonChrome.cs
- CodeTypeOfExpression.cs
- UpdatePanelTriggerCollection.cs
- SctClaimSerializer.cs
- HttpContext.cs
- BidirectionalDictionary.cs
- TextLineBreak.cs
- SocketAddress.cs
- ContentType.cs
- WindowsFormsHostAutomationPeer.cs
- TimerElapsedEvenArgs.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ProcessInfo.cs
- BinaryFormatterWriter.cs
- Transaction.cs
- ApplicationException.cs
- DecimalFormatter.cs
- XmlLinkedNode.cs
- ClaimTypes.cs
- AuthenticationSection.cs
- Certificate.cs
- Mapping.cs
- XmlUtf8RawTextWriter.cs
- VScrollProperties.cs
- RuntimeHelpers.cs
- SubpageParagraph.cs
- FlowLayoutPanel.cs
- BrowsableAttribute.cs
- ObjectPropertyMapping.cs
- UnorderedHashRepartitionStream.cs
- CodeSnippetCompileUnit.cs
- ImageButton.cs
- WebPartMovingEventArgs.cs
- CommandSet.cs
- DebugController.cs
- QilInvokeLateBound.cs
- X509SecurityToken.cs
- ListDataBindEventArgs.cs
- TypeDescriptionProviderAttribute.cs
- DataGrid.cs
- InputGestureCollection.cs
- ThemeDictionaryExtension.cs
- ProtocolImporter.cs
- X509RawDataKeyIdentifierClause.cs
- DocumentsTrace.cs
- IndexOutOfRangeException.cs
- SQLInt64.cs
- OracleBinary.cs
- CompModHelpers.cs
- __ConsoleStream.cs
- EndpointDispatcherTable.cs
- MouseWheelEventArgs.cs
- WindowsTab.cs
- XPathNodeHelper.cs
- TextMarkerSource.cs
- DataExpression.cs
- SamlConditions.cs
- TreeNodeBindingCollection.cs
- ImageField.cs
- HttpModuleCollection.cs
- RemotingException.cs
- cookieexception.cs
- SubMenuStyleCollection.cs
- ComplexObject.cs
- connectionpool.cs
- RuleInfoComparer.cs
- ObjectQueryProvider.cs
- ProtocolsConfigurationHandler.cs
- SettingsSavedEventArgs.cs
- GorillaCodec.cs
- SiteMapDataSourceView.cs
- WebPartPersonalization.cs
- ComboBox.cs
- OperatingSystemVersionCheck.cs
- DataSourceCacheDurationConverter.cs
- EntityDataReader.cs
- XmlWriter.cs
- FileInfo.cs
- AttributeProviderAttribute.cs
- PeerContact.cs
- UInt16Converter.cs
- Math.cs
- COM2Properties.cs
- XmlSchemaSimpleContent.cs
- Label.cs
- SmiEventStream.cs
- InheritanceContextHelper.cs
- NavigationPropertyEmitter.cs
- HeaderUtility.cs
- DataGridViewCellLinkedList.cs
- TargetPerspective.cs
- SemanticBasicElement.cs