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
- _HelperAsyncResults.cs
- FormsAuthenticationUserCollection.cs
- SafeFileMappingHandle.cs
- SchemaImporterExtension.cs
- SqlDataSourceView.cs
- SqlCacheDependencyDatabase.cs
- ClassHandlersStore.cs
- RubberbandSelector.cs
- DiscreteKeyFrames.cs
- TextContainerChangeEventArgs.cs
- StateWorkerRequest.cs
- HtmlTableCell.cs
- HttpCookieCollection.cs
- IdentifierCollection.cs
- ReliableInputConnection.cs
- TextRunCache.cs
- QueryPageSettingsEventArgs.cs
- GPPOINTF.cs
- ClientCultureInfo.cs
- GCHandleCookieTable.cs
- Image.cs
- EntityDataSourceChangedEventArgs.cs
- HyperLink.cs
- EventLogEntry.cs
- ResourceCategoryAttribute.cs
- PerformanceCounterPermissionEntry.cs
- UTF32Encoding.cs
- SortDescriptionCollection.cs
- LocationReferenceEnvironment.cs
- ControlBuilder.cs
- ProjectionRewriter.cs
- TemplatedMailWebEventProvider.cs
- ProfileSettings.cs
- Transform3DCollection.cs
- ParserOptions.cs
- LazyTextWriterCreator.cs
- FilteredReadOnlyMetadataCollection.cs
- WebPartDeleteVerb.cs
- DoubleCollection.cs
- InvalidCastException.cs
- LocalizedNameDescriptionPair.cs
- AutomationIdentifier.cs
- ModelItemCollectionImpl.cs
- AtomServiceDocumentSerializer.cs
- EditorPartCollection.cs
- ReliabilityContractAttribute.cs
- SQLDateTime.cs
- Quad.cs
- HostedNamedPipeTransportManager.cs
- PrintSystemException.cs
- PropVariant.cs
- DependencyObjectType.cs
- ProtocolsConfigurationHandler.cs
- ScrollBar.cs
- __Filters.cs
- FormatPage.cs
- BoundPropertyEntry.cs
- ReadOnlyNameValueCollection.cs
- ReadOnlyCollectionBase.cs
- HttpContextWrapper.cs
- SocketInformation.cs
- ConfigurationValidatorAttribute.cs
- SmtpReplyReaderFactory.cs
- URLIdentityPermission.cs
- basemetadatamappingvisitor.cs
- GridItemPatternIdentifiers.cs
- ToolStripDropDownDesigner.cs
- ObjectStateFormatter.cs
- PlaceHolder.cs
- ParserStack.cs
- UserControlFileEditor.cs
- LinkedList.cs
- SettingsPropertyValueCollection.cs
- DataException.cs
- TextCollapsingProperties.cs
- ValueOfAction.cs
- XmlSchemaInclude.cs
- VerticalAlignConverter.cs
- State.cs
- Util.cs
- SqlReferenceCollection.cs
- ActivityBindForm.cs
- DataList.cs
- PropertyCollection.cs
- CreatingCookieEventArgs.cs
- HtmlTableCellCollection.cs
- HitTestWithGeometryDrawingContextWalker.cs
- QilFactory.cs
- CheckBoxStandardAdapter.cs
- ProcessModuleCollection.cs
- ClientSession.cs
- AssemblyFilter.cs
- UInt16.cs
- RouteParser.cs
- Errors.cs
- DataSourceControlBuilder.cs
- DataBindingCollection.cs
- Panel.cs
- SelectedDatesCollection.cs
- PriorityQueue.cs