Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / IfAction.cs / 1 / IfAction.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 class IfAction : ContainerAction { internal enum ConditionType { ConditionIf, ConditionWhen, ConditionOtherwise } private ConditionType type; private int testKey = Compiler.InvalidQueryKey; internal IfAction(ConditionType type) { this.type = type; } internal override void Compile(Compiler compiler) { CompileAttributes(compiler); if (this.type != ConditionType.ConditionOtherwise) { CheckRequiredAttribute(compiler, this.testKey != Compiler.InvalidQueryKey, Keywords.s_Test); } if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(name, compiler.Atoms.Test)) { if (this.type == ConditionType.ConditionOtherwise) { return false; } this.testKey = compiler.AddBooleanQuery(value); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); switch (frame.State) { case Initialized: if (this.type == ConditionType.ConditionIf || this.type == ConditionType.ConditionWhen) { Debug.Assert(this.testKey != Compiler.InvalidQueryKey); bool value = processor.EvaluateBoolean(frame, this.testKey); if (value == false) { frame.Finished(); break; } } processor.PushActionFrame(frame); frame.State = ProcessingChildren; break; // Allow children to run case ProcessingChildren: if (this.type == ConditionType.ConditionWhen ||this.type == ConditionType.ConditionOtherwise) { Debug.Assert(frame.Container != null); frame.Exit(); } frame.Finished(); break; default: Debug.Fail("Invalid IfAction execution state"); break; } } } } // 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 class IfAction : ContainerAction { internal enum ConditionType { ConditionIf, ConditionWhen, ConditionOtherwise } private ConditionType type; private int testKey = Compiler.InvalidQueryKey; internal IfAction(ConditionType type) { this.type = type; } internal override void Compile(Compiler compiler) { CompileAttributes(compiler); if (this.type != ConditionType.ConditionOtherwise) { CheckRequiredAttribute(compiler, this.testKey != Compiler.InvalidQueryKey, Keywords.s_Test); } if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(name, compiler.Atoms.Test)) { if (this.type == ConditionType.ConditionOtherwise) { return false; } this.testKey = compiler.AddBooleanQuery(value); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); switch (frame.State) { case Initialized: if (this.type == ConditionType.ConditionIf || this.type == ConditionType.ConditionWhen) { Debug.Assert(this.testKey != Compiler.InvalidQueryKey); bool value = processor.EvaluateBoolean(frame, this.testKey); if (value == false) { frame.Finished(); break; } } processor.PushActionFrame(frame); frame.State = ProcessingChildren; break; // Allow children to run case ProcessingChildren: if (this.type == ConditionType.ConditionWhen ||this.type == ConditionType.ConditionOtherwise) { Debug.Assert(frame.Container != null); frame.Exit(); } frame.Finished(); break; default: Debug.Fail("Invalid IfAction execution state"); break; } } } } // 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
- MouseDevice.cs
- RadioButton.cs
- GeneralTransform3DTo2D.cs
- PolyQuadraticBezierSegment.cs
- WebPartDisplayModeCollection.cs
- BitmapFrameEncode.cs
- MergePropertyDescriptor.cs
- PolicyFactory.cs
- StructuralObject.cs
- ReflectionUtil.cs
- ChangeDirector.cs
- InvokeWebServiceDesigner.cs
- ProgressBarRenderer.cs
- FixedFlowMap.cs
- RuleElement.cs
- FilterException.cs
- RoamingStoreFile.cs
- WorkflowTraceTransfer.cs
- ListenerAdapter.cs
- SafeArrayRankMismatchException.cs
- DefaultTypeArgumentAttribute.cs
- BuildProviderCollection.cs
- RowsCopiedEventArgs.cs
- RenderData.cs
- DataRowComparer.cs
- StreamWithDictionary.cs
- QilCloneVisitor.cs
- ActivityBuilder.cs
- TreeView.cs
- AssociationSet.cs
- RolePrincipal.cs
- ColumnHeaderCollectionEditor.cs
- ISFTagAndGuidCache.cs
- InkPresenter.cs
- DispatchWrapper.cs
- DataGridViewComponentPropertyGridSite.cs
- PeerTransportSecurityElement.cs
- BooleanFunctions.cs
- XPathAncestorIterator.cs
- PeerContact.cs
- SafeReversePInvokeHandle.cs
- WebPartConnectionsConnectVerb.cs
- HtmlElement.cs
- HashStream.cs
- DataGridViewColumnEventArgs.cs
- CheckBoxField.cs
- ToolStripMenuItem.cs
- BuildProviderInstallComponent.cs
- Component.cs
- ContainerUIElement3D.cs
- SqlClientFactory.cs
- NotImplementedException.cs
- HasCopySemanticsAttribute.cs
- AnnouncementInnerClient11.cs
- String.cs
- SortedList.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- LineBreakRecord.cs
- X509ChainPolicy.cs
- _SSPIWrapper.cs
- ThicknessAnimationUsingKeyFrames.cs
- AdornerHitTestResult.cs
- LockCookie.cs
- BitmapData.cs
- LoginView.cs
- UnsafeNativeMethods.cs
- DisplayNameAttribute.cs
- Stream.cs
- ReferencedCollectionType.cs
- HTMLTagNameToTypeMapper.cs
- ObfuscationAttribute.cs
- Soap.cs
- DictationGrammar.cs
- EntityDataSourceState.cs
- PageBreakRecord.cs
- DependencyPropertyDescriptor.cs
- WindowsStreamSecurityElement.cs
- ComboBoxItem.cs
- LocalsItemDescription.cs
- TextEditorCopyPaste.cs
- HTTP_SERVICE_CONFIG_URLACL_KEY.cs
- DesignerSerializerAttribute.cs
- TextBox.cs
- XmlEntityReference.cs
- SystemIPAddressInformation.cs
- Missing.cs
- RequestSecurityTokenResponseCollection.cs
- XmlRawWriter.cs
- ResourceAttributes.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- RefreshEventArgs.cs
- SqlDataSourceCache.cs
- StreamGeometry.cs
- wmiutil.cs
- TypeLoader.cs
- XmlWriterTraceListener.cs
- ColorConvertedBitmap.cs
- WmpBitmapDecoder.cs
- ValidationService.cs
- EntityDataSourceContainerNameItem.cs