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
- mil_sdk_version.cs
- TransportElement.cs
- FixedDSBuilder.cs
- WindowsFormsLinkLabel.cs
- ProfilePropertySettings.cs
- XmlMtomReader.cs
- HostingEnvironmentSection.cs
- ScriptIgnoreAttribute.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- mactripleDES.cs
- ToolStripItemCollection.cs
- StateInitializationDesigner.cs
- ChangeNode.cs
- FontFamily.cs
- XmlSchemaNotation.cs
- TraceListeners.cs
- Panel.cs
- DBCSCodePageEncoding.cs
- IDQuery.cs
- FontWeights.cs
- SpellerError.cs
- ByteAnimationBase.cs
- WFItemsToSpacerVisibility.cs
- UserControlCodeDomTreeGenerator.cs
- RoleManagerModule.cs
- CodeTypeReferenceCollection.cs
- ChildTable.cs
- StylusDownEventArgs.cs
- QueryCacheKey.cs
- WebPartEditorOkVerb.cs
- ItemChangedEventArgs.cs
- ScaleTransform.cs
- BoundsDrawingContextWalker.cs
- DescendentsWalkerBase.cs
- Privilege.cs
- StatusBarPanel.cs
- JpegBitmapEncoder.cs
- RowUpdatingEventArgs.cs
- PageStatePersister.cs
- ConfigXmlSignificantWhitespace.cs
- RepeaterDataBoundAdapter.cs
- TextTreeDeleteContentUndoUnit.cs
- DataTableClearEvent.cs
- GroupDescription.cs
- WebPartConnectionsCloseVerb.cs
- QuaternionRotation3D.cs
- StreamUpgradeInitiator.cs
- CategoryAttribute.cs
- MSG.cs
- TTSEngineProxy.cs
- StaticExtensionConverter.cs
- CheckPair.cs
- PriorityBinding.cs
- updateconfighost.cs
- InvalidOperationException.cs
- MultipartContentParser.cs
- TreeNodeCollection.cs
- TokenBasedSetEnumerator.cs
- DataControlField.cs
- CryptoApi.cs
- SignatureToken.cs
- XmlTextAttribute.cs
- LinqDataSourceView.cs
- TimeSpanMinutesConverter.cs
- activationcontext.cs
- SerialPinChanges.cs
- FormatterConverter.cs
- MouseEvent.cs
- DirectionalLight.cs
- TrackingRecord.cs
- TableAdapterManagerMethodGenerator.cs
- IdnMapping.cs
- ASCIIEncoding.cs
- PrePostDescendentsWalker.cs
- BasicExpandProvider.cs
- HtmlTableCell.cs
- ServiceOperationHelpers.cs
- HostProtectionPermission.cs
- ProcessHostConfigUtils.cs
- TableCell.cs
- WindowsFormsHostPropertyMap.cs
- NativeObjectSecurity.cs
- Menu.cs
- Property.cs
- TextBoxLine.cs
- SecurityState.cs
- AtomicFile.cs
- DbProviderFactory.cs
- HttpModuleActionCollection.cs
- CollectionsUtil.cs
- WebPartHeaderCloseVerb.cs
- InputLangChangeEvent.cs
- LockCookie.cs
- DataSourceGroupCollection.cs
- UnsafeNativeMethods.cs
- EntityTypeEmitter.cs
- PerfCounters.cs
- ItemCollection.cs
- PathData.cs
- WSDualHttpSecurity.cs