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
- InternalDispatchObject.cs
- WindowsListViewItemStartMenu.cs
- MeasurementDCInfo.cs
- CompilationSection.cs
- SizeAnimationBase.cs
- Fx.cs
- XmlSchemaImport.cs
- Int32Rect.cs
- ClientUtils.cs
- XmlElement.cs
- ExpressionParser.cs
- Console.cs
- KeyFrames.cs
- KnownBoxes.cs
- MenuItemStyle.cs
- BindingCollection.cs
- TextEndOfSegment.cs
- CodeExporter.cs
- ListDictionary.cs
- SafeEventLogWriteHandle.cs
- MD5CryptoServiceProvider.cs
- SqlConnectionPoolProviderInfo.cs
- CodePageUtils.cs
- GPPOINT.cs
- mansign.cs
- WindowsFormsHostPropertyMap.cs
- DataGridAutoFormatDialog.cs
- SimpleTypeResolver.cs
- BreadCrumbTextConverter.cs
- ColorBlend.cs
- ALinqExpressionVisitor.cs
- ObjectIDGenerator.cs
- ComboBoxRenderer.cs
- ComponentEditorForm.cs
- AsyncContentLoadedEventArgs.cs
- SqlResolver.cs
- HttpCookie.cs
- DataControlButton.cs
- AssemblyAttributesGoHere.cs
- DataGridTableCollection.cs
- X509CertificateRecipientServiceCredential.cs
- FrameworkContextData.cs
- Track.cs
- CheckableControlBaseAdapter.cs
- TimeZone.cs
- Propagator.Evaluator.cs
- AutomationPropertyInfo.cs
- ImageSourceConverter.cs
- BuildDependencySet.cs
- PersistStreamTypeWrapper.cs
- ResponseBodyWriter.cs
- QilVisitor.cs
- AtomEntry.cs
- MetadataHelper.cs
- SelfIssuedAuthRSACryptoProvider.cs
- XmlDictionaryWriter.cs
- ParseChildrenAsPropertiesAttribute.cs
- BaseHashHelper.cs
- CompilerCollection.cs
- PrintPreviewDialog.cs
- KeyEvent.cs
- Crypto.cs
- StatusBarItemAutomationPeer.cs
- QueryCoreOp.cs
- Utilities.cs
- ContentElement.cs
- LineInfo.cs
- EvidenceTypeDescriptor.cs
- WorkflowApplicationAbortedEventArgs.cs
- CachedBitmap.cs
- ThreadAttributes.cs
- XPathDescendantIterator.cs
- StaticFileHandler.cs
- CacheChildrenQuery.cs
- SamlSerializer.cs
- XsltLibrary.cs
- DesignerDataStoredProcedure.cs
- GradientBrush.cs
- TypeElement.cs
- StatusStrip.cs
- XamlToRtfParser.cs
- AsymmetricAlgorithm.cs
- Sql8ConformanceChecker.cs
- ServiceModelExtensionElement.cs
- OperatingSystem.cs
- TableColumn.cs
- EditorZone.cs
- DataGridViewRowCancelEventArgs.cs
- SystemIPInterfaceProperties.cs
- EventListenerClientSide.cs
- SortFieldComparer.cs
- SchemaDeclBase.cs
- ObfuscateAssemblyAttribute.cs
- ping.cs
- Stroke.cs
- Glyph.cs
- autovalidator.cs
- UidManager.cs
- UTF8Encoding.cs
- ExtenderControl.cs