Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / IfAction.cs / 1305376 / 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, "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 (Ref.Equal(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
- CheckBox.cs
- RequestUriProcessor.cs
- FilterableAttribute.cs
- TableRowGroupCollection.cs
- Exceptions.cs
- RegistrySecurity.cs
- Model3D.cs
- BezierSegment.cs
- RootBrowserWindow.cs
- PointHitTestParameters.cs
- UInt16Converter.cs
- ProcessInfo.cs
- Tile.cs
- SingleAnimationUsingKeyFrames.cs
- DashStyle.cs
- WebBrowserEvent.cs
- DataRelationCollection.cs
- SourceInterpreter.cs
- StickyNoteHelper.cs
- TabControl.cs
- DesignTableCollection.cs
- FixedTextSelectionProcessor.cs
- NotCondition.cs
- SafeEventLogWriteHandle.cs
- TemplateControl.cs
- ImmutableCollection.cs
- LinearGradientBrush.cs
- DataBinding.cs
- SafeNativeMethodsCLR.cs
- MobileControlsSectionHandler.cs
- TableRowCollection.cs
- TabControlAutomationPeer.cs
- TextEditorCharacters.cs
- WebBrowserContainer.cs
- Decoder.cs
- CellTreeNodeVisitors.cs
- Line.cs
- MailWriter.cs
- DragEvent.cs
- Converter.cs
- IProducerConsumerCollection.cs
- LogicalTreeHelper.cs
- DrawListViewItemEventArgs.cs
- FixedTextContainer.cs
- DataViewManagerListItemTypeDescriptor.cs
- ToolboxDataAttribute.cs
- RequestDescription.cs
- ControlUtil.cs
- BooleanConverter.cs
- CodeConditionStatement.cs
- CompositeControl.cs
- IdSpace.cs
- ProcessHost.cs
- XmlDataSourceNodeDescriptor.cs
- DefaultWorkflowTransactionService.cs
- SqlMethodCallConverter.cs
- StylusButton.cs
- MulticastOption.cs
- StorageScalarPropertyMapping.cs
- SerializationObjectManager.cs
- DisplayMemberTemplateSelector.cs
- CommonDialog.cs
- WindowsListViewGroupSubsetLink.cs
- DropSource.cs
- ComponentEditorForm.cs
- EditorAttribute.cs
- HttpException.cs
- SystemUnicastIPAddressInformation.cs
- cookie.cs
- Tile.cs
- PixelShader.cs
- COM2ExtendedBrowsingHandler.cs
- TextEditorTyping.cs
- ISCIIEncoding.cs
- QilXmlReader.cs
- PasswordBox.cs
- DrawingImage.cs
- CustomAttributeSerializer.cs
- ConfigViewGenerator.cs
- WebSysDisplayNameAttribute.cs
- DataStorage.cs
- SemanticValue.cs
- TypeConverterMarkupExtension.cs
- DataGridViewRowCancelEventArgs.cs
- MobileUITypeEditor.cs
- BasicAsyncResult.cs
- CmsInterop.cs
- GifBitmapDecoder.cs
- LocalizationParserHooks.cs
- DataMisalignedException.cs
- XmlSchemaAnyAttribute.cs
- DataPagerCommandEventArgs.cs
- ValidationSummary.cs
- CharacterMetrics.cs
- SQLMoney.cs
- ScriptHandlerFactory.cs
- ScrollProviderWrapper.cs
- VirtualPath.cs
- elementinformation.cs
- X509ThumbprintKeyIdentifierClause.cs