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
- SevenBitStream.cs
- ParameterExpression.cs
- WindowsImpersonationContext.cs
- XslTransform.cs
- DataGridTableStyleMappingNameEditor.cs
- DesignTimeTemplateParser.cs
- HtmlInputControl.cs
- WsdlBuildProvider.cs
- EditorBrowsableAttribute.cs
- ServiceEndpointElement.cs
- MenuCommandService.cs
- SmtpException.cs
- ActivityTrace.cs
- ObjectDataSourceFilteringEventArgs.cs
- FixedSOMPageElement.cs
- SiteMapHierarchicalDataSourceView.cs
- ProxyElement.cs
- XPathBinder.cs
- _UriSyntax.cs
- ButtonFlatAdapter.cs
- TextProperties.cs
- ExpandableObjectConverter.cs
- ModuleBuilder.cs
- CalendarKeyboardHelper.cs
- XmlSchemaCollection.cs
- MatrixCamera.cs
- SymbolDocumentGenerator.cs
- FontInfo.cs
- _LocalDataStoreMgr.cs
- DesignerValidationSummaryAdapter.cs
- CssClassPropertyAttribute.cs
- EditorZone.cs
- _AutoWebProxyScriptEngine.cs
- OptimalBreakSession.cs
- RequestTimeoutManager.cs
- SessionStateSection.cs
- TextOutput.cs
- XmlNode.cs
- EntitySqlException.cs
- SchemaInfo.cs
- ChangeBlockUndoRecord.cs
- ExpressionEditorAttribute.cs
- SystemIPInterfaceProperties.cs
- EmulateRecognizeCompletedEventArgs.cs
- CustomAttributeBuilder.cs
- SqlConnectionPoolProviderInfo.cs
- NativeMethods.cs
- WebBrowserNavigatingEventHandler.cs
- ProviderConnectionPointCollection.cs
- EntityConnection.cs
- SaveFileDialog.cs
- Converter.cs
- DataViewManagerListItemTypeDescriptor.cs
- ItemMap.cs
- precedingquery.cs
- InstanceHandleConflictException.cs
- FontNamesConverter.cs
- PrintingPermissionAttribute.cs
- ToolStripButton.cs
- QilScopedVisitor.cs
- Timer.cs
- ThreadExceptionEvent.cs
- CodeLabeledStatement.cs
- DocumentViewerConstants.cs
- WebContentFormatHelper.cs
- ImageCodecInfo.cs
- LocalizableResourceBuilder.cs
- StateRuntime.cs
- XmlSchemaAttribute.cs
- NamespaceEmitter.cs
- EpmHelper.cs
- AssemblyInfo.cs
- TextCompositionManager.cs
- TextBlock.cs
- SpeakCompletedEventArgs.cs
- SerializerProvider.cs
- RequestCachingSection.cs
- NamedPermissionSet.cs
- MultiDataTrigger.cs
- ServiceRouteHandler.cs
- SqlDataSourceView.cs
- DrawingGroup.cs
- PolyQuadraticBezierSegment.cs
- ServiceDescriptionImporter.cs
- AdRotatorDesigner.cs
- ReflectionPermission.cs
- RelationshipDetailsCollection.cs
- EdmError.cs
- CellNormalizer.cs
- PropertyDescriptorCollection.cs
- ValidatorCollection.cs
- Point.cs
- ScrollProperties.cs
- QueryContinueDragEventArgs.cs
- DBSqlParserTable.cs
- RegionIterator.cs
- EncodingTable.cs
- MouseOverProperty.cs
- _AuthenticationState.cs
- Soap12ProtocolReflector.cs