Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- IndexedGlyphRun.cs
- PropertyPanel.cs
- BufferedWebEventProvider.cs
- InstanceCompleteException.cs
- Duration.cs
- DynamicPropertyHolder.cs
- DateTime.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- SecurityMessageProperty.cs
- RadioButtonBaseAdapter.cs
- EnumBuilder.cs
- PeerNode.cs
- MobileControlsSectionHelper.cs
- LongValidator.cs
- AspNetCompatibilityRequirementsMode.cs
- ToolStripGripRenderEventArgs.cs
- XmlWriterSettings.cs
- SingleObjectCollection.cs
- TraceListener.cs
- DllNotFoundException.cs
- ResourceWriter.cs
- MessageSecurityVersion.cs
- Point3DKeyFrameCollection.cs
- XDeferredAxisSource.cs
- _OSSOCK.cs
- MethodExpr.cs
- Ipv6Element.cs
- CodeCompiler.cs
- MemoryPressure.cs
- DynamicObject.cs
- DataService.cs
- ParameterBinding.cs
- SymbolEqualComparer.cs
- SafeCryptoHandles.cs
- DictionaryEditChange.cs
- TextRange.cs
- SchemaHelper.cs
- ImageMapEventArgs.cs
- XmlDocument.cs
- Encoding.cs
- DbSetClause.cs
- WindowsFormsHostAutomationPeer.cs
- Domain.cs
- MetadataItemCollectionFactory.cs
- UnaryExpressionHelper.cs
- UIElement3D.cs
- UnsafeNativeMethodsTablet.cs
- JournalNavigationScope.cs
- UdpTransportSettings.cs
- QilLiteral.cs
- ReflectionHelper.cs
- SimpleBitVector32.cs
- CustomLineCap.cs
- UserUseLicenseDictionaryLoader.cs
- SqlSupersetValidator.cs
- GridViewSortEventArgs.cs
- XmlBaseWriter.cs
- TreeBuilder.cs
- ExtenderProvidedPropertyAttribute.cs
- AppSettingsSection.cs
- FontDriver.cs
- WindowsListViewScroll.cs
- XmlSchemaAppInfo.cs
- GuidConverter.cs
- CompareValidator.cs
- Msec.cs
- HtmlContainerControl.cs
- InputBindingCollection.cs
- AnnotationComponentChooser.cs
- HTMLTagNameToTypeMapper.cs
- Marshal.cs
- EnumType.cs
- HandoffBehavior.cs
- WSIdentityFaultException.cs
- RayMeshGeometry3DHitTestResult.cs
- CapiSymmetricAlgorithm.cs
- WebPartCancelEventArgs.cs
- DesignerSerializationVisibilityAttribute.cs
- WinEventTracker.cs
- ModuleConfigurationInfo.cs
- HtmlTable.cs
- CodePageEncoding.cs
- ChildrenQuery.cs
- TransformerInfoCollection.cs
- Rectangle.cs
- GuidelineCollection.cs
- XmlNavigatorStack.cs
- InvokeBase.cs
- DiscoveryReferences.cs
- DataTableClearEvent.cs
- ObjectMemberMapping.cs
- GcHandle.cs
- CharacterBuffer.cs
- FixedSOMFixedBlock.cs
- DataControlButton.cs
- TickBar.cs
- RestHandlerFactory.cs
- QueryableDataSourceEditData.cs
- Point3DConverter.cs
- ClientEventManager.cs