Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- CodeCompiler.cs
- XmlAnyElementAttributes.cs
- OperationCanceledException.cs
- Size3D.cs
- BrowserInteropHelper.cs
- localization.cs
- ArglessEventHandlerProxy.cs
- DataGridViewCellFormattingEventArgs.cs
- CodeValidator.cs
- HyperLinkStyle.cs
- Interlocked.cs
- SByteStorage.cs
- FormattedText.cs
- ResourceFallbackManager.cs
- TaiwanLunisolarCalendar.cs
- FormatVersion.cs
- StrokeRenderer.cs
- TrackingDataItem.cs
- PathGeometry.cs
- DefaultTraceListener.cs
- DependencyPropertyDescriptor.cs
- SafeNativeMethods.cs
- QueryRewriter.cs
- BoundColumn.cs
- WebPartZoneBaseDesigner.cs
- EasingKeyFrames.cs
- ClientCultureInfo.cs
- PersonalizationProviderHelper.cs
- ListSortDescriptionCollection.cs
- InstanceBehavior.cs
- TranslateTransform3D.cs
- TrackingRecord.cs
- ReceiveCompletedEventArgs.cs
- MenuItemBinding.cs
- SuppressMessageAttribute.cs
- COM2PropertyPageUITypeConverter.cs
- WebPartVerb.cs
- DetailsViewRow.cs
- NativeMethods.cs
- X509Certificate2.cs
- FormatException.cs
- ObjectAnimationBase.cs
- SafeRightsManagementSessionHandle.cs
- InstanceStoreQueryResult.cs
- TypedDataSetSchemaImporterExtension.cs
- TextServicesContext.cs
- ExtensionSimplifierMarkupObject.cs
- Transactions.cs
- _ListenerResponseStream.cs
- WebPartTransformerAttribute.cs
- StackOverflowException.cs
- NativeMethods.cs
- NameValueConfigurationCollection.cs
- ListViewInsertEventArgs.cs
- DocumentAutomationPeer.cs
- QueryConverter.cs
- XmlSerializationGeneratedCode.cs
- PageRequestManager.cs
- RNGCryptoServiceProvider.cs
- BlurBitmapEffect.cs
- AnimationStorage.cs
- Rss20FeedFormatter.cs
- FixedSOMSemanticBox.cs
- ActivityExecutionContextCollection.cs
- CompilerScope.Storage.cs
- RectValueSerializer.cs
- ComboBoxRenderer.cs
- AmbientLight.cs
- Single.cs
- ProcessModule.cs
- Localizer.cs
- ConnectionStringSettings.cs
- QuadraticBezierSegment.cs
- PolicyManager.cs
- SiteMembershipCondition.cs
- MobileListItem.cs
- RSAProtectedConfigurationProvider.cs
- SubqueryRules.cs
- SiteMapDataSourceView.cs
- cryptoapiTransform.cs
- EditCommandColumn.cs
- IDQuery.cs
- PageThemeCodeDomTreeGenerator.cs
- AssemblyEvidenceFactory.cs
- SQLBinary.cs
- ArithmeticException.cs
- PathBox.cs
- HwndMouseInputProvider.cs
- PhonemeEventArgs.cs
- TreeWalker.cs
- FactoryGenerator.cs
- FormsAuthenticationConfiguration.cs
- ModuleBuilderData.cs
- MatchingStyle.cs
- RemoteWebConfigurationHostStream.cs
- Attribute.cs
- XmlReflectionImporter.cs
- _NtlmClient.cs
- OracleCommand.cs
- PropertyValueUIItem.cs