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
- ConcurrentQueue.cs
- DbConnectionPoolIdentity.cs
- WindowsListViewItemStartMenu.cs
- XmlSerializerFactory.cs
- ValidationHelper.cs
- UrlUtility.cs
- DataBindingValueUIHandler.cs
- BounceEase.cs
- EventLogHandle.cs
- DesignerSerializationVisibilityAttribute.cs
- PolicyManager.cs
- Quaternion.cs
- HttpServerVarsCollection.cs
- ResourceProperty.cs
- FilterEventArgs.cs
- WhitespaceRuleReader.cs
- WebSysDescriptionAttribute.cs
- BulletChrome.cs
- Operator.cs
- SQLStringStorage.cs
- CacheMemory.cs
- EventLogger.cs
- UnsafeNativeMethods.cs
- SystemParameters.cs
- FormatException.cs
- MetaColumn.cs
- ExpressionBindings.cs
- ConversionValidationRule.cs
- LicFileLicenseProvider.cs
- Win32KeyboardDevice.cs
- FileIOPermission.cs
- DesignerVerb.cs
- MaskedTextProvider.cs
- WindowsTokenRoleProvider.cs
- MoveSizeWinEventHandler.cs
- FileDialogPermission.cs
- UniformGrid.cs
- ConfigsHelper.cs
- ErrorTolerantObjectWriter.cs
- MemberRestriction.cs
- ClipboardData.cs
- ProcessModelSection.cs
- TraceShell.cs
- ValidationRuleCollection.cs
- DataGridViewCell.cs
- GeneralTransform3DTo2D.cs
- DesignerImageAdapter.cs
- WriteableBitmap.cs
- FileUtil.cs
- XPSSignatureDefinition.cs
- WinCategoryAttribute.cs
- AdapterUtil.cs
- ISO2022Encoding.cs
- RecordManager.cs
- DoubleSumAggregationOperator.cs
- FormsAuthenticationUser.cs
- MsmqIntegrationReceiveParameters.cs
- ItemsPanelTemplate.cs
- CheckableControlBaseAdapter.cs
- WorkingDirectoryEditor.cs
- RoutedPropertyChangedEventArgs.cs
- FunctionGenerator.cs
- PrinterResolution.cs
- InvalidWMPVersionException.cs
- NamedPipeHostedTransportConfiguration.cs
- ModelVisual3D.cs
- PropertyCollection.cs
- ProxyWebPartConnectionCollection.cs
- PerspectiveCamera.cs
- FontTypeConverter.cs
- Match.cs
- ServiceAuthorizationManager.cs
- XPathDescendantIterator.cs
- DBCSCodePageEncoding.cs
- MouseGestureValueSerializer.cs
- SettingsPropertyValue.cs
- ApplicationBuildProvider.cs
- TcpTransportElement.cs
- ThreadPoolTaskScheduler.cs
- ClientRuntimeConfig.cs
- WsatServiceCertificate.cs
- ModelUIElement3D.cs
- StartUpEventArgs.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- DictionarySectionHandler.cs
- XmlAnyAttributeAttribute.cs
- SqlDataSourceSelectingEventArgs.cs
- SemanticAnalyzer.cs
- XmlUtf8RawTextWriter.cs
- GlobalItem.cs
- ManagedIStream.cs
- HttpGetClientProtocol.cs
- IndexerNameAttribute.cs
- XmlProcessingInstruction.cs
- StrokeNodeOperations.cs
- DefaultPropertyAttribute.cs
- WebPartConnectionsConnectVerb.cs
- LogRecordSequence.cs
- DiscreteKeyFrames.cs
- SizeFConverter.cs