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
- IntermediatePolicyValidator.cs
- WinOEToolBoxItem.cs
- SafeNativeMethodsMilCoreApi.cs
- BinaryUtilClasses.cs
- WebPartCatalogAddVerb.cs
- DbTypeMap.cs
- PointCollectionValueSerializer.cs
- AutomationEventArgs.cs
- BuildResultCache.cs
- OpenTypeLayout.cs
- ISAPIWorkerRequest.cs
- WindowsGraphicsWrapper.cs
- BitHelper.cs
- WebPartZone.cs
- ItemCollection.cs
- PropertyMapper.cs
- ApplicationSecurityManager.cs
- RegistrySecurity.cs
- OleDbEnumerator.cs
- AdministrationHelpers.cs
- TerminatorSinks.cs
- SchemaAttDef.cs
- GridLengthConverter.cs
- PresentationSource.cs
- PeerCollaboration.cs
- StreamInfo.cs
- IndicFontClient.cs
- Point3DAnimation.cs
- HtmlMeta.cs
- TypeDescriptionProvider.cs
- StateWorkerRequest.cs
- altserialization.cs
- ExpressionPrinter.cs
- AssemblyNameProxy.cs
- RadioButtonList.cs
- Missing.cs
- IISMapPath.cs
- GridViewActionList.cs
- ClientBuildManagerCallback.cs
- Rect3D.cs
- TransformerTypeCollection.cs
- PageRanges.cs
- TypeSource.cs
- MetadataStore.cs
- DockPatternIdentifiers.cs
- Ticks.cs
- SchemaElementDecl.cs
- PropertyPath.cs
- ControlSerializer.cs
- AnnotationDocumentPaginator.cs
- BasicAsyncResult.cs
- ErrorTolerantObjectWriter.cs
- TemplateNodeContextMenu.cs
- SoapReflectionImporter.cs
- RawStylusSystemGestureInputReport.cs
- DesignerVerb.cs
- Storyboard.cs
- MessageQueueAccessControlEntry.cs
- ButtonBase.cs
- XmlIncludeAttribute.cs
- AppearanceEditorPart.cs
- DataObjectMethodAttribute.cs
- SpecialTypeDataContract.cs
- TableRowGroupCollection.cs
- NamedPipeConnectionPoolSettingsElement.cs
- Canonicalizers.cs
- COAUTHINFO.cs
- SimpleColumnProvider.cs
- WCFBuildProvider.cs
- RootDesignerSerializerAttribute.cs
- TypeConverterValueSerializer.cs
- XmlElementAttribute.cs
- Sql8ExpressionRewriter.cs
- ServiceHttpModule.cs
- HashHelpers.cs
- DataTableReader.cs
- QilChoice.cs
- ZipIOLocalFileBlock.cs
- BamlLocalizableResourceKey.cs
- FirstQueryOperator.cs
- StoreContentChangedEventArgs.cs
- UniqueConstraint.cs
- XXXOnTypeBuilderInstantiation.cs
- ECDiffieHellmanCng.cs
- ClientApiGenerator.cs
- DesignerDataView.cs
- SourceFilter.cs
- WhitespaceRuleLookup.cs
- Constants.cs
- ToolStripContentPanel.cs
- Activator.cs
- Utils.cs
- RenderDataDrawingContext.cs
- DataKeyArray.cs
- FontNameConverter.cs
- CompensationDesigner.cs
- Transform.cs
- RewritingSimplifier.cs
- path.cs
- StyleModeStack.cs