Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Actions / BinaryOperationBinder.cs / 1305376 / BinaryOperationBinder.cs
/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Dynamic.Utils; using System.Linq.Expressions; namespace System.Dynamic { ////// Represents the binary dynamic operation at the call site, providing the binding semantic and the details about the operation. /// public abstract class BinaryOperationBinder : DynamicMetaObjectBinder { private ExpressionType _operation; ////// Initializes a new instance of the /// The binary operation kind. protected BinaryOperationBinder(ExpressionType operation) { ContractUtils.Requires(OperationIsValid(operation), "operation"); _operation = operation; } ///class. /// /// The result type of the operation. /// public override sealed Type ReturnType { get { return typeof(object); } } ////// The binary operation kind. /// public ExpressionType Operation { get { return _operation; } } ////// Performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. ///The public DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg) { return FallbackBinaryOperation(target, arg, null); } ///representing the result of the binding. /// When overridden in the derived class, performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. /// The binding result in case the binding fails, or null. ///The public abstract DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg, DynamicMetaObject errorSuggestion); ///representing the result of the binding. /// Performs the binding of the dynamic binary operation. /// /// The target of the dynamic operation. /// An array of arguments of the dynamic operation. ///The public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, "target"); ContractUtils.RequiresNotNull(args, "args"); ContractUtils.Requires(args.Length == 1, "args"); var arg0 = args[0]; ContractUtils.RequiresNotNull(arg0, "args"); return target.BindBinaryOperation(this, arg0); } // this is a standard DynamicMetaObjectBinder internal override sealed bool IsStandardBinder { get { return true; } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] internal static bool OperationIsValid(ExpressionType operation) { switch (operation) { #region Generated Binary Operation Binder Validator // *** BEGIN GENERATED CODE *** // generated by function: gen_binop_validator from: generate_tree.py case ExpressionType.Add: case ExpressionType.And: case ExpressionType.Divide: case ExpressionType.Equal: case ExpressionType.ExclusiveOr: case ExpressionType.GreaterThan: case ExpressionType.GreaterThanOrEqual: case ExpressionType.LeftShift: case ExpressionType.LessThan: case ExpressionType.LessThanOrEqual: case ExpressionType.Modulo: case ExpressionType.Multiply: case ExpressionType.NotEqual: case ExpressionType.Or: case ExpressionType.Power: case ExpressionType.RightShift: case ExpressionType.Subtract: case ExpressionType.AddAssign: case ExpressionType.AndAssign: case ExpressionType.DivideAssign: case ExpressionType.ExclusiveOrAssign: case ExpressionType.LeftShiftAssign: case ExpressionType.ModuloAssign: case ExpressionType.MultiplyAssign: case ExpressionType.OrAssign: case ExpressionType.PowerAssign: case ExpressionType.RightShiftAssign: case ExpressionType.SubtractAssign: // *** END GENERATED CODE *** #endregion case ExpressionType.Extension: return true; default: return false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Dynamic.Utils; using System.Linq.Expressions; namespace System.Dynamic { ///representing the result of the binding. /// Represents the binary dynamic operation at the call site, providing the binding semantic and the details about the operation. /// public abstract class BinaryOperationBinder : DynamicMetaObjectBinder { private ExpressionType _operation; ////// Initializes a new instance of the /// The binary operation kind. protected BinaryOperationBinder(ExpressionType operation) { ContractUtils.Requires(OperationIsValid(operation), "operation"); _operation = operation; } ///class. /// /// The result type of the operation. /// public override sealed Type ReturnType { get { return typeof(object); } } ////// The binary operation kind. /// public ExpressionType Operation { get { return _operation; } } ////// Performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. ///The public DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg) { return FallbackBinaryOperation(target, arg, null); } ///representing the result of the binding. /// When overridden in the derived class, performs the binding of the binary dynamic operation if the target dynamic object cannot bind. /// /// The target of the dynamic binary operation. /// The right hand side operand of the dynamic binary operation. /// The binding result in case the binding fails, or null. ///The public abstract DynamicMetaObject FallbackBinaryOperation(DynamicMetaObject target, DynamicMetaObject arg, DynamicMetaObject errorSuggestion); ///representing the result of the binding. /// Performs the binding of the dynamic binary operation. /// /// The target of the dynamic operation. /// An array of arguments of the dynamic operation. ///The public sealed override DynamicMetaObject Bind(DynamicMetaObject target, DynamicMetaObject[] args) { ContractUtils.RequiresNotNull(target, "target"); ContractUtils.RequiresNotNull(args, "args"); ContractUtils.Requires(args.Length == 1, "args"); var arg0 = args[0]; ContractUtils.RequiresNotNull(arg0, "args"); return target.BindBinaryOperation(this, arg0); } // this is a standard DynamicMetaObjectBinder internal override sealed bool IsStandardBinder { get { return true; } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] internal static bool OperationIsValid(ExpressionType operation) { switch (operation) { #region Generated Binary Operation Binder Validator // *** BEGIN GENERATED CODE *** // generated by function: gen_binop_validator from: generate_tree.py case ExpressionType.Add: case ExpressionType.And: case ExpressionType.Divide: case ExpressionType.Equal: case ExpressionType.ExclusiveOr: case ExpressionType.GreaterThan: case ExpressionType.GreaterThanOrEqual: case ExpressionType.LeftShift: case ExpressionType.LessThan: case ExpressionType.LessThanOrEqual: case ExpressionType.Modulo: case ExpressionType.Multiply: case ExpressionType.NotEqual: case ExpressionType.Or: case ExpressionType.Power: case ExpressionType.RightShift: case ExpressionType.Subtract: case ExpressionType.AddAssign: case ExpressionType.AndAssign: case ExpressionType.DivideAssign: case ExpressionType.ExclusiveOrAssign: case ExpressionType.LeftShiftAssign: case ExpressionType.ModuloAssign: case ExpressionType.MultiplyAssign: case ExpressionType.OrAssign: case ExpressionType.PowerAssign: case ExpressionType.RightShiftAssign: case ExpressionType.SubtractAssign: // *** END GENERATED CODE *** #endregion case ExpressionType.Extension: return true; default: return false; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.representing the result of the binding.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FileDetails.cs
- AppSecurityManager.cs
- DataGridViewDataConnection.cs
- RenderData.cs
- CompilerErrorCollection.cs
- ReflectPropertyDescriptor.cs
- PreviewKeyDownEventArgs.cs
- ToolBarButtonClickEvent.cs
- GeometryDrawing.cs
- PoisonMessageException.cs
- HighContrastHelper.cs
- SqlBooleanMismatchVisitor.cs
- GeometryModel3D.cs
- TableItemPattern.cs
- TeredoHelper.cs
- QuadTree.cs
- QuadraticBezierSegment.cs
- WebZone.cs
- path.cs
- CodeDelegateCreateExpression.cs
- ImageCodecInfo.cs
- LabelEditEvent.cs
- XmlDataCollection.cs
- UnsafeNativeMethods.cs
- PersistenceTypeAttribute.cs
- RSACryptoServiceProvider.cs
- ExtensionSurface.cs
- SafeIUnknown.cs
- ResXResourceReader.cs
- TextElementEnumerator.cs
- HttpWebRequest.cs
- StateMachineHelpers.cs
- MachineSettingsSection.cs
- VerificationException.cs
- Util.cs
- ChannelCredentials.cs
- StatusCommandUI.cs
- XdrBuilder.cs
- ScriptResourceDefinition.cs
- TreePrinter.cs
- Profiler.cs
- XamlToRtfWriter.cs
- PrimitiveType.cs
- ChangePassword.cs
- ComNativeDescriptor.cs
- URLIdentityPermission.cs
- Rotation3DAnimationUsingKeyFrames.cs
- PageParserFilter.cs
- ToolStripGrip.cs
- ToolStripSettings.cs
- __ConsoleStream.cs
- DataGridViewControlCollection.cs
- RemotingException.cs
- TcpChannelFactory.cs
- SudsParser.cs
- PassportAuthentication.cs
- ServiceDescriptionReflector.cs
- PostBackTrigger.cs
- SpecialFolderEnumConverter.cs
- Ray3DHitTestResult.cs
- ApplyImportsAction.cs
- DllNotFoundException.cs
- FreezableDefaultValueFactory.cs
- ProjectionPathBuilder.cs
- TailCallAnalyzer.cs
- DefaultBindingPropertyAttribute.cs
- ReaderOutput.cs
- TemplateBaseAction.cs
- Membership.cs
- RelationshipFixer.cs
- TcpServerChannel.cs
- JsonWriterDelegator.cs
- PreviewPrintController.cs
- ReadonlyMessageFilter.cs
- CommonDialog.cs
- ApplicationServicesHostFactory.cs
- DiagnosticTraceSource.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- BitmapMetadata.cs
- EntityDataSourceUtil.cs
- FixedSOMElement.cs
- RegionIterator.cs
- XPathBuilder.cs
- DependencyPropertyChangedEventArgs.cs
- WsdlBuildProvider.cs
- RemoteWebConfigurationHost.cs
- VisualTarget.cs
- SqlMethods.cs
- AbstractExpressions.cs
- HasRunnableWorkflowEvent.cs
- _DomainName.cs
- PartialArray.cs
- AppearanceEditorPart.cs
- SmtpNetworkElement.cs
- UnsignedPublishLicense.cs
- LocalizableAttribute.cs
- GetParentChain.cs
- DetailsViewRow.cs
- ImageCollectionEditor.cs
- SimpleTextLine.cs