Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- BooleanToVisibilityConverter.cs
- PeerNameResolver.cs
- DocumentXmlWriter.cs
- CoTaskMemUnicodeSafeHandle.cs
- SafeNativeMemoryHandle.cs
- XmlAttribute.cs
- LinearKeyFrames.cs
- SourceChangedEventArgs.cs
- FontCacheLogic.cs
- OdbcReferenceCollection.cs
- XmlBinaryWriter.cs
- ObjectComplexPropertyMapping.cs
- ZoneLinkButton.cs
- ProviderException.cs
- XmlNodeChangedEventArgs.cs
- RootBrowserWindowAutomationPeer.cs
- ComponentEvent.cs
- PingReply.cs
- ReverseInheritProperty.cs
- KeyConverter.cs
- CheckPair.cs
- MetadataItem.cs
- HyperLinkDataBindingHandler.cs
- ProxyGenerator.cs
- WebPartConnectionCollection.cs
- ListViewEditEventArgs.cs
- SqlTransaction.cs
- JournalEntryListConverter.cs
- ThreadPoolTaskScheduler.cs
- CommandBindingCollection.cs
- XslNumber.cs
- XamlDesignerSerializationManager.cs
- SqlDataSourceView.cs
- DynamicExpression.cs
- ContentElementCollection.cs
- NTAccount.cs
- AssemblyCollection.cs
- FormView.cs
- BitmapDownload.cs
- NavigationFailedEventArgs.cs
- TextViewSelectionProcessor.cs
- ConsoleTraceListener.cs
- KnownAssembliesSet.cs
- ConfigurationSectionHelper.cs
- CngAlgorithm.cs
- SingleObjectCollection.cs
- LineGeometry.cs
- MarshalByRefObject.cs
- DateTimeFormatInfo.cs
- errorpatternmatcher.cs
- ConfigPathUtility.cs
- DataControlFieldCollection.cs
- SemanticAnalyzer.cs
- OperationInvokerTrace.cs
- XmlWriterSettings.cs
- XamlStyleSerializer.cs
- ScriptingProfileServiceSection.cs
- Vector3DKeyFrameCollection.cs
- ObjectStateManagerMetadata.cs
- PriorityQueue.cs
- RadioButton.cs
- PropertyItem.cs
- MessageQueuePermissionEntry.cs
- InvalidOleVariantTypeException.cs
- SerTrace.cs
- TagPrefixCollection.cs
- Positioning.cs
- BindingListCollectionView.cs
- CurrentChangedEventManager.cs
- ExpressionUtilities.cs
- TextServicesPropertyRanges.cs
- MemberBinding.cs
- OneOfConst.cs
- SetStoryboardSpeedRatio.cs
- ConsumerConnectionPointCollection.cs
- CompiledIdentityConstraint.cs
- ResizingMessageFilter.cs
- ReaderContextStackData.cs
- IndexerNameAttribute.cs
- EntityContainerRelationshipSet.cs
- HttpHandlerActionCollection.cs
- InvalidBodyAccessException.cs
- PatternMatcher.cs
- ItemCheckedEvent.cs
- WebWorkflowRole.cs
- HttpModuleCollection.cs
- ResourceAttributes.cs
- TabRenderer.cs
- TaskFormBase.cs
- WindowsTreeView.cs
- LeafCellTreeNode.cs
- StorageModelBuildProvider.cs
- PtsHost.cs
- MeasurementDCInfo.cs
- FormsAuthenticationConfiguration.cs
- ApplicationException.cs
- SettingsSavedEventArgs.cs
- TdsParserStateObject.cs
- ConfigurationValue.cs
- SqlBuffer.cs