Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / XmlUtils / System / Xml / Xsl / Xslt / QilStrConcatenator.cs / 1 / QilStrConcatenator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Diagnostics; using System.Xml; using System.Xml.Schema; using System.Xml.Xsl.XPath; using System.Xml.Xsl.Qil; namespace System.Xml.Xsl.Xslt { internal class QilStrConcatenator { private XPathQilFactory f; private BufferBuilder builder; private QilList concat; private bool inUse = false; public QilStrConcatenator(XPathQilFactory f) { this.f = f; builder = new BufferBuilder(); } public void Reset() { Debug.Assert(! inUse); inUse = true; builder.Clear(); concat = null; } private void FlushBuilder() { if (concat == null) { concat = f.BaseFactory.Sequence(); } if (builder.Length != 0) { concat.Add(f.String(builder.ToString())); builder.Length = 0; } } public void Append(string value) { Debug.Assert(inUse, "Reset() wasn't called"); builder.Append(value); } public void Append(char value) { Debug.Assert(inUse, "Reset() wasn't called"); builder.Append(value); } public void Append(QilNode value) { Debug.Assert(inUse, "Reset() wasn't called"); if (value != null) { Debug.Assert(value.XmlType.TypeCode == XmlTypeCode.String); if (value.NodeType == QilNodeType.LiteralString) { builder.Append((string)(QilLiteral)value); } else { FlushBuilder(); concat.Add(value); } } } public QilNode ToQil() { Debug.Assert(inUse); // If we want allow multiple calls to ToQil() this logic should be changed inUse = false; if (concat == null) { return f.String(builder.ToString()); } else { FlushBuilder(); return f.StrConcat(concat); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Diagnostics; using System.Xml; using System.Xml.Schema; using System.Xml.Xsl.XPath; using System.Xml.Xsl.Qil; namespace System.Xml.Xsl.Xslt { internal class QilStrConcatenator { private XPathQilFactory f; private BufferBuilder builder; private QilList concat; private bool inUse = false; public QilStrConcatenator(XPathQilFactory f) { this.f = f; builder = new BufferBuilder(); } public void Reset() { Debug.Assert(! inUse); inUse = true; builder.Clear(); concat = null; } private void FlushBuilder() { if (concat == null) { concat = f.BaseFactory.Sequence(); } if (builder.Length != 0) { concat.Add(f.String(builder.ToString())); builder.Length = 0; } } public void Append(string value) { Debug.Assert(inUse, "Reset() wasn't called"); builder.Append(value); } public void Append(char value) { Debug.Assert(inUse, "Reset() wasn't called"); builder.Append(value); } public void Append(QilNode value) { Debug.Assert(inUse, "Reset() wasn't called"); if (value != null) { Debug.Assert(value.XmlType.TypeCode == XmlTypeCode.String); if (value.NodeType == QilNodeType.LiteralString) { builder.Append((string)(QilLiteral)value); } else { FlushBuilder(); concat.Add(value); } } } public QilNode ToQil() { Debug.Assert(inUse); // If we want allow multiple calls to ToQil() this logic should be changed inUse = false; if (concat == null) { return f.String(builder.ToString()); } else { FlushBuilder(); return f.StrConcat(concat); } } } } // 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
- IndexOutOfRangeException.cs
- RootBrowserWindow.cs
- ResourceAssociationType.cs
- CapabilitiesPattern.cs
- LocalizedNameDescriptionPair.cs
- FaultHandlingFilter.cs
- PropertyEmitterBase.cs
- Rectangle.cs
- ThicknessAnimationBase.cs
- SafeEventLogWriteHandle.cs
- Canvas.cs
- ComplexTypeEmitter.cs
- TcpClientChannel.cs
- LinearGradientBrush.cs
- SqlDataSourceStatusEventArgs.cs
- CodeConstructor.cs
- PolyQuadraticBezierSegment.cs
- XsdDataContractImporter.cs
- TextMetrics.cs
- TextOnlyOutput.cs
- DataGridAddNewRow.cs
- Documentation.cs
- Pair.cs
- BamlWriter.cs
- ForceCopyBuildProvider.cs
- Funcletizer.cs
- FrameworkElementFactoryMarkupObject.cs
- HotCommands.cs
- MouseOverProperty.cs
- QueryReaderSettings.cs
- WebFormsRootDesigner.cs
- BitmapEffectCollection.cs
- invalidudtexception.cs
- TailPinnedEventArgs.cs
- _HeaderInfoTable.cs
- ClientData.cs
- PropertyGeneratedEventArgs.cs
- DataControlFieldCollection.cs
- BaseCAMarshaler.cs
- AutomationPropertyInfo.cs
- PictureBox.cs
- LineUtil.cs
- QilStrConcatenator.cs
- OracleMonthSpan.cs
- ClrProviderManifest.cs
- TableRow.cs
- CodeGeneratorOptions.cs
- MetadataCollection.cs
- ResourceReferenceExpressionConverter.cs
- ObjectItemAttributeAssemblyLoader.cs
- Events.cs
- CryptoKeySecurity.cs
- LocalizableResourceBuilder.cs
- MatrixAnimationUsingPath.cs
- XmlKeywords.cs
- _SSPISessionCache.cs
- DispatcherSynchronizationContext.cs
- GradientStopCollection.cs
- OleDbEnumerator.cs
- AsyncOperationManager.cs
- xamlnodes.cs
- RoutedEvent.cs
- TimeIntervalCollection.cs
- IdentityHolder.cs
- ActiveXSite.cs
- EventMappingSettingsCollection.cs
- NetworkStream.cs
- ParameterToken.cs
- HMACMD5.cs
- DockPanel.cs
- DataGridCheckBoxColumn.cs
- TimeSpanOrInfiniteValidator.cs
- ServiceBusyException.cs
- UITypeEditor.cs
- PermissionToken.cs
- SystemIPInterfaceStatistics.cs
- AffineTransform3D.cs
- ValidationEventArgs.cs
- GC.cs
- SubtreeProcessor.cs
- CombinedHttpChannel.cs
- ContentControl.cs
- TextLineBreak.cs
- CustomErrorsSection.cs
- DivideByZeroException.cs
- AsyncResult.cs
- ControlValuePropertyAttribute.cs
- BaseCAMarshaler.cs
- HttpCachePolicyElement.cs
- ResourcePool.cs
- TraceRecord.cs
- SoapEnumAttribute.cs
- WindowsSlider.cs
- HttpWebRequest.cs
- DrawListViewColumnHeaderEventArgs.cs
- ListViewGroup.cs
- XmlSchemaImporter.cs
- FrameAutomationPeer.cs
- SelectionChangedEventArgs.cs
- StyleHelper.cs