Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Compiler / LambdaCompiler.Generated.cs / 1305376 / LambdaCompiler.Generated.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.Diagnostics; using System.Dynamic.Utils; namespace System.Linq.Expressions.Compiler { partial class LambdaCompiler { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] private void EmitExpression(Expression node, CompilationFlags flags) { Debug.Assert(node != null); bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; // only pass tail call flags to emit the expression flags = flags & CompilationFlags.EmitAsTailCallMask; switch (node.NodeType) { #region Generated Expression Compiler // *** BEGIN GENERATED CODE *** // generated by function: gen_compiler from: generate_tree.py case ExpressionType.Add: EmitBinaryExpression(node, flags); break; case ExpressionType.AddChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.And: EmitBinaryExpression(node, flags); break; case ExpressionType.AndAlso: EmitAndAlsoBinaryExpression(node, flags); break; case ExpressionType.ArrayLength: EmitUnaryExpression(node, flags); break; case ExpressionType.ArrayIndex: EmitBinaryExpression(node, flags); break; case ExpressionType.Call: EmitMethodCallExpression(node, flags); break; case ExpressionType.Coalesce: EmitCoalesceBinaryExpression(node); break; case ExpressionType.Conditional: EmitConditionalExpression(node, flags); break; case ExpressionType.Constant: EmitConstantExpression(node); break; case ExpressionType.Convert: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.ConvertChecked: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.Divide: EmitBinaryExpression(node, flags); break; case ExpressionType.Equal: EmitBinaryExpression(node, flags); break; case ExpressionType.ExclusiveOr: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThan: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Invoke: EmitInvocationExpression(node, flags); break; case ExpressionType.Lambda: EmitLambdaExpression(node); break; case ExpressionType.LeftShift: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThan: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.ListInit: EmitListInitExpression(node); break; case ExpressionType.MemberAccess: EmitMemberExpression(node); break; case ExpressionType.MemberInit: EmitMemberInitExpression(node); break; case ExpressionType.Modulo: EmitBinaryExpression(node, flags); break; case ExpressionType.Multiply: EmitBinaryExpression(node, flags); break; case ExpressionType.MultiplyChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.Negate: EmitUnaryExpression(node, flags); break; case ExpressionType.UnaryPlus: EmitUnaryExpression(node, flags); break; case ExpressionType.NegateChecked: EmitUnaryExpression(node, flags); break; case ExpressionType.New: EmitNewExpression(node); break; case ExpressionType.NewArrayInit: EmitNewArrayExpression(node); break; case ExpressionType.NewArrayBounds: EmitNewArrayExpression(node); break; case ExpressionType.Not: EmitUnaryExpression(node, flags); break; case ExpressionType.NotEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Or: EmitBinaryExpression(node, flags); break; case ExpressionType.OrElse: EmitOrElseBinaryExpression(node, flags); break; case ExpressionType.Parameter: EmitParameterExpression(node); break; case ExpressionType.Power: EmitBinaryExpression(node, flags); break; case ExpressionType.Quote: EmitQuoteUnaryExpression(node); break; case ExpressionType.RightShift: EmitBinaryExpression(node, flags); break; case ExpressionType.Subtract: EmitBinaryExpression(node, flags); break; case ExpressionType.SubtractChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.TypeAs: EmitUnaryExpression(node, flags); break; case ExpressionType.TypeIs: EmitTypeBinaryExpression(node); break; case ExpressionType.Assign: EmitAssignBinaryExpression(node); break; case ExpressionType.Block: EmitBlockExpression(node, flags); break; case ExpressionType.DebugInfo: EmitDebugInfoExpression(node); break; case ExpressionType.Decrement: EmitUnaryExpression(node, flags); break; case ExpressionType.Dynamic: EmitDynamicExpression(node); break; case ExpressionType.Default: EmitDefaultExpression(node); break; case ExpressionType.Extension: EmitExtensionExpression(node); break; case ExpressionType.Goto: EmitGotoExpression(node, flags); break; case ExpressionType.Increment: EmitUnaryExpression(node, flags); break; case ExpressionType.Index: EmitIndexExpression(node); break; case ExpressionType.Label: EmitLabelExpression(node, flags); break; case ExpressionType.RuntimeVariables: EmitRuntimeVariablesExpression(node); break; case ExpressionType.Loop: EmitLoopExpression(node); break; case ExpressionType.Switch: EmitSwitchExpression(node, flags); break; case ExpressionType.Throw: EmitThrowUnaryExpression(node); break; case ExpressionType.Try: EmitTryExpression(node); break; case ExpressionType.Unbox: EmitUnboxUnaryExpression(node); break; case ExpressionType.TypeEqual: EmitTypeBinaryExpression(node); break; case ExpressionType.OnesComplement: EmitUnaryExpression(node, flags); break; case ExpressionType.IsTrue: EmitUnaryExpression(node, flags); break; case ExpressionType.IsFalse: EmitUnaryExpression(node, flags); break; // *** END GENERATED CODE *** #endregion default: throw ContractUtils.Unreachable; } if (emitStart) { EmitExpressionEnd(startEmitted); } } private static bool IsChecked(ExpressionType op) { switch (op) { #region Generated Checked Operations // *** BEGIN GENERATED CODE *** // generated by function: gen_checked_ops from: generate_tree.py case ExpressionType.AddChecked: case ExpressionType.ConvertChecked: case ExpressionType.MultiplyChecked: case ExpressionType.NegateChecked: case ExpressionType.SubtractChecked: case ExpressionType.AddAssignChecked: case ExpressionType.MultiplyAssignChecked: case ExpressionType.SubtractAssignChecked: // *** END GENERATED CODE *** #endregion return true; } 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.Diagnostics; using System.Dynamic.Utils; namespace System.Linq.Expressions.Compiler { partial class LambdaCompiler { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode"), System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] private void EmitExpression(Expression node, CompilationFlags flags) { Debug.Assert(node != null); bool emitStart = (flags & CompilationFlags.EmitExpressionStartMask) == CompilationFlags.EmitExpressionStart; CompilationFlags startEmitted = emitStart ? EmitExpressionStart(node) : CompilationFlags.EmitNoExpressionStart; // only pass tail call flags to emit the expression flags = flags & CompilationFlags.EmitAsTailCallMask; switch (node.NodeType) { #region Generated Expression Compiler // *** BEGIN GENERATED CODE *** // generated by function: gen_compiler from: generate_tree.py case ExpressionType.Add: EmitBinaryExpression(node, flags); break; case ExpressionType.AddChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.And: EmitBinaryExpression(node, flags); break; case ExpressionType.AndAlso: EmitAndAlsoBinaryExpression(node, flags); break; case ExpressionType.ArrayLength: EmitUnaryExpression(node, flags); break; case ExpressionType.ArrayIndex: EmitBinaryExpression(node, flags); break; case ExpressionType.Call: EmitMethodCallExpression(node, flags); break; case ExpressionType.Coalesce: EmitCoalesceBinaryExpression(node); break; case ExpressionType.Conditional: EmitConditionalExpression(node, flags); break; case ExpressionType.Constant: EmitConstantExpression(node); break; case ExpressionType.Convert: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.ConvertChecked: EmitConvertUnaryExpression(node, flags); break; case ExpressionType.Divide: EmitBinaryExpression(node, flags); break; case ExpressionType.Equal: EmitBinaryExpression(node, flags); break; case ExpressionType.ExclusiveOr: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThan: EmitBinaryExpression(node, flags); break; case ExpressionType.GreaterThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Invoke: EmitInvocationExpression(node, flags); break; case ExpressionType.Lambda: EmitLambdaExpression(node); break; case ExpressionType.LeftShift: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThan: EmitBinaryExpression(node, flags); break; case ExpressionType.LessThanOrEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.ListInit: EmitListInitExpression(node); break; case ExpressionType.MemberAccess: EmitMemberExpression(node); break; case ExpressionType.MemberInit: EmitMemberInitExpression(node); break; case ExpressionType.Modulo: EmitBinaryExpression(node, flags); break; case ExpressionType.Multiply: EmitBinaryExpression(node, flags); break; case ExpressionType.MultiplyChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.Negate: EmitUnaryExpression(node, flags); break; case ExpressionType.UnaryPlus: EmitUnaryExpression(node, flags); break; case ExpressionType.NegateChecked: EmitUnaryExpression(node, flags); break; case ExpressionType.New: EmitNewExpression(node); break; case ExpressionType.NewArrayInit: EmitNewArrayExpression(node); break; case ExpressionType.NewArrayBounds: EmitNewArrayExpression(node); break; case ExpressionType.Not: EmitUnaryExpression(node, flags); break; case ExpressionType.NotEqual: EmitBinaryExpression(node, flags); break; case ExpressionType.Or: EmitBinaryExpression(node, flags); break; case ExpressionType.OrElse: EmitOrElseBinaryExpression(node, flags); break; case ExpressionType.Parameter: EmitParameterExpression(node); break; case ExpressionType.Power: EmitBinaryExpression(node, flags); break; case ExpressionType.Quote: EmitQuoteUnaryExpression(node); break; case ExpressionType.RightShift: EmitBinaryExpression(node, flags); break; case ExpressionType.Subtract: EmitBinaryExpression(node, flags); break; case ExpressionType.SubtractChecked: EmitBinaryExpression(node, flags); break; case ExpressionType.TypeAs: EmitUnaryExpression(node, flags); break; case ExpressionType.TypeIs: EmitTypeBinaryExpression(node); break; case ExpressionType.Assign: EmitAssignBinaryExpression(node); break; case ExpressionType.Block: EmitBlockExpression(node, flags); break; case ExpressionType.DebugInfo: EmitDebugInfoExpression(node); break; case ExpressionType.Decrement: EmitUnaryExpression(node, flags); break; case ExpressionType.Dynamic: EmitDynamicExpression(node); break; case ExpressionType.Default: EmitDefaultExpression(node); break; case ExpressionType.Extension: EmitExtensionExpression(node); break; case ExpressionType.Goto: EmitGotoExpression(node, flags); break; case ExpressionType.Increment: EmitUnaryExpression(node, flags); break; case ExpressionType.Index: EmitIndexExpression(node); break; case ExpressionType.Label: EmitLabelExpression(node, flags); break; case ExpressionType.RuntimeVariables: EmitRuntimeVariablesExpression(node); break; case ExpressionType.Loop: EmitLoopExpression(node); break; case ExpressionType.Switch: EmitSwitchExpression(node, flags); break; case ExpressionType.Throw: EmitThrowUnaryExpression(node); break; case ExpressionType.Try: EmitTryExpression(node); break; case ExpressionType.Unbox: EmitUnboxUnaryExpression(node); break; case ExpressionType.TypeEqual: EmitTypeBinaryExpression(node); break; case ExpressionType.OnesComplement: EmitUnaryExpression(node, flags); break; case ExpressionType.IsTrue: EmitUnaryExpression(node, flags); break; case ExpressionType.IsFalse: EmitUnaryExpression(node, flags); break; // *** END GENERATED CODE *** #endregion default: throw ContractUtils.Unreachable; } if (emitStart) { EmitExpressionEnd(startEmitted); } } private static bool IsChecked(ExpressionType op) { switch (op) { #region Generated Checked Operations // *** BEGIN GENERATED CODE *** // generated by function: gen_checked_ops from: generate_tree.py case ExpressionType.AddChecked: case ExpressionType.ConvertChecked: case ExpressionType.MultiplyChecked: case ExpressionType.NegateChecked: case ExpressionType.SubtractChecked: case ExpressionType.AddAssignChecked: case ExpressionType.MultiplyAssignChecked: case ExpressionType.SubtractAssignChecked: // *** END GENERATED CODE *** #endregion return true; } return false; } } } // 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
- DataTableMapping.cs
- DesignerSerializationOptionsAttribute.cs
- UpdateProgress.cs
- TraceUtility.cs
- ContentType.cs
- PhysicalFontFamily.cs
- PackWebRequestFactory.cs
- XPathNavigator.cs
- ConnectionOrientedTransportManager.cs
- ValidationHelpers.cs
- DefaultPropertyAttribute.cs
- SystemUdpStatistics.cs
- XmlAttributeCollection.cs
- FixedSOMPageElement.cs
- ToolboxControl.cs
- ListBindingHelper.cs
- RemoteWebConfigurationHost.cs
- XmlSortKey.cs
- precedingquery.cs
- SymmetricSecurityBindingElement.cs
- NotificationContext.cs
- VersionedStream.cs
- ProcessRequestArgs.cs
- RemotingSurrogateSelector.cs
- FormsAuthenticationUser.cs
- Int32Animation.cs
- HtmlButton.cs
- DoubleLinkList.cs
- DecoderFallback.cs
- bindurihelper.cs
- AnonymousIdentificationModule.cs
- CheckBoxField.cs
- ToolStripHighContrastRenderer.cs
- Color.cs
- TextTreeText.cs
- DeploymentSection.cs
- TreeViewImageKeyConverter.cs
- DoubleLink.cs
- ToolBar.cs
- ImageButton.cs
- DetailsViewPageEventArgs.cs
- DoubleCollectionConverter.cs
- ButtonFieldBase.cs
- Baml2006KnownTypes.cs
- ValidatingReaderNodeData.cs
- safex509handles.cs
- HtmlTable.cs
- ManagedFilter.cs
- ReflectTypeDescriptionProvider.cs
- XmlSchemaProviderAttribute.cs
- RMEnrollmentPage1.cs
- oledbmetadatacollectionnames.cs
- BaseCAMarshaler.cs
- Baml2006KeyRecord.cs
- assemblycache.cs
- MissingSatelliteAssemblyException.cs
- ClassicBorderDecorator.cs
- MarkupCompiler.cs
- EventLogTraceListener.cs
- ContentType.cs
- XmlProcessingInstruction.cs
- CfgArc.cs
- CompilerError.cs
- WebPartCollection.cs
- RandomNumberGenerator.cs
- DataSourceControlBuilder.cs
- Avt.cs
- SchemaMapping.cs
- AmbiguousMatchException.cs
- SortedDictionary.cs
- COM2Properties.cs
- HwndTarget.cs
- SplitContainer.cs
- PageWrapper.cs
- MetadataConversionError.cs
- PersonalizablePropertyEntry.cs
- GestureRecognizer.cs
- XPathConvert.cs
- Int32Storage.cs
- TextBlockAutomationPeer.cs
- LongTypeConverter.cs
- ListViewItemSelectionChangedEvent.cs
- CapiSymmetricAlgorithm.cs
- DataServiceHost.cs
- ArraySegment.cs
- DbException.cs
- LoadedOrUnloadedOperation.cs
- ListControlConvertEventArgs.cs
- sortedlist.cs
- ForwardPositionQuery.cs
- StackOverflowException.cs
- SpotLight.cs
- WhereaboutsReader.cs
- ServiceCredentialsSecurityTokenManager.cs
- XPathExpr.cs
- FrameworkElementAutomationPeer.cs
- NotifyCollectionChangedEventArgs.cs
- PropertyOverridesTypeEditor.cs
- ConfigurationManagerHelperFactory.cs
- WebPartTransformerAttribute.cs