Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FormatSettings.cs
- MsmqInputSessionChannel.cs
- DataReaderContainer.cs
- HttpModuleAction.cs
- SqlBulkCopyColumnMappingCollection.cs
- InstanceOwnerException.cs
- BuildManagerHost.cs
- AccessDataSource.cs
- SqlCacheDependencyDatabaseCollection.cs
- DetailsViewPageEventArgs.cs
- ColumnTypeConverter.cs
- HashRepartitionStream.cs
- SerialErrors.cs
- StartUpEventArgs.cs
- Select.cs
- TdsParserSessionPool.cs
- CornerRadiusConverter.cs
- TextOnlyOutput.cs
- MimeReturn.cs
- TabPageDesigner.cs
- TableCellCollection.cs
- ProcessHostMapPath.cs
- WsatProxy.cs
- PerformanceCounterLib.cs
- MachinePropertyVariants.cs
- IDReferencePropertyAttribute.cs
- DateTimeFormatInfoScanner.cs
- _BaseOverlappedAsyncResult.cs
- WizardPanel.cs
- CorrelationTokenInvalidatedHandler.cs
- SqlServer2KCompatibilityAnnotation.cs
- RuntimeConfig.cs
- PersonalizationProviderCollection.cs
- DataProtection.cs
- PersonalizationStateQuery.cs
- MaskedTextBox.cs
- Action.cs
- ListBindingHelper.cs
- MetadataItem.cs
- LayoutDump.cs
- XmlChildNodes.cs
- GZipDecoder.cs
- OutputChannel.cs
- ControlCachePolicy.cs
- Timer.cs
- DataGridItem.cs
- fixedPageContentExtractor.cs
- _OSSOCK.cs
- PrintingPermissionAttribute.cs
- Privilege.cs
- QuaternionAnimation.cs
- AssemblySettingAttributes.cs
- BooleanToVisibilityConverter.cs
- ShaperBuffers.cs
- DataListGeneralPage.cs
- UserNameServiceElement.cs
- CopyAttributesAction.cs
- DataSourceXmlTextReader.cs
- SoapObjectWriter.cs
- SettingsProperty.cs
- UnknownBitmapDecoder.cs
- SmiConnection.cs
- IdleTimeoutMonitor.cs
- ClientApiGenerator.cs
- Model3D.cs
- CodeTypeMemberCollection.cs
- RuntimeEnvironment.cs
- XmlSchemaObject.cs
- GlobalProxySelection.cs
- pingexception.cs
- HyperLinkField.cs
- ComponentChangedEvent.cs
- ImportContext.cs
- StaticSiteMapProvider.cs
- HttpServerVarsCollection.cs
- ControlPropertyNameConverter.cs
- XmlSchemaGroupRef.cs
- TypedDataSetSchemaImporterExtension.cs
- PaginationProgressEventArgs.cs
- Point4DValueSerializer.cs
- QueueProcessor.cs
- JapaneseCalendar.cs
- PackageProperties.cs
- DataGridViewColumnHeaderCell.cs
- ExpressionHelper.cs
- LongValidator.cs
- SqlInfoMessageEvent.cs
- ConstraintStruct.cs
- DataRowComparer.cs
- CommandField.cs
- IisTraceWebEventProvider.cs
- Message.cs
- ExternalCalls.cs
- AssemblyFilter.cs
- FixedDSBuilder.cs
- Exceptions.cs
- mda.cs
- DocumentStatusResources.cs
- XmlCharCheckingReader.cs
- ErrorWrapper.cs