Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- GAC.cs
- SQLSingleStorage.cs
- base64Transforms.cs
- BaseTemplateCodeDomTreeGenerator.cs
- HttpsChannelFactory.cs
- EndOfStreamException.cs
- MsmqOutputMessage.cs
- SamlAction.cs
- Stream.cs
- DataTableTypeConverter.cs
- PeerContact.cs
- BindingList.cs
- MailMessageEventArgs.cs
- DecimalConstantAttribute.cs
- UnsupportedPolicyOptionsException.cs
- BaseDataList.cs
- TreeNodeClickEventArgs.cs
- VisualStyleTypesAndProperties.cs
- Attributes.cs
- View.cs
- Int16Converter.cs
- Switch.cs
- HtmlTableRowCollection.cs
- LoginStatusDesigner.cs
- X509ServiceCertificateAuthentication.cs
- x509utils.cs
- ExpressionConverter.cs
- GenericsInstances.cs
- SchemaTypeEmitter.cs
- XsdCachingReader.cs
- OleDbEnumerator.cs
- ProcessInfo.cs
- WebServiceEnumData.cs
- PropertyKey.cs
- TypeUnloadedException.cs
- InfoCardTrace.cs
- SourceItem.cs
- ProcessModuleCollection.cs
- DynamicRenderer.cs
- Graphics.cs
- BigInt.cs
- Listbox.cs
- Command.cs
- NonBatchDirectoryCompiler.cs
- RectIndependentAnimationStorage.cs
- TableLayoutPanel.cs
- ResourceReader.cs
- GridViewColumnCollectionChangedEventArgs.cs
- Accessible.cs
- CompletionBookmark.cs
- WebContext.cs
- SimpleExpression.cs
- InvalidWMPVersionException.cs
- CharEnumerator.cs
- UnionCodeGroup.cs
- ControlValuePropertyAttribute.cs
- PrintDocument.cs
- StateRuntime.cs
- RegexRunner.cs
- OutputCacheProfileCollection.cs
- ShutDownListener.cs
- ReaderContextStackData.cs
- OleDbTransaction.cs
- OdbcParameterCollection.cs
- FontFamilyConverter.cs
- CodeTypeReferenceExpression.cs
- CoTaskMemUnicodeSafeHandle.cs
- DataServiceProviderWrapper.cs
- RoutedEventArgs.cs
- PanelDesigner.cs
- Column.cs
- TextSchema.cs
- WebPartVerb.cs
- _ConnectOverlappedAsyncResult.cs
- ColumnMapVisitor.cs
- BinaryObjectInfo.cs
- UseLicense.cs
- ParameterBuilder.cs
- ObfuscateAssemblyAttribute.cs
- MetabaseReader.cs
- GroupByExpressionRewriter.cs
- MenuItem.cs
- AssemblyGen.cs
- COM2IDispatchConverter.cs
- NewItemsContextMenuStrip.cs
- COM2PictureConverter.cs
- DateTimeUtil.cs
- ConnectionInterfaceCollection.cs
- RegexMatch.cs
- InputLanguageProfileNotifySink.cs
- ListControlConvertEventArgs.cs
- WSAddressing10ProblemHeaderQNameFault.cs
- WebMessageBodyStyleHelper.cs
- MsmqIntegrationChannelListener.cs
- CultureInfo.cs
- FontFamilyIdentifier.cs
- SortedDictionary.cs
- UndoEngine.cs
- Select.cs
- ZeroOpNode.cs