Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / Xslt / QilStrConcatenator.cs / 1305376 / QilStrConcatenator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Diagnostics; using System.Xml; using System.Text; 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 StringBuilder builder; private QilList concat; private bool inUse = false; public QilStrConcatenator(XPathQilFactory f) { this.f = f; builder = new StringBuilder(); } public void Reset() { Debug.Assert(! inUse); inUse = true; builder.Length = 0; 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
- XmlFormatWriterGenerator.cs
- WebPartMovingEventArgs.cs
- Int32KeyFrameCollection.cs
- BuildProviderCollection.cs
- BaseComponentEditor.cs
- Misc.cs
- DispatcherSynchronizationContext.cs
- TextElementEnumerator.cs
- XmlNamedNodeMap.cs
- CodeValidator.cs
- ColorAnimation.cs
- LocalizationParserHooks.cs
- ProfileSection.cs
- WebBrowserUriTypeConverter.cs
- DomainLiteralReader.cs
- LayoutTableCell.cs
- FileDialogCustomPlacesCollection.cs
- FreezableCollection.cs
- SafeHandles.cs
- XmlMapping.cs
- SkewTransform.cs
- XmlEncodedRawTextWriter.cs
- QueryAsyncResult.cs
- DATA_BLOB.cs
- MenuAdapter.cs
- AdapterUtil.cs
- ProviderCollection.cs
- SynchronizationLockException.cs
- TaskFileService.cs
- TextStore.cs
- UserControl.cs
- InputLanguageCollection.cs
- DBDataPermission.cs
- CompiledIdentityConstraint.cs
- FieldNameLookup.cs
- PeerResolverElement.cs
- Cursor.cs
- CompressionTransform.cs
- DispatchWrapper.cs
- ReachSerializerAsync.cs
- FileLoadException.cs
- XslException.cs
- AsyncSerializedWorker.cs
- SafeCryptContextHandle.cs
- TokenFactoryBase.cs
- OrthographicCamera.cs
- ProviderConnectionPointCollection.cs
- XmlCDATASection.cs
- __TransparentProxy.cs
- SignatureTargetIdManager.cs
- InputProcessorProfilesLoader.cs
- TextElement.cs
- ItemChangedEventArgs.cs
- TripleDES.cs
- SBCSCodePageEncoding.cs
- TableCellCollection.cs
- ImageAutomationPeer.cs
- CaseInsensitiveOrdinalStringComparer.cs
- StrokeFIndices.cs
- httpserverutility.cs
- BindingMemberInfo.cs
- XPathDocumentNavigator.cs
- BasicDesignerLoader.cs
- columnmapfactory.cs
- ToolBar.cs
- XmlSchemaCollection.cs
- SessionStateUtil.cs
- XmlText.cs
- ConstrainedDataObject.cs
- Propagator.JoinPropagator.cs
- UIElement.cs
- _BaseOverlappedAsyncResult.cs
- MimeWriter.cs
- OraclePermissionAttribute.cs
- Exceptions.cs
- XamlToRtfParser.cs
- XmlParserContext.cs
- ConditionalAttribute.cs
- EncoderParameters.cs
- PrintPreviewDialog.cs
- BrowserInteropHelper.cs
- InternalUserCancelledException.cs
- ConnectionStringSettings.cs
- DataGridPagerStyle.cs
- TableSectionStyle.cs
- AccessDataSourceWizardForm.cs
- RegexWorker.cs
- DomNameTable.cs
- DataBoundLiteralControl.cs
- ReflectionHelper.cs
- BatchParser.cs
- RefType.cs
- ObjectResult.cs
- DataObjectMethodAttribute.cs
- CodeVariableDeclarationStatement.cs
- ConnectionManagementSection.cs
- InternalEnumValidator.cs
- HtmlInputFile.cs
- TdsEnums.cs
- ImageClickEventArgs.cs