Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- AnyReturnReader.cs
- MulticastIPAddressInformationCollection.cs
- BindToObject.cs
- WorkItem.cs
- BaseInfoTable.cs
- MenuItemCollection.cs
- HttpResponseInternalWrapper.cs
- NetNamedPipeSecurityElement.cs
- Command.cs
- exports.cs
- TableAdapterManagerNameHandler.cs
- CodeEntryPointMethod.cs
- TheQuery.cs
- WeakReferenceList.cs
- AnnotationHighlightLayer.cs
- CommandDevice.cs
- LoginName.cs
- PatternMatcher.cs
- NativeObjectSecurity.cs
- Substitution.cs
- BamlResourceSerializer.cs
- SafeEventLogWriteHandle.cs
- PenCursorManager.cs
- BaseValidator.cs
- InitializingNewItemEventArgs.cs
- AuthenticationModulesSection.cs
- ChangeNode.cs
- ExceptionCollection.cs
- GB18030Encoding.cs
- CheckBox.cs
- DefaultBindingPropertyAttribute.cs
- MeasurementDCInfo.cs
- PtsContext.cs
- DesignerTransaction.cs
- elementinformation.cs
- WindowsFormsLinkLabel.cs
- CopyNamespacesAction.cs
- ClientFormsIdentity.cs
- PanelDesigner.cs
- DescendentsWalkerBase.cs
- AttachmentCollection.cs
- DbConnectionInternal.cs
- XhtmlTextWriter.cs
- InputScopeManager.cs
- ProfileGroupSettings.cs
- ContractAdapter.cs
- DataReaderContainer.cs
- NamedElement.cs
- ComPersistableTypeElement.cs
- CacheOutputQuery.cs
- X509SecurityTokenProvider.cs
- SafeBitVector32.cs
- StoryFragments.cs
- FormsAuthenticationUser.cs
- ClaimSet.cs
- AnnotationHelper.cs
- StructuralType.cs
- NotifyCollectionChangedEventArgs.cs
- Base64Encoder.cs
- ExtensibleClassFactory.cs
- AncestorChangedEventArgs.cs
- ForceCopyBuildProvider.cs
- RegularExpressionValidator.cs
- VScrollProperties.cs
- EntryWrittenEventArgs.cs
- ErrorWebPart.cs
- Pair.cs
- FindResponse.cs
- ThreadStaticAttribute.cs
- BamlLocalizabilityResolver.cs
- FtpRequestCacheValidator.cs
- CompilerHelpers.cs
- RootBrowserWindowAutomationPeer.cs
- ExtendedPropertyInfo.cs
- DescendantQuery.cs
- SourceFilter.cs
- XmlSecureResolver.cs
- DataObject.cs
- ProtocolProfile.cs
- CodeAccessPermission.cs
- SecurityKeyUsage.cs
- SqlDataSourceTableQuery.cs
- PasswordDeriveBytes.cs
- DeviceContext.cs
- ExceptionUtil.cs
- StyleSelector.cs
- ChildTable.cs
- Storyboard.cs
- CodeCommentStatement.cs
- SizeAnimationClockResource.cs
- TextEffect.cs
- RoleManagerSection.cs
- CodeActivity.cs
- PrintEvent.cs
- CachedBitmap.cs
- CopyOnWriteList.cs
- SqlTypesSchemaImporter.cs
- CssTextWriter.cs
- ObjectRef.cs
- ConfigurationElementProperty.cs