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
- DesignerEditorPartChrome.cs
- RefType.cs
- RequestSecurityTokenResponseCollection.cs
- MsmqTransportElement.cs
- ListViewUpdatedEventArgs.cs
- RelationshipManager.cs
- SessionStateItemCollection.cs
- ThreadInterruptedException.cs
- ManagementQuery.cs
- HostProtectionPermission.cs
- XmlNotation.cs
- EdmRelationshipRoleAttribute.cs
- Part.cs
- TableRowsCollectionEditor.cs
- OperatingSystem.cs
- RegisteredHiddenField.cs
- OutgoingWebResponseContext.cs
- TextOptionsInternal.cs
- SecurityToken.cs
- QualificationDataItem.cs
- HyperLinkStyle.cs
- DataGridViewUtilities.cs
- RootBrowserWindow.cs
- ContextMarshalException.cs
- WebColorConverter.cs
- ExtenderProvidedPropertyAttribute.cs
- UserControl.cs
- DataAccessor.cs
- Base64Decoder.cs
- SHA256Managed.cs
- FullTextLine.cs
- DataRowExtensions.cs
- TemplateColumn.cs
- RightsManagementEncryptedStream.cs
- RequestCacheEntry.cs
- WindowsListViewItemStartMenu.cs
- DeflateStreamAsyncResult.cs
- ResourcesGenerator.cs
- OpenFileDialog.cs
- Constants.cs
- SkipQueryOptionExpression.cs
- Array.cs
- ExpressionBuilder.cs
- InvalidCastException.cs
- ProvidersHelper.cs
- DataSvcMapFile.cs
- ReadWriteSpinLock.cs
- ExpandedWrapper.cs
- WebDescriptionAttribute.cs
- wgx_exports.cs
- ValidationError.cs
- DataGrid.cs
- LinkLabel.cs
- WebDescriptionAttribute.cs
- ConnectionInterfaceCollection.cs
- FormViewPagerRow.cs
- ResXResourceWriter.cs
- ViewCellSlot.cs
- NamespaceCollection.cs
- EncoderParameters.cs
- BitmapEffectDrawingContextWalker.cs
- DataStreams.cs
- XmlUtil.cs
- OrderByBuilder.cs
- TraceUtils.cs
- PropertyTab.cs
- CompositionTarget.cs
- IPAddress.cs
- GeneratedCodeAttribute.cs
- XmlSchemaComplexContent.cs
- SQLCharsStorage.cs
- TextBounds.cs
- XmlSchemaSet.cs
- MarkupCompilePass1.cs
- ScrollData.cs
- WorkflowInstance.cs
- ResetableIterator.cs
- ColorDialog.cs
- ScrollChangedEventArgs.cs
- Resources.Designer.cs
- dataSvcMapFileLoader.cs
- TransformConverter.cs
- SHA384Managed.cs
- _BasicClient.cs
- LocalClientSecuritySettings.cs
- PermissionRequestEvidence.cs
- WebPartVerb.cs
- PersonalizationEntry.cs
- PlaceHolder.cs
- XmlSignatureProperties.cs
- ContentDesigner.cs
- PeerTransportSecuritySettings.cs
- Ref.cs
- COM2ComponentEditor.cs
- WindowsToolbarItemAsMenuItem.cs
- ExpressionHelper.cs
- ToolBar.cs
- DBCSCodePageEncoding.cs
- SqlFlattener.cs
- FontFamilyConverter.cs