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 / 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
- XmlSchemaException.cs
- QueryConverter.cs
- InputManager.cs
- CalendarDay.cs
- DictionaryCustomTypeDescriptor.cs
- ListView.cs
- Odbc32.cs
- CodeLinePragma.cs
- MemoryPressure.cs
- ResourceProviderFactory.cs
- SharedConnectionListener.cs
- Substitution.cs
- CompModSwitches.cs
- PlatformNotSupportedException.cs
- StringSorter.cs
- X509ClientCertificateCredentialsElement.cs
- VisualTarget.cs
- IdnElement.cs
- DockAndAnchorLayout.cs
- TextAnchor.cs
- UniqueEventHelper.cs
- ListViewInsertEventArgs.cs
- ProfileInfo.cs
- DataGridTemplateColumn.cs
- DocumentApplicationJournalEntry.cs
- DebugController.cs
- Application.cs
- SapiAttributeParser.cs
- XmlILStorageConverter.cs
- Walker.cs
- TypeGeneratedEventArgs.cs
- TextDocumentView.cs
- DefaultIfEmptyQueryOperator.cs
- Addressing.cs
- KeyedHashAlgorithm.cs
- AssemblyInfo.cs
- Classification.cs
- CancellationState.cs
- ImageListImageEditor.cs
- ExpressionBindings.cs
- Panel.cs
- DispatchWrapper.cs
- ToolboxBitmapAttribute.cs
- Page.cs
- GraphicsState.cs
- WebEventTraceProvider.cs
- BoolExpressionVisitors.cs
- VisualStateManager.cs
- Tool.cs
- HttpPostServerProtocol.cs
- StringValueSerializer.cs
- IdentityNotMappedException.cs
- AlternateView.cs
- ContentElementAutomationPeer.cs
- EDesignUtil.cs
- FormsAuthentication.cs
- PenContexts.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- SafeNativeMethodsMilCoreApi.cs
- SqlUdtInfo.cs
- AutomationAttributeInfo.cs
- OdbcCommand.cs
- DiagnosticsConfigurationHandler.cs
- RuntimeResourceSet.cs
- DataGridColumnDropSeparator.cs
- TimeEnumHelper.cs
- ComplexBindingPropertiesAttribute.cs
- AccessedThroughPropertyAttribute.cs
- ColumnCollectionEditor.cs
- PngBitmapEncoder.cs
- ValidationError.cs
- CodeGotoStatement.cs
- AccessKeyManager.cs
- BridgeDataRecord.cs
- OperatingSystem.cs
- Int16AnimationBase.cs
- DefaultSerializationProviderAttribute.cs
- CodeTypeOfExpression.cs
- XPathNodeList.cs
- PauseStoryboard.cs
- RowsCopiedEventArgs.cs
- Ref.cs
- COM2ColorConverter.cs
- SelectionRangeConverter.cs
- ByteAnimationUsingKeyFrames.cs
- ExpressionPrinter.cs
- PropertySourceInfo.cs
- ShellProvider.cs
- SelectionProcessor.cs
- StringDictionary.cs
- PrimitiveXmlSerializers.cs
- MenuBase.cs
- PointAnimationUsingKeyFrames.cs
- StateWorkerRequest.cs
- AuthenticationService.cs
- ComPlusServiceHost.cs
- Regex.cs
- LogAppendAsyncResult.cs
- SafeNativeMethodsCLR.cs
- pingexception.cs