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
- QueryStringParameter.cs
- UniqueIdentifierService.cs
- GPRECTF.cs
- DataControlFieldHeaderCell.cs
- TypeUtil.cs
- CodeMemberEvent.cs
- ScrollContentPresenter.cs
- NetNamedPipeSecurity.cs
- BufferedStream2.cs
- DataViewManager.cs
- LocalizationCodeDomSerializer.cs
- RepeaterCommandEventArgs.cs
- ObjectSet.cs
- CloseCryptoHandleRequest.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ObjectTypeMapping.cs
- DrawingDrawingContext.cs
- CharUnicodeInfo.cs
- RightsManagementEncryptionTransform.cs
- EdmToObjectNamespaceMap.cs
- AutomationAttributeInfo.cs
- AvTraceDetails.cs
- CacheDependency.cs
- NavigationHelper.cs
- SchemaTableOptionalColumn.cs
- ApplicationManager.cs
- WindowHideOrCloseTracker.cs
- Calendar.cs
- CompatibleComparer.cs
- EditorBrowsableAttribute.cs
- VolatileEnlistmentMultiplexing.cs
- ColumnResizeUndoUnit.cs
- IdentitySection.cs
- SQLInt16.cs
- LambdaCompiler.Unary.cs
- Scene3D.cs
- ItemChangedEventArgs.cs
- VarRemapper.cs
- VideoDrawing.cs
- TreeNode.cs
- UpdatePanelTriggerCollection.cs
- BitmapPalettes.cs
- MessageEnumerator.cs
- NotConverter.cs
- QueryCreatedEventArgs.cs
- XsdBuildProvider.cs
- AttributeEmitter.cs
- ResourceReader.cs
- WindowsSolidBrush.cs
- StringFormat.cs
- DesigntimeLicenseContextSerializer.cs
- SystemIcmpV6Statistics.cs
- SByteStorage.cs
- MimeReflector.cs
- StrokeRenderer.cs
- sqlmetadatafactory.cs
- DeadCharTextComposition.cs
- FontStretchConverter.cs
- TraceRecord.cs
- PerformanceCounterPermissionAttribute.cs
- XmlQualifiedNameTest.cs
- NativeMethods.cs
- _SingleItemRequestCache.cs
- ManagementObject.cs
- SqlCaseSimplifier.cs
- FtpWebRequest.cs
- XmlConverter.cs
- CompilerGeneratedAttribute.cs
- XamlStream.cs
- ExpressionsCollectionEditor.cs
- BitmapSizeOptions.cs
- RC2CryptoServiceProvider.cs
- EncodingInfo.cs
- HttpCookieCollection.cs
- RowCache.cs
- Pair.cs
- LocalValueEnumerator.cs
- PaintValueEventArgs.cs
- categoryentry.cs
- UrlRoutingHandler.cs
- DocumentSchemaValidator.cs
- HiddenFieldPageStatePersister.cs
- IPCCacheManager.cs
- TextOptionsInternal.cs
- Relationship.cs
- RichTextBox.cs
- XpsFilter.cs
- SystemParameters.cs
- HostingPreferredMapPath.cs
- CellParagraph.cs
- ConfigDefinitionUpdates.cs
- FormsAuthenticationConfiguration.cs
- ModuleElement.cs
- SoapConverter.cs
- DataServiceHostFactory.cs
- SqlMultiplexer.cs
- RIPEMD160Managed.cs
- BrowserCapabilitiesCodeGenerator.cs
- SocketException.cs
- ChooseAction.cs