52 internal int ParameterCount
54 get {
return mw.GetParameters().Length + (mw.HasCallerID ? 1 : 0); }
57 internal MethodBuilder DefineMethod(
RuntimeByteCodeJavaType context, TypeBuilder tb,
string name, MethodAttributes attribs)
59 return DefineMethod(context.ClassLoader.GetTypeWrapperFactory(), tb, name, attribs,
null,
false);
62 internal MethodBuilder DefineMethod(
RuntimeJavaTypeFactory context, TypeBuilder tb,
string name, MethodAttributes attribs)
64 return DefineMethod(context, tb, name, attribs,
null,
false);
67 internal MethodBuilder DefineMethod(
RuntimeJavaTypeFactory context, TypeBuilder tb,
string name, MethodAttributes attribs,
Type firstParameter,
bool mustBePublic)
70 int firstParam = firstParameter ==
null ? 0 : 1;
71 RuntimeJavaType[] parameters = mw.GetParameters();
72 Type[] parameterTypes =
new Type[parameters.Length + (mw.HasCallerID ? 1 : 0) + firstParam];
73 Type[][] modopt =
new Type[parameterTypes.Length][];
74 if (firstParameter !=
null)
76 parameterTypes[0] = firstParameter;
77 modopt[0] =
Type.EmptyTypes;
79 for (
int i = 0; i < parameters.Length; i++)
81 parameterTypes[i + firstParam] = mustBePublic
82 ? parameters[i].TypeAsPublicSignatureType
83 : parameters[i].TypeAsSignatureType;
88 parameterTypes[parameterTypes.Length - 1] = mw.DeclaringType.Context.JavaBase.TypeOfIkvmInternalCallerID.TypeAsSignatureType;
90 Type returnType = mustBePublic
91 ? mw.ReturnType.TypeAsPublicSignatureType
92 : mw.ReturnType.TypeAsSignatureType;
94 return tb.DefineMethod(name, attribs, CallingConventions.Standard, returnType,
null, modoptReturnType, parameterTypes,
null, modopt);
97 internal MethodBuilder DefineConstructor(
RuntimeByteCodeJavaType context, TypeBuilder tb, MethodAttributes attribs)
99 return DefineConstructor(context.ClassLoader.GetTypeWrapperFactory(), tb, attribs);
102 internal MethodBuilder DefineConstructor(
RuntimeJavaTypeFactory context, TypeBuilder tb, MethodAttributes attribs)
104 return DefineMethod(context, tb,
ConstructorInfo.ConstructorName, attribs | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName);
IKVM.Runtime.RuntimeByteCodeJavaType DynamicOrAotTypeWrapper