Exemple #1
0
        public PEAPI.Method ResolveMethod(string signature)
        {
            MethodDef methoddef = (MethodDef)global_method_table[signature];

            if (methoddef == null)
            {
                Report.Error("Unable to resolve global method : " + signature);
            }

            return(methoddef.Resolve(this));
        }
Exemple #2
0
        public PEAPI.Method ResolveMethod(BaseTypeRef ret_type, PEAPI.CallConv call_conv,
                                          string name, BaseTypeRef [] param, int gen_param_count, CodeGen code_gen)
        {
            string    signature = MethodDef.CreateSignature(ret_type, call_conv, name, param, gen_param_count, false);
            MethodDef methoddef = (MethodDef)method_table[signature];

            if (methoddef != null)
            {
                return(methoddef.Resolve(code_gen, classdef));
            }
            return(ResolveAsMethodRef(ret_type, call_conv, name, param, gen_param_count, code_gen));
        }
Exemple #3
0
        public PEAPI.Method ResolveVarargMethod(string sig_only_required_params, string sig_with_optional_params,
                                                CodeGen code_gen, PEAPI.Type[] opt)
        {
            MethodDef methoddef = (MethodDef)global_method_table [sig_only_required_params];

            if (methoddef == null)
            {
                Report.Error("Unable to resolve global method : " + sig_only_required_params);
            }

            methoddef.Resolve(code_gen);
            return(methoddef.GetVarargSig(opt, sig_with_optional_params));
        }
Exemple #4
0
        public PEAPI.Method ResolveVarargMethod(BaseTypeRef ret_type, PEAPI.CallConv call_conv,
                                                string name, BaseTypeRef [] param, int gen_param_count, PEAPI.Type [] opt, CodeGen code_gen)
        {
            // Only MethodDef sig required to lookup in the method_table
            string    signature = MethodDef.CreateSignature(ret_type, call_conv, name, param, 0, false);
            MethodDef methoddef = (MethodDef)method_table[signature];

            if (methoddef != null)
            {
                methoddef.Resolve(code_gen, classdef);
                return(methoddef.GetVarargSig(
                           opt,
                           MethodDef.CreateSignature(ret_type, call_conv, name, param, 0, true)));
            }

            return(ResolveAsMethodRef(ret_type, call_conv, name, param, gen_param_count, code_gen));
        }