Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilList.cs / 1 / 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); // Sequences do not preserve DocOrderDistinct if (xt.IsDod) xt = XmlQueryTypeFactory.PrimeProduct(XmlQueryTypeFactory.NodeNotRtfS, xt.Cardinality); } 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. //------------------------------------------------------------------------------ // // 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); // Sequences do not preserve DocOrderDistinct if (xt.IsDod) xt = XmlQueryTypeFactory.PrimeProduct(XmlQueryTypeFactory.NodeNotRtfS, xt.Cardinality); } 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
- unsafenativemethodstextservices.cs
- CheckBoxStandardAdapter.cs
- EventLevel.cs
- ToolStripButton.cs
- FileLevelControlBuilderAttribute.cs
- RuntimeCompatibilityAttribute.cs
- DataGridViewRowHeaderCell.cs
- SerializationSectionGroup.cs
- DependencyObjectCodeDomSerializer.cs
- CachedPathData.cs
- TextEncodedRawTextWriter.cs
- Membership.cs
- HttpCookieCollection.cs
- CellTreeNode.cs
- AutomationFocusChangedEventArgs.cs
- XmlWrappingReader.cs
- DbProviderFactory.cs
- ExpressionNormalizer.cs
- SoapSchemaExporter.cs
- PointValueSerializer.cs
- EntityDataSourceDesigner.cs
- DataGridTextBoxColumn.cs
- BamlVersionHeader.cs
- CodeCatchClause.cs
- SerTrace.cs
- UnaryNode.cs
- SmiXetterAccessMap.cs
- PropertyConverter.cs
- AnchoredBlock.cs
- Context.cs
- BindingEditor.xaml.cs
- TypeBuilder.cs
- DeleteCardRequest.cs
- ListViewPagedDataSource.cs
- X509CertificateStore.cs
- UrlAuthFailedErrorFormatter.cs
- XsltContext.cs
- MissingSatelliteAssemblyException.cs
- ConstraintManager.cs
- SecurityTokenRequirement.cs
- NullRuntimeConfig.cs
- CustomCredentialPolicy.cs
- XmlMtomReader.cs
- TailCallAnalyzer.cs
- SecurityPermission.cs
- WebPartsSection.cs
- TextEditorSpelling.cs
- LocatorPartList.cs
- SimplePropertyEntry.cs
- HttpApplication.cs
- PackUriHelper.cs
- Span.cs
- MsmqOutputMessage.cs
- ProcessModelInfo.cs
- PolyLineSegment.cs
- mda.cs
- CommandBinding.cs
- DataMemberAttribute.cs
- SymbolUsageManager.cs
- TextEditorCopyPaste.cs
- XPathParser.cs
- HwndKeyboardInputProvider.cs
- CatchBlock.cs
- SystemMulticastIPAddressInformation.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- PreDigestedSignedInfo.cs
- UserControlCodeDomTreeGenerator.cs
- WebPartCatalogAddVerb.cs
- MethodExpr.cs
- TabPanel.cs
- VisualBasicSettingsHandler.cs
- JapaneseCalendar.cs
- SudsParser.cs
- CodeBlockBuilder.cs
- LockedBorderGlyph.cs
- ActivationServices.cs
- MarginsConverter.cs
- Partitioner.cs
- UIAgentAsyncEndRequest.cs
- ExpressionBuilderCollection.cs
- ListViewInsertedEventArgs.cs
- Menu.cs
- FontStyleConverter.cs
- CultureTable.cs
- BindingContext.cs
- ProviderSettings.cs
- RtfToXamlReader.cs
- TracingConnectionInitiator.cs
- DesignBindingPicker.cs
- SecurityRuntime.cs
- Font.cs
- ICspAsymmetricAlgorithm.cs
- OracleBoolean.cs
- OdbcCommandBuilder.cs
- ItemChangedEventArgs.cs
- RelatedEnd.cs
- DbParameterCollection.cs
- _OverlappedAsyncResult.cs
- SettingsContext.cs
- MatchNoneMessageFilter.cs