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
- ExchangeUtilities.cs
- ShaderEffect.cs
- TcpClientSocketManager.cs
- OdbcConnectionOpen.cs
- XmlSchemaProviderAttribute.cs
- UrlMappingCollection.cs
- MatrixIndependentAnimationStorage.cs
- MessageEnumerator.cs
- DataMemberAttribute.cs
- SecureUICommand.cs
- ThemeableAttribute.cs
- CatalogZoneBase.cs
- DataSetSchema.cs
- VirtualDirectoryMapping.cs
- ViewManager.cs
- XmlSchemaComplexContentRestriction.cs
- FutureFactory.cs
- SHA1CryptoServiceProvider.cs
- XsdCachingReader.cs
- MaterialCollection.cs
- ISFClipboardData.cs
- MonthChangedEventArgs.cs
- IsolatedStorageSecurityState.cs
- DependencyPropertyAttribute.cs
- TCEAdapterGenerator.cs
- InputGestureCollection.cs
- ListBase.cs
- CapabilitiesSection.cs
- StreamHelper.cs
- ColumnMapVisitor.cs
- SatelliteContractVersionAttribute.cs
- StringUtil.cs
- QilStrConcat.cs
- _UriSyntax.cs
- HwndAppCommandInputProvider.cs
- LabelTarget.cs
- XsdValidatingReader.cs
- TouchFrameEventArgs.cs
- VirtualizingStackPanel.cs
- BooleanProjectedSlot.cs
- InfoCardKeyedHashAlgorithm.cs
- WhitespaceRuleReader.cs
- EffectiveValueEntry.cs
- CurrencyWrapper.cs
- SharedStatics.cs
- EnumMember.cs
- OdbcUtils.cs
- SByteStorage.cs
- WorkflowApplicationTerminatedException.cs
- LinearQuaternionKeyFrame.cs
- DesignBinding.cs
- LayoutEditorPart.cs
- SiteMapNodeCollection.cs
- MatrixTransform.cs
- MimePart.cs
- _SecureChannel.cs
- TreeViewDesigner.cs
- TextBoxDesigner.cs
- HttpSessionStateWrapper.cs
- InteropTrackingRecord.cs
- Enlistment.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- ActivityPreviewDesigner.cs
- DependencyPropertyAttribute.cs
- StateFinalizationActivity.cs
- ProcessThreadCollection.cs
- XNodeNavigator.cs
- Soap11ServerProtocol.cs
- ElapsedEventArgs.cs
- DetailsViewUpdateEventArgs.cs
- DataGridViewRowPostPaintEventArgs.cs
- ConfigXmlText.cs
- ServiceModelEnhancedConfigurationElementCollection.cs
- WindowCollection.cs
- newinstructionaction.cs
- DateTimeFormatInfo.cs
- BindingBase.cs
- MethodBuilder.cs
- FactoryRecord.cs
- ParagraphVisual.cs
- WeakReference.cs
- XdrBuilder.cs
- SqlTrackingQuery.cs
- TdsParserStateObject.cs
- EdmFunction.cs
- LabelDesigner.cs
- BindingContext.cs
- SingleConverter.cs
- IndexingContentUnit.cs
- XamlWriter.cs
- MatrixKeyFrameCollection.cs
- ListViewItemSelectionChangedEvent.cs
- InternalCache.cs
- CodeIdentifier.cs
- ProcessHostFactoryHelper.cs
- IOThreadTimer.cs
- XAMLParseException.cs
- LayoutTable.cs
- MasterPage.cs
- GridViewUpdateEventArgs.cs