Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyAttributesAction.cs / 1 / CopyAttributesAction.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
internal sealed class CopyAttributesAction : Action {
private const int BeginEvent = 2;
private const int TextEvent = 3;
private const int EndEvent = 4;
private const int Advance = 5;
private static CopyAttributesAction s_Action = new CopyAttributesAction();
internal static CopyAttributesAction GetAction() {
Debug.Assert(s_Action != null);
return s_Action;
}
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
while (processor.CanContinue) {
switch (frame.State) {
case Initialized:
if (!frame.Node.HasAttributes || frame.Node.MoveToFirstAttribute() == false) {
frame.Finished();
break;
}
frame.State = BeginEvent;
goto case BeginEvent;
case BeginEvent:
Debug.Assert(frame.State == BeginEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendBeginEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = TextEvent;
continue;
case TextEvent:
Debug.Assert(frame.State == TextEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendTextEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = EndEvent;
continue;
case EndEvent:
Debug.Assert(frame.State == EndEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendEndEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = Advance;
continue;
case Advance:
Debug.Assert(frame.State == Advance);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (frame.Node.MoveToNextAttribute()) {
frame.State = BeginEvent;
continue;
}
else {
frame.Node.MoveToParent();
frame.Finished();
break;
}
}
break;
}// while (processor.CanContinue)
}
private static bool SendBeginEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.BeginEvent(XPathNodeType.Attribute, node.Prefix, node.LocalName, node.NamespaceURI, false);
}
private static bool SendTextEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.TextEvent(node.Value);
}
private static bool SendEndEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.EndEvent(XPathNodeType.Attribute);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Diagnostics;
using System.Xml;
using System.Xml.XPath;
internal sealed class CopyAttributesAction : Action {
private const int BeginEvent = 2;
private const int TextEvent = 3;
private const int EndEvent = 4;
private const int Advance = 5;
private static CopyAttributesAction s_Action = new CopyAttributesAction();
internal static CopyAttributesAction GetAction() {
Debug.Assert(s_Action != null);
return s_Action;
}
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
while (processor.CanContinue) {
switch (frame.State) {
case Initialized:
if (!frame.Node.HasAttributes || frame.Node.MoveToFirstAttribute() == false) {
frame.Finished();
break;
}
frame.State = BeginEvent;
goto case BeginEvent;
case BeginEvent:
Debug.Assert(frame.State == BeginEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendBeginEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = TextEvent;
continue;
case TextEvent:
Debug.Assert(frame.State == TextEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendTextEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = EndEvent;
continue;
case EndEvent:
Debug.Assert(frame.State == EndEvent);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (SendEndEvent(processor, frame.Node) == false) {
// This one wasn't output
break;
}
frame.State = Advance;
continue;
case Advance:
Debug.Assert(frame.State == Advance);
Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute);
if (frame.Node.MoveToNextAttribute()) {
frame.State = BeginEvent;
continue;
}
else {
frame.Node.MoveToParent();
frame.Finished();
break;
}
}
break;
}// while (processor.CanContinue)
}
private static bool SendBeginEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.BeginEvent(XPathNodeType.Attribute, node.Prefix, node.LocalName, node.NamespaceURI, false);
}
private static bool SendTextEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.TextEvent(node.Value);
}
private static bool SendEndEvent(Processor processor, XPathNavigator node) {
Debug.Assert(node.NodeType == XPathNodeType.Attribute);
return processor.EndEvent(XPathNodeType.Attribute);
}
}
}
// 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
- GenericsInstances.cs
- XmlHierarchicalEnumerable.cs
- GeneralTransform2DTo3DTo2D.cs
- TransactedBatchContext.cs
- CornerRadiusConverter.cs
- StateItem.cs
- AutomationPattern.cs
- CheckoutException.cs
- SizeAnimationBase.cs
- LogSwitch.cs
- DateTimeSerializationSection.cs
- ButtonRenderer.cs
- CacheMemory.cs
- XmlSchemaAttributeGroup.cs
- LayoutTable.cs
- BigInt.cs
- SqlStatistics.cs
- CallbackHandler.cs
- DummyDataSource.cs
- ElementNotEnabledException.cs
- DefaultTraceListener.cs
- DoubleKeyFrameCollection.cs
- SystemResourceHost.cs
- RelatedCurrencyManager.cs
- DataGridViewCellStyle.cs
- LassoSelectionBehavior.cs
- DSASignatureDeformatter.cs
- PropertyBuilder.cs
- BamlTreeMap.cs
- SettingsPropertyValueCollection.cs
- ProxyFragment.cs
- RoleGroup.cs
- EdmFunction.cs
- ContainerSelectorBehavior.cs
- RequiredAttributeAttribute.cs
- Util.cs
- DataControlPagerLinkButton.cs
- WorkflowRuntimeEndpoint.cs
- TableLayoutSettings.cs
- TriggerBase.cs
- BoundingRectTracker.cs
- URLMembershipCondition.cs
- ToolBar.cs
- OracleLob.cs
- XamlSerializer.cs
- SkewTransform.cs
- XmlSchemaComplexContentRestriction.cs
- TrustSection.cs
- WindowsGraphicsWrapper.cs
- CultureMapper.cs
- ConfigurationLocation.cs
- util.cs
- DifferencingCollection.cs
- ReverseComparer.cs
- TreeNodeBinding.cs
- WebEvents.cs
- _ListenerResponseStream.cs
- EditorZone.cs
- SettingsPropertyWrongTypeException.cs
- SplitterCancelEvent.cs
- XmlQueryRuntime.cs
- InstanceValue.cs
- BitmapFrame.cs
- SID.cs
- Invariant.cs
- CodeTypeConstructor.cs
- LinkedResourceCollection.cs
- TemplateContentLoader.cs
- OracleDateTime.cs
- IndexedString.cs
- TextPatternIdentifiers.cs
- ArraySet.cs
- CustomPopupPlacement.cs
- BuilderInfo.cs
- WebFaultClientMessageInspector.cs
- InvalidDataContractException.cs
- HeaderLabel.cs
- RunClient.cs
- TransformPatternIdentifiers.cs
- ZipIOExtraFieldElement.cs
- XamlPoint3DCollectionSerializer.cs
- ArrayConverter.cs
- XmlSchemaAny.cs
- FormsIdentity.cs
- ListControl.cs
- DataColumn.cs
- _HelperAsyncResults.cs
- COM2PropertyDescriptor.cs
- WindowsTokenRoleProvider.cs
- EmptyQuery.cs
- UpdateDelegates.Generated.cs
- DbConnectionHelper.cs
- RecordBuilder.cs
- ScaleTransform3D.cs
- TryCatchDesigner.xaml.cs
- Lazy.cs
- DataTableExtensions.cs
- ListMarkerLine.cs
- MenuAutoFormat.cs
- SplitContainer.cs