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
- XmlUtf8RawTextWriter.cs
- PartitionResolver.cs
- ImageField.cs
- RectangleF.cs
- ImageClickEventArgs.cs
- HwndPanningFeedback.cs
- DropSource.cs
- TerminateDesigner.cs
- MenuCommand.cs
- AccessorTable.cs
- Restrictions.cs
- VisualStyleRenderer.cs
- ASCIIEncoding.cs
- X509ChainPolicy.cs
- ControlIdConverter.cs
- TdsParserHelperClasses.cs
- WindowPattern.cs
- FindResponse.cs
- SemaphoreSecurity.cs
- SqlVisitor.cs
- XPathMessageFilterTable.cs
- RequestResizeEvent.cs
- COM2TypeInfoProcessor.cs
- recordstatefactory.cs
- DiagnosticTraceSource.cs
- FilterEventArgs.cs
- TempEnvironment.cs
- SerializationEventsCache.cs
- OletxResourceManager.cs
- SqlTrackingService.cs
- parserscommon.cs
- ConstrainedDataObject.cs
- TransactedReceiveScope.cs
- EncodingDataItem.cs
- _IPv6Address.cs
- UriExt.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- DataList.cs
- ExecutedRoutedEventArgs.cs
- DirtyTextRange.cs
- Hashtable.cs
- TreeNodeCollection.cs
- DataFormats.cs
- DependencyPropertyDescriptor.cs
- TripleDESCryptoServiceProvider.cs
- TypeToken.cs
- RemoteWebConfigurationHostServer.cs
- FixedHyperLink.cs
- unitconverter.cs
- QuaternionAnimationUsingKeyFrames.cs
- CellParaClient.cs
- DbCommandTree.cs
- NonVisualControlAttribute.cs
- FlowStep.cs
- DecimalAnimationBase.cs
- SamlNameIdentifierClaimResource.cs
- FrameworkTemplate.cs
- LayoutEvent.cs
- VectorAnimationUsingKeyFrames.cs
- QilInvokeLateBound.cs
- DecoratedNameAttribute.cs
- EnumType.cs
- AutomationEventArgs.cs
- StorageBasedPackageProperties.cs
- DataControlButton.cs
- ProfileInfo.cs
- FileVersionInfo.cs
- DecodeHelper.cs
- ADMembershipUser.cs
- TypeToArgumentTypeConverter.cs
- BamlResourceSerializer.cs
- ExtenderProvidedPropertyAttribute.cs
- ElementHostAutomationPeer.cs
- Nodes.cs
- OracleBinary.cs
- Stack.cs
- DbParameterCollection.cs
- XmlDataLoader.cs
- MetadataPropertyAttribute.cs
- DragEventArgs.cs
- ObjectSecurity.cs
- CodeAttributeDeclarationCollection.cs
- OperationContext.cs
- MetafileHeaderWmf.cs
- CookieParameter.cs
- GCHandleCookieTable.cs
- LineInfo.cs
- GenericXmlSecurityToken.cs
- PageSettings.cs
- FtpCachePolicyElement.cs
- RelatedPropertyManager.cs
- OutKeywords.cs
- XmlIlVisitor.cs
- BookmarkNameHelper.cs
- CqlIdentifiers.cs
- SqlTransaction.cs
- FormatterServices.cs
- SystemResourceKey.cs
- WeakEventManager.cs
- WindowsListViewSubItem.cs