C# Class IronRuby.Runtime.Calls.RubyMethodGroupBase

Performs method binding for calling CLR methods. Currently this is used for all builtin libary methods and interop calls to CLR methods
Inheritance: IronRuby.Runtime.Calls.RubyMemberInfo
Show file Open project: ExpertsInside/IronSP

Private Properties

Property Type Description
BuildCallNoFlow void
BuildSuperCallNoFlow void
GetAssociatedSystemType System.Type
GetMethodOverload Microsoft.Scripting.Actions.Calls.OverloadInfo
GetVisibleOverloads IList
HasBlockParameter bool
IsOverloadSignature bool
ResolveOverload Microsoft.Scripting.Actions.Calls.BindingTarget
SetMethodBasesNoLock Microsoft.Scripting.Actions.Calls.OverloadInfo[]

Public Methods

Method Description
GetArity ( ) : int
GetMembers ( ) : System.Reflection.MemberInfo[]
RuleControlFlowBuilder ( MetaObjectBuilder metaBuilder, CallArguments args ) : void

Takes current result and wraps it into try-filter(MethodUnwinder)-finally block that ensures correct "break" behavior for library method calls with block given in bfcVariable (BlockParam).

TryBindGenericParameters ( Type typeArguments ) : IronRuby.Runtime.Calls.RubyMemberInfo
TrySelectOverload ( Type parameterTypes ) : IronRuby.Runtime.Calls.RubyMemberInfo

Filters out methods that don't exactly match parameter types except for hidden parameters (RubyContext, RubyScope, site local storage).

Protected Methods

Method Description
Copy ( OverloadInfo methods ) : IronRuby.Runtime.Calls.RubyMemberInfo
RubyMethodGroupBase ( OverloadInfo methods, RubyMemberFlags flags, RubyModule declaringModule ) : System.Linq.Expressions

Private Methods

Method Description
BuildCallNoFlow ( MetaObjectBuilder metaBuilder, CallArguments args, string name, IList overloads, SelfCallConvention callConvention, bool implicitProtocolConversions ) : void

Resolves an library method overload and builds call expression. The resulting expression on meta-builder doesn't handle block control flow yet.

BuildSuperCallNoFlow ( MetaObjectBuilder metaBuilder, CallArguments args, string name, RubyModule declaringModule ) : void
GetAssociatedSystemType ( RubyModule module ) : Type
GetMethodOverload ( Type parameterTypes, IList genericParameterTypes, Type type, string name, BindingFlags bindingFlags ) : OverloadInfo
GetVisibleOverloads ( CallArguments args, IList overloads, bool isSuperCall ) : IList
HasBlockParameter ( OverloadInfo method ) : bool
IsOverloadSignature ( OverloadInfo method, Type parameterTypes ) : bool
ResolveOverload ( MetaObjectBuilder metaBuilder, CallArguments args, string name, IList overloads, SelfCallConvention callConvention, bool implicitProtocolConversions, RubyOverloadResolver &resolver ) : BindingTarget
SetMethodBasesNoLock ( OverloadInfo methods ) : Microsoft.Scripting.Actions.Calls.OverloadInfo[]

Method Details

Copy() protected abstract method

protected abstract Copy ( OverloadInfo methods ) : IronRuby.Runtime.Calls.RubyMemberInfo
methods Microsoft.Scripting.Actions.Calls.OverloadInfo
return IronRuby.Runtime.Calls.RubyMemberInfo

GetArity() public method

public GetArity ( ) : int
return int

GetMembers() public method

public GetMembers ( ) : System.Reflection.MemberInfo[]
return System.Reflection.MemberInfo[]

RubyMethodGroupBase() protected method

protected RubyMethodGroupBase ( OverloadInfo methods, RubyMemberFlags flags, RubyModule declaringModule ) : System.Linq.Expressions
methods Microsoft.Scripting.Actions.Calls.OverloadInfo
flags RubyMemberFlags
declaringModule IronRuby.Builtins.RubyModule
return System.Linq.Expressions

RuleControlFlowBuilder() public static method

Takes current result and wraps it into try-filter(MethodUnwinder)-finally block that ensures correct "break" behavior for library method calls with block given in bfcVariable (BlockParam).
public static RuleControlFlowBuilder ( MetaObjectBuilder metaBuilder, CallArguments args ) : void
metaBuilder MetaObjectBuilder
args CallArguments
return void

TryBindGenericParameters() public method

public TryBindGenericParameters ( Type typeArguments ) : IronRuby.Runtime.Calls.RubyMemberInfo
typeArguments System.Type
return IronRuby.Runtime.Calls.RubyMemberInfo

TrySelectOverload() public method

Filters out methods that don't exactly match parameter types except for hidden parameters (RubyContext, RubyScope, site local storage).
public TrySelectOverload ( Type parameterTypes ) : IronRuby.Runtime.Calls.RubyMemberInfo
parameterTypes System.Type
return IronRuby.Runtime.Calls.RubyMemberInfo