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
- SignatureDescription.cs
- StrongNameUtility.cs
- WorkItem.cs
- HttpDictionary.cs
- WindowCollection.cs
- EncoderNLS.cs
- InfoCardX509Validator.cs
- GridItem.cs
- CorrelationHandle.cs
- Color.cs
- QuotedPrintableStream.cs
- CustomAttribute.cs
- OpenFileDialog.cs
- Script.cs
- AspNetHostingPermission.cs
- Interlocked.cs
- Update.cs
- NonVisualControlAttribute.cs
- ProgressPage.cs
- SiteMapNodeItem.cs
- DataFormats.cs
- AnnotationResourceCollection.cs
- CustomError.cs
- DbProviderFactory.cs
- CodeCompileUnit.cs
- ImageSourceConverter.cs
- IListConverters.cs
- TextTreeInsertUndoUnit.cs
- Utilities.cs
- NavigatorInput.cs
- DataBindingHandlerAttribute.cs
- Axis.cs
- TableLayoutPanelCodeDomSerializer.cs
- Attributes.cs
- IPAddress.cs
- StringBuilder.cs
- ToolStripItemBehavior.cs
- CurrentTimeZone.cs
- TrackingDataItemValue.cs
- XmlSchemaType.cs
- RequestCachePolicyConverter.cs
- DataAdapter.cs
- dataprotectionpermission.cs
- WebPartZoneBase.cs
- Compensate.cs
- CommonObjectSecurity.cs
- RegexStringValidatorAttribute.cs
- RangeValuePatternIdentifiers.cs
- TextTreePropertyUndoUnit.cs
- CodeGotoStatement.cs
- Stacktrace.cs
- CreateParams.cs
- KeySplineConverter.cs
- WinEventTracker.cs
- Model3DGroup.cs
- ServiceNotStartedException.cs
- Registry.cs
- HostedAspNetEnvironment.cs
- altserialization.cs
- WsdlContractConversionContext.cs
- ConnectionPointGlyph.cs
- RelationshipEnd.cs
- SrgsGrammarCompiler.cs
- MsmqAppDomainProtocolHandler.cs
- WorkflowServiceHostFactory.cs
- ExtensibleClassFactory.cs
- RuleSettingsCollection.cs
- BrowserTree.cs
- MethodBody.cs
- PageBuildProvider.cs
- WebPartMovingEventArgs.cs
- WorkflowQueue.cs
- RemotingSurrogateSelector.cs
- CellLabel.cs
- ByteBufferPool.cs
- ToolBarPanel.cs
- WebRequestModuleElementCollection.cs
- DataGridViewColumnConverter.cs
- SkewTransform.cs
- LayoutEditorPart.cs
- SqlBulkCopy.cs
- TimeSpanValidator.cs
- PersonalizationStateInfo.cs
- AutoResetEvent.cs
- ConfigErrorGlyph.cs
- XmlDataImplementation.cs
- TraceSection.cs
- OracleDataAdapter.cs
- TripleDES.cs
- ProfileGroupSettingsCollection.cs
- wgx_sdk_version.cs
- SqlDataSourceCache.cs
- WriteableOnDemandPackagePart.cs
- DiagnosticStrings.cs
- sapiproxy.cs
- Command.cs
- SqlCommandBuilder.cs
- OperationContractGenerationContext.cs
- MetadataItemEmitter.cs
- TouchFrameEventArgs.cs