Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / Xml / System / Xml / XPath / Internal / BooleanExpr.cs / 1 / BooleanExpr.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace MS.Internal.Xml.XPath {
using System;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.Diagnostics;
using System.Globalization;
internal sealed class BooleanExpr : ValueQuery {
private Query opnd1;
private Query opnd2;
private bool isOr;
public BooleanExpr(Operator.Op op, Query opnd1, Query opnd2) {
Debug.Assert(op == Operator.Op.AND || op == Operator.Op.OR);
Debug.Assert(opnd1 != null && opnd2 != null);
if (opnd1.StaticType != XPathResultType.Boolean) {
opnd1 = new BooleanFunctions(Function.FunctionType.FuncBoolean, opnd1);
}
if (opnd2.StaticType != XPathResultType.Boolean) {
opnd2 = new BooleanFunctions(Function.FunctionType.FuncBoolean, opnd2);
}
this.opnd1 = opnd1;
this.opnd2 = opnd2;
isOr = (op == Operator.Op.OR);
}
private BooleanExpr(BooleanExpr other) : base(other) {
this.opnd1 = Clone(other.opnd1);
this.opnd2 = Clone(other.opnd2);
this.isOr = other.isOr;
}
public override void SetXsltContext(XsltContext context){
opnd1.SetXsltContext(context);
opnd2.SetXsltContext(context);
}
public override object Evaluate(XPathNodeIterator nodeIterator) {
object n1 = opnd1.Evaluate(nodeIterator);
if (((bool) n1) == isOr) {
return n1;
}
return opnd2.Evaluate(nodeIterator);
}
public override XPathNodeIterator Clone() { return new BooleanExpr(this); }
public override XPathResultType StaticType { get { return XPathResultType.Boolean; } }
public override void PrintQuery(XmlWriter w) {
w.WriteStartElement(this.GetType().Name);
w.WriteAttributeString("op", (isOr ? Operator.Op.OR : Operator.Op.AND).ToString());
opnd1.PrintQuery(w);
opnd2.PrintQuery(w);
w.WriteEndElement();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IPHostEntry.cs
- ComplusTypeValidator.cs
- WebPartExportVerb.cs
- HtmlElement.cs
- DataGridViewLinkCell.cs
- Compress.cs
- PolicyLevel.cs
- LayoutManager.cs
- DetailsViewInsertEventArgs.cs
- SecurityContextTokenValidationException.cs
- BooleanSwitch.cs
- PropertyEmitterBase.cs
- BookmarkInfo.cs
- SafeProcessHandle.cs
- Margins.cs
- WebBrowserSiteBase.cs
- SslStream.cs
- LicenseProviderAttribute.cs
- IssuedTokenParametersEndpointAddressElement.cs
- ResourceDescriptionAttribute.cs
- DoubleAnimationBase.cs
- MetabaseSettingsIis7.cs
- PlacementWorkspace.cs
- ConnectionAcceptor.cs
- StandardRuntimeEnumValidatorAttribute.cs
- RegistryKey.cs
- TransformationRules.cs
- JsonUriDataContract.cs
- WebRequestModulesSection.cs
- ViewKeyConstraint.cs
- WebAdminConfigurationHelper.cs
- AnnotationResourceCollection.cs
- SortQuery.cs
- BamlLocalizableResource.cs
- Padding.cs
- SafeEventLogWriteHandle.cs
- WebBrowserSiteBase.cs
- AnyAllSearchOperator.cs
- SpnegoTokenAuthenticator.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- CodeDirectiveCollection.cs
- EmptyStringExpandableObjectConverter.cs
- WebPartZoneBase.cs
- ToolStripRenderEventArgs.cs
- AsymmetricAlgorithm.cs
- Group.cs
- SymbolMethod.cs
- InputScopeConverter.cs
- WindowsRegion.cs
- UnsafeNativeMethods.cs
- ASCIIEncoding.cs
- TextEditorCopyPaste.cs
- DirectoryNotFoundException.cs
- EmptyEnumerator.cs
- UniqueConstraint.cs
- ResourceSet.cs
- DecimalConstantAttribute.cs
- ProfilePropertySettingsCollection.cs
- Switch.cs
- CompilerGlobalScopeAttribute.cs
- MiniConstructorInfo.cs
- ButtonBaseAdapter.cs
- SmtpException.cs
- WebPartZone.cs
- RawStylusActions.cs
- TransformCryptoHandle.cs
- RangeBase.cs
- Error.cs
- HtmlHead.cs
- InstanceStoreQueryResult.cs
- FixedNode.cs
- CodeDOMProvider.cs
- WsatServiceAddress.cs
- FamilyCollection.cs
- Binding.cs
- RadioButtonList.cs
- BooleanConverter.cs
- MsmqActivation.cs
- PropertyItem.cs
- DigestTraceRecordHelper.cs
- DynamicField.cs
- MessageBox.cs
- MenuItem.cs
- OleAutBinder.cs
- BamlTreeNode.cs
- CustomCategoryAttribute.cs
- HScrollProperties.cs
- TrustManager.cs
- Win32KeyboardDevice.cs
- HtmlButton.cs
- ByteRangeDownloader.cs
- XmlQualifiedNameTest.cs
- WindowsFormsHelpers.cs
- TraversalRequest.cs
- _Win32.cs
- MediaCommands.cs
- AnnotationHighlightLayer.cs
- FreezableCollection.cs
- DataError.cs
- RayHitTestParameters.cs