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
- ADRoleFactoryConfiguration.cs
- BeginStoryboard.cs
- OdbcParameterCollection.cs
- SmiEventSink_DeferedProcessing.cs
- CompositeDispatchFormatter.cs
- DataSourceCacheDurationConverter.cs
- PublisherIdentityPermission.cs
- MimeWriter.cs
- StylusPoint.cs
- BitmapEncoder.cs
- WsdlEndpointConversionContext.cs
- ConfigXmlElement.cs
- LostFocusEventManager.cs
- FixedBufferAttribute.cs
- PenCursorManager.cs
- PackageProperties.cs
- DropSourceBehavior.cs
- Menu.cs
- PointAnimation.cs
- ADRoleFactoryConfiguration.cs
- CharAnimationBase.cs
- OdbcCommand.cs
- ResXFileRef.cs
- GlyphsSerializer.cs
- MemberJoinTreeNode.cs
- ErrorProvider.cs
- BinaryObjectWriter.cs
- DataGridHelper.cs
- BitmapMetadataEnumerator.cs
- Thumb.cs
- StateValidator.cs
- FlowDocumentPage.cs
- IncrementalReadDecoders.cs
- DataGrid.cs
- ScrollItemProviderWrapper.cs
- HwndSourceKeyboardInputSite.cs
- BrowserDefinition.cs
- FunctionDetailsReader.cs
- AppDomainEvidenceFactory.cs
- User.cs
- SpellerError.cs
- StorageMappingFragment.cs
- UnitControl.cs
- InputLanguageProfileNotifySink.cs
- rsa.cs
- TabControlCancelEvent.cs
- RotateTransform.cs
- WebCodeGenerator.cs
- SwitchElementsCollection.cs
- LinearGradientBrush.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- AutomationEvent.cs
- LinearKeyFrames.cs
- ResourceContainer.cs
- StaticSiteMapProvider.cs
- WebResourceUtil.cs
- Gdiplus.cs
- EntityCommand.cs
- PlatformCulture.cs
- SecurityManager.cs
- CollectionDataContract.cs
- DbParameterCollectionHelper.cs
- WebEventTraceProvider.cs
- DeclarativeExpressionConditionDeclaration.cs
- ToolBarButton.cs
- MobileErrorInfo.cs
- ListItemCollection.cs
- TreeSet.cs
- _NativeSSPI.cs
- EntityChangedParams.cs
- TextServicesHost.cs
- BoolLiteral.cs
- ActivityStateRecord.cs
- DockProviderWrapper.cs
- ExpandButtonVisibilityConverter.cs
- ConfigXmlCDataSection.cs
- DrawListViewSubItemEventArgs.cs
- MatrixValueSerializer.cs
- _TimerThread.cs
- JumpTask.cs
- SqlDataRecord.cs
- ComplexType.cs
- CompositeControlDesigner.cs
- Point3DValueSerializer.cs
- RubberbandSelector.cs
- DiscoveryDocumentLinksPattern.cs
- HttpCapabilitiesSectionHandler.cs
- DisableDpiAwarenessAttribute.cs
- TableLayoutCellPaintEventArgs.cs
- CompilerResults.cs
- DynamicContractTypeBuilder.cs
- streamingZipPartStream.cs
- ParallelQuery.cs
- StoryFragments.cs
- ServiceDescriptionReflector.cs
- QilStrConcatenator.cs
- EndpointBehaviorElementCollection.cs
- SystemFonts.cs
- SwitchAttribute.cs
- ZeroOpNode.cs